Providers

Defines providers and related types used throughout the rules in this repository.

Most users will not need to use these providers to simply create and build Apple targets, but if you want to write your own custom rules that interact with these rules, then you will use these providers to communicate between them.

These providers are part of the public API of the bundling rules. Other rules that want to propagate information to the bundling rules or that want to consume the bundling rules as their own inputs should use these to handle the relevant information that they need.

Providers

AppleBinaryInfo

Provides information about an Apple binary target.

This provider propagates general information about an Apple binary that is not specific to any particular binary type.

AppleBundleInfo

Provides information about an Apple bundle target.

This provider propagates general information about an Apple bundle that is not specific to any particular bundle type. It is propagated by most bundling rules—applications, extensions, frameworks, test bundles, and so forth.

AppleBundleVersionInfo

Provides versioning information for an Apple bundle.

AppleExtraOutputsInfo

Provides information about extra outputs that should be produced from the build.

This provider propagates supplemental files that should be produced as outputs even if the bundle they are associated with is not a direct output of the rule. For example, an application that contains an extension will build both targets but only the application will be a rule output. However, if dSYM bundles are also being generated, we do want to produce the dSYMs for both application and extension as outputs of the build, not just the dSYMs of the explicit target being built (the application).

AppleFrameworkImportInfo

Provider that propagates information about framework import targets.

AppleResourceBundleInfo

Denotes that a target is an Apple resource bundle.

This provider does not contain any fields of its own at this time but is used as a "marker" to indicate that a target is specifically an Apple resource bundle (and not some other Apple bundle). Rule authors who wish to require that a dependency is an Apple resource bundle should use this provider to describe that requirement.

AppleResourceInfo

Provider that propagates buckets of resources that are differentiated by type.

AppleSupportToolchainInfo

Propagates information about an Apple toolchain to internal bundling rules that use the toolchain.

This provider exists as an internal detail for the rules to reference common, executable tools and files used as script templates for the purposes of executing Apple actions. Defined by the apple_support_toolchain rule.

AppleTestInfo

Provider that test targets propagate to be used for IDE integration.

This includes information regarding test source files, transitive include paths, transitive module maps, and transitive Swift modules. Test source files are considered to be all of which belong to the first-level dependencies on the test target.

AppleTestRunnerInfo

Provider that runner targets must propagate.

In addition to the fields, all the runfiles that the runner target declares will be added to the test rules runfiles.

IosAppClipBundleInfo

Denotes that a target is an iOS app clip.

This provider does not contain any fields of its own at this time but is used as a "marker" to indicate that a target is specifically an iOS app clip bundle (and not some other Apple bundle). Rule authors who wish to require that a dependency is an iOS app clip should use this provider to describe that requirement.

IosApplicationBundleInfo

Denotes that a target is an iOS application.

This provider does not contain any fields of its own at this time but is used as a "marker" to indicate that a target is specifically an iOS application bundle (and not some other Apple bundle). Rule authors who wish to require that a dependency is an iOS application should use this provider to describe that requirement.

IosExtensionBundleInfo

Denotes that a target is an iOS application extension.

This provider does not contain any fields of its own at this time but is used as a "marker" to indicate that a target is specifically an iOS application extension bundle (and not some other Apple bundle). Rule authors who wish to require that a dependency is an iOS application extension should use this provider to describe that requirement.

IosFrameworkBundleInfo

Denotes that a target is an iOS dynamic framework.

This provider does not contain any fields of its own at this time but is used as a "marker" to indicate that a target is specifically an iOS dynamic framework bundle (and not some other Apple bundle). Rule authors who wish to require that a dependency is an iOS dynamic framework should use this provider to describe that requirement.

IosImessageApplicationBundleInfo

Denotes that a target is an iOS iMessage application.

This provider does not contain any fields of its own at this time but is used as a "marker" to indicate that a target is specifically an iOS iMessage application bundle (and not some other Apple bundle). Rule authors who wish to require that a dependency is an iOS iMessage application should use this provider to describe that requirement.

IosImessageExtensionBundleInfo

Denotes that a target is an iOS iMessage extension.

This provider does not contain any fields of its own at this time but is used as a "marker" to indicate that a target is specifically an iOS iMessage extension bundle (and not some other Apple bundle). Rule authors who wish to require that a dependency is an iOS iMessage extension should use this provider to describe that requirement.

IosStaticFrameworkBundleInfo

Denotes that a target is an iOS static framework.

This provider does not contain any fields of its own at this time but is used as a "marker" to indicate that a target is specifically an iOS static framework bundle (and not some other Apple bundle). Rule authors who wish to require that a dependency is an iOS static framework should use this provider to describe that requirement.

IosStickerPackExtensionBundleInfo

Denotes that a target is an iOS Sticker Pack extension.

This provider does not contain any fields of its own at this time but is used as a "marker" to indicate that a target is specifically an iOS Sticker Pack extension bundle (and not some other Apple bundle). Rule authors who wish to require that a dependency is an iOS Sticker Pack extension should use this provider to describe that requirement.

IosXcTestBundleInfo

Denotes a target that is an iOS .xctest bundle.

This provider does not contain any fields of its own at this time but is used as a "marker" to indicate that a target is specifically an iOS .xctest bundle (and not some other Apple bundle). Rule authors who wish to require that a dependency is an iOS .xctest bundle should use this provider to describe that requirement.

MacosApplicationBundleInfo

Denotes that a target is a macOS application.

