Rules related to Apple resources and resource bundles.

Rules

apple_bundle_import

This rule encapsulates an already-built bundle. It is defined by a list of files in exactly one .bundle directory. apple_bundle_import targets need to be added to library targets through the data attribute, or to other resource targets (i.e. apple_resource_bundle and apple_resource_group) through the resources attribute.

Example usage (generated)

load("@rules_apple//apple:resources.bzl", "apple_bundle_import")

apple_bundle_import(
    # A unique name for this target.
    name = "",
    # The list of files under a `.bundle` directory to be propagated to the top-level bundling target
    bundle_imports = [],
)

name

A unique name for this target.

bundle_imports

The list of files under a .bundle directory to be propagated to the top-level bundling target.


apple_resource_bundle

This rule encapsulates a target which is provided to dependers as a bundle. An apple_resource_bundle's resources are put in a resource bundle in the top level Apple bundle dependent. apple_resource_bundle targets need to be added to library targets through the data attribute.

Example usage (generated)

load("@rules_apple//apple:resources.bzl", "apple_resource_bundle")

apple_resource_bundle(
    # A unique name for this target.
    name = "",
)

name

A unique name for this target.

bundle_name

The desired name of the bundle (without the .bundle extension). If this attribute is not set, then the name of the target will be used instead.

infoplists

A list of .plist files that will be merged to form the Info.plist that represents the extension. At least one file must be specified. Please see Info.plist Handling for what is supported.

Duplicate keys between infoplist files will cause an error if and only if the values conflict. Bazel will perform variable substitution on the Info.plist file for the following values (if they are strings in the top-level dict of the plist):

${BUNDLE_NAME}: This target's name and bundle suffix (.bundle or .app) in the form name.suffix. ${PRODUCT_NAME}: This target's name. ${TARGET_NAME}: This target's name. The key in ${} may be suffixed with :rfc1034identifier (for example ${PRODUCT_NAME::rfc1034identifier}) in which case Bazel will replicate Xcode's behavior and replace non-RFC1034-compliant characters with -.

resources

Files to include in the resource bundle. Files that are processable resources, like .xib, .storyboard, .strings, .png, and others, will be processed by the Apple bundling rules that have those files as dependencies. Other file types that are not processed will be copied verbatim. These files are placed in the root of the resource bundle (e.g. Payload/foo.app/bar.bundle/...) in most cases. However, if they appear to be localized (i.e. are contained in a directory called *.lproj), they will be placed in a directory of the same name in the app bundle.

You can also add other apple_resource_bundle and apple_bundle_import targets into resources, and the resource bundle structures will be propagated into the final bundle.

structured_resources

Files to include in the final resource bundle. They are not processed or compiled in any way besides the processing done by the rules that actually generate them. These files are placed in the bundle root in the same structure passed to this argument, so ["res/foo.png"] will end up in res/foo.png inside the bundle.


apple_resource_group

This rule encapsulates a target which provides resources to dependents. An apple_resource_group's resources and structured_resources are put in the top-level Apple bundle target. apple_resource_group targets need to be added to library targets through the data attribute, or to other apple_resource_bundle or apple_resource_group targets through the resources attribute.

Example usage (generated)

load("@rules_apple//apple:resources.bzl", "apple_resource_group")

apple_resource_group(
    # A unique name for this target.
    name = "",
)

name

A unique name for this target.

resources

Files to include in the final bundle that depends on this target. Files that are processable resources, like .xib, .storyboard, .strings, .png, and others, will be processed by the Apple bundling rules that have those files as dependencies. Other file types that are not processed will be copied verbatim. These files are placed in the root of the final bundle (e.g. Payload/foo.app/...) in most cases. However, if they appear to be localized (i.e. are contained in a directory called *.lproj), they will be placed in a directory of the same name in the app bundle.

You can also add apple_resource_bundle and apple_bundle_import targets into resources, and the resource bundle structures will be propagated into the final bundle.

structured_resources

Files to include in the final application bundle. They are not processed or compiled in any way besides the processing done by the rules that actually generate them. These files are placed in the bundle root in the same structure passed to this argument, so ["res/foo.png"] will end up in res/foo.png inside the bundle.


Macros and Functions

apple_core_ml_library

Macro to orchestrate an objc_library with generated sources for mlmodel files.

Example usage (generated)

load("@rules_apple//apple:resources.bzl", "apple_core_ml_library")

apple_core_ml_library(
    name = "",
    mlmodel = None,
)

name

mlmodel

kwargs


objc_intent_library

Macro to orchestrate an objc_library with generated sources for intentdefiniton files.

Example usage (generated)

load("@rules_apple//apple:resources.bzl", "objc_intent_library")

objc_intent_library(
    name = "",
    src = "",
)

name

src

class_prefix

class_visibility

testonly

swift_version

kwargs


swift_intent_library

This macro supports the integration of Intents .intentdefinition files into Apple rules.

It takes a single .intentdefinition file and creates a target that can be added as a dependency from objc_library or swift_library targets.

It accepts the regular swift_library attributes too.

Example usage (generated)

load("@rules_apple//apple:resources.bzl", "swift_intent_library")

swift_intent_library(
    # A unique name for the target.
    name = "",
    # Reference to the `.intentdefiniton` file to process.
    src = "",
)

name

A unique name for the target.

src

Reference to the .intentdefiniton file to process.

class_prefix

Class prefix to use for the generated classes.

class_visibility

Visibility attribute for the generated classes (public, private, project).

swift_version

Version of Swift to use for the generated classes.

testonly

Set to True to enforce that this library is only used from test code.

kwargs