MacOsApplicationBundleBuilder
¶
- class starlark_tugger.MacOsApplicationBundleBuilder¶
The
MacOsApplicationBundleBuilder
type allows creating macOS Application Bundles (typically.app
directories) providing applications on macOS.For reference, see Apple’s bundle format documentation for the structure of application bundles.
- __init__(bundle_name: str) MacOsApplicationBundleBuilder ¶
Construct new instances. It accepts the following arguments:
bundle_name
The name of the application bundle.
This will become the value for
CFBundleName
and form the name of the generated bundle directory.
- add_icon(path: str)¶
Accepts a
string
argument defining the path to a file that will become the<bundle_name>.icns
file for the bundle.
- add_manifest(manifest: FileManifest)¶
Adds file data to the bundle via a
FileManifest
instance. All files in the manifest will be materialized in theContents/
directory of the bundle.Accepts the following arguments:
manifest
Collection of files to materialize.
Bundles have a well-defined structure and files should only be materialized in certain locations. This method will allow you to materialize files in locations resulting in a malformed bundle. Use with caution.
- add_macos_file(content: FileContent, path: Optional[str] = None)¶
Adds a single file to be installed in the
Contents/MacOS
directory in the bundle.Accepts the following arguments:
content
Object representing file content to materialize.
path
Relative path of file under
Contents/MacOS
. If not defined, the file will be installed into the equivalent ofos.path.join("Contents/MacOS", content.filename)
.
- add_macos_manifest(manifest: FileManifest))¶
Adds a
FileManifest
of content to be materialized in theContents/MacOS
directory.Accepts the following arguments:
manifest
Collection of files to materialize.
- add_resources_file(content: FileContent, path: Optional[str])¶
Adds a single file to be installed in the
Contents/Resources
directory in the bundle.Accepts the following arguments:
content
Object representing file content to materialize.
path
Relative path of file under
Contents/Resources
. If not defined, the file will be installed into the equivalent ofos.path.join("Contents/Resources", content.filename)
.
- add_resources_manifest(manifest: FileManifest)¶
Adds a
FileManifest
of content to be materialized in theContents/Resources
directory.Accepts the following arguments:
manifest
Collection of files to materialize.
- set_info_plist_key(key: str, value: Union[bool, int, str])¶
Sets the value of a key in the
Contents/Info.plist
file.Accepts the following arguments:
key
Key in the
`Info.plist
file to set.value
Value to set. Can be a
bool
,int
, orstring
.
- set_info_plist_required_keys(display_name: str, identifier: str, version: str, signature: str, executable: str)¶
This method defines required keys in the
Contents/Info.plist
file.The following named arguments are accepted and must all be provided:
display_name
Sets the bundle display name (
CFBundleDisplayName
).This is the name of the application as displayed to users.
identifier
Sets the bundle identifier (
CFBundleIdentifer
).This is a reverse DNS type identifier. e.g.
com.example.my_program
.version
Sets the bundle version string (
CFBundleVersion
)signature
Sets the bundle creator OS type code (
CFBundleSignature
).The value must be exactly 4 characters.
executable
Sets the name of the main executable file (
CFBundleExecutable
).This is typically the same name as the bundle.
- build(target: str)¶
This method will materialize the
.app
bundle/directory given the settings specified.This method accepts the following arguments:
target
The name of the target being built.
Upon successful bundle directory creation, the entire bundle is considered for code signing with the signing action
macos-application-bundle-creation
. All signable Mach-O files and nested bundles should be signed.
- write_to_directory(path: str)¶
This method will materialize the
.app
bundle/directory to the specified directory.Absolute paths are treated as-is. Relative paths are relative to the currently configured build path.
Upon successful bundle directory creation, the entire bundle is considered for code signing with the signing action
macos-application-bundle-creation
. All signable Mach-O files and nested bundles should be signed.