This provider does not contain any fields of its own at this time but is used as a "marker" to indicate that a target is specifically a macOS application bundle (and not some other Apple bundle). Rule authors who wish to require that a dependency is a macOS application should use this provider to describe that requirement.

MacosBundleBundleInfo

Denotes that a target is a macOS loadable bundle.

This provider does not contain any fields of its own at this time but is used as a "marker" to indicate that a target is specifically a macOS loadable bundle (and not some other Apple bundle). Rule authors who wish to require that a dependency is a macOS loadable bundle should use this provider to describe that requirement.

MacosExtensionBundleInfo

Denotes that a target is a macOS application extension.

This provider does not contain any fields of its own at this time but is used as a "marker" to indicate that a target is specifically a macOS application extension bundle (and not some other Apple bundle). Rule authors who wish to require that a dependency is a macOS application extension should use this provider to describe that requirement.

MacosKernelExtensionBundleInfo

Denotes that a target is a macOS kernel extension.

This provider does not contain any fields of its own at this time but is used as a "marker" to indicate that a target is specifically a macOS kernel extension (and not some other Apple bundle). Rule authors who wish to require that a dependency is a macOS kernel extension should use this provider to describe that requirement.

MacosQuickLookPluginBundleInfo

Denotes that a target is a macOS Quick Look Generator bundle.

This provider does not contain any fields of its own at this time but is used as a "marker" to indicate that a target is specifically a macOS Quick Look generator bundle (and not some other Apple bundle). Rule authors who wish to require that a dependency is a macOS Quick Look generator should use this provider to describe that requirement.

MacosSpotlightImporterBundleInfo

Denotes that a target is a macOS Spotlight Importer bundle.

This provider does not contain any fields of its own at this time but is used as a "marker" to indicate that a target is specifically a macOS Spotlight importer (and not some other Apple bundle). Rule authors who wish to require that a dependency is a macOS Spotlight importer should use this provider to describe that requirement.

MacosXPCServiceBundleInfo

Denotes that a target is a macOS XPC Service bundle.

This provider does not contain any fields of its own at this time but is used as a "marker" to indicate that a target is specifically a macOS XPC service (and not some other Apple bundle). Rule authors who wish to require that a dependency is a macOS XPC service should use this provider to describe that requirement.

MacosXcTestBundleInfo

Denotes a target that is a macOS .xctest bundle.

This provider does not contain any fields of its own at this time but is used as a "marker" to indicate that a target is specifically a macOS .xctest bundle (and not some other Apple bundle). Rule authors who wish to require that a dependency is a macOS .xctest bundle should use this provider to describe that requirement.

TvosApplicationBundleInfo

Denotes that a target is a tvOS application.

This provider does not contain any fields of its own at this time but is used as a "marker" to indicate that a target is specifically a tvOS application bundle (and not some other Apple bundle). Rule authors who wish to require that a dependency is a tvOS application should use this provider to describe that requirement.

TvosExtensionBundleInfo

Denotes that a target is a tvOS application extension.

This provider does not contain any fields of its own at this time but is used as a "marker" to indicate that a target is specifically a tvOS application extension bundle (and not some other Apple bundle). Rule authors who wish to require that a dependency is a tvOS application extension should use this provider to describe that requirement.

TvosFrameworkBundleInfo

Denotes that a target is a tvOS dynamic framework.

This provider does not contain any fields of its own at this time but is used as a "marker" to indicate that a target is specifically a tvOS dynamic framework bundle (and not some other Apple bundle). Rule authors who wish to require that a dependency is a tvOS dynamic framework should use this provider to describe that requirement.

TvosStaticFrameworkBundleInfo

Denotes that a target is an tvOS static framework.

This provider does not contain any fields of its own at this time but is used as a "marker" to indicate that a target is specifically a tvOS static framework bundle (and not some other Apple bundle). Rule authors who wish to require that a dependency is a tvOS static framework should use this provider to describe that requirement.

TvosXcTestBundleInfo

Denotes a target that is a tvOS .xctest bundle.

This provider does not contain any fields of its own at this time but is used as a "marker" to indicate that a target is specifically a tvOS .xctest bundle (and not some other Apple bundle). Rule authors who wish to require that a dependency is a tvOS .xctest bundle should use this provider to describe that requirement.

WatchosApplicationBundleInfo

Denotes that a target is a watchOS application.

This provider does not contain any fields of its own at this time but is used as a "marker" to indicate that a target is specifically a watchOS application bundle (and not some other Apple bundle). Rule authors who wish to require that a dependency is a watchOS application should use this provider to describe that requirement.

WatchosExtensionBundleInfo

Denotes that a target is a watchOS application extension.

This provider does not contain any fields of its own at this time but is used as a "marker" to indicate that a target is specifically a watchOS application extension bundle (and not some other Apple bundle). Rule authors who wish to require that a dependency is a watchOS application extension should use this provider to describe that requirement.

WatchosStaticFrameworkBundleInfo

Denotes that a target is an watchOS static framework.

This provider does not contain any fields of its own at this time but is used as a "marker" to indicate that a target is specifically a watchOS static framework bundle (and not some other Apple bundle). Rule authors who wish to require that a dependency is a watchOS static framework should use this provider to describe that requirement.

WatchosXcTestBundleInfo

Denotes a target that is a watchOS .xctest bundle.

This provider does not contain any fields of its own at this time but is used as a "marker" to indicate that a target is specifically a watchOS .xctest bundle (and not some other Apple bundle). Rule authors who wish to require that a dependency is a watchOS .xctest bundle should use this provider to describe that requirement.