@rules_swift_resources//rules_swift_resources:defs.bzl
Bazel rules for SwiftResources.
Functions & Macros
swift_resources_libraryGenerates a Swift module with type-safe resource accessors.
Creates four targets:
-
{name}_gen (swift_resources_generate):
Runs thesrCLI to generate Swift code with type-safe accessors
for fonts, images, colors, files, and strings. -
{name}_lib (swift_library):
Compiles the generated Swift code. Private visibility; not intended
for direct use. -
{name} (swift_resources):
The primary target to depend on. Forwards SwiftInfo, CcInfo, and
DefaultInfo from the inner library. Also provides SwiftResourceInfo
for tooling integration (e.g., rules_swift_previews). -
{name}.resources (filegroup):
All resource files bundled together. Pass to ios_application's
resourcesattribute for runtime bundling.
Example:
swift_resources_library(
name = "DesignSystemResources",
fonts = glob(["Fonts//*.ttf"]),
images = glob(["Images//*.png"]),
module_name = "DesignSystem",
)
# Depend on the module
swift_library(
deps = [":DesignSystemResources"],
)
# Bundle resources in app
ios_application(
resources = [":DesignSystemResources.resources"],
)
Parameters
*name | Target name. |
fonts | Font files (.ttf, .otf). Default: [] |
images | Image files (.png, .jpg, .pdf, .svg, .heic). Default: [] |
files | Arbitrary files. Default: [] |
xcassets | Asset catalog directories (.xcassets). Default: [] |
strings | String catalogs (.xcstrings) or legacy .strings files. Default: [] |
development_region | Source language for .strings files (auto-detected for .xcstrings). Default: None |
module_name | Generated enum namespace (default: "Resources"). Default: "Resources" |
access_level | "public" or "internal" (default: "internal"). Default: "internal" |
bundle | Bundle expression (e.g., ".module", ".main"). Default: auto-detect. Default: None |
register_fonts | Generate registerFonts() function (default: True). Default: True |
force_unwrap | Generate non-optional accessors with force unwrap (default: False). Default: False |
deps | Additional Swift dependencies. Default: [] |
visibility | Target visibility. Default: None |
tags | Target tags. Default: [] |
testonly | Test-only target. Default: False |
Rules
swift_resourcesSwift resources module. Provides SwiftResourceInfo for tooling integration.
| Attribute | Type | Description |
|---|---|---|
*name | name | A unique name for this target. |
files | list of labels | Default: [] |
fonts | list of labels | Default: [] |
images | list of labels | Default: [] |
xcassets | list of labels | Default: [] |
strings | list of labels | Default: [] |
*inner_lib | label | The inner swift_library target |
*module_name | string |
swift_resources_generateGenerates Swift code for type-safe resource access.
| Attribute | Type | Description |
|---|---|---|
*name | name | A unique name for this target. |
fonts | list of labels | Font files (.ttf, .otf) Default: [] |
images | list of labels | Image files Default: [] |
files | list of labels | Arbitrary files Default: [] |
xcassets | list of labels | Asset catalog directories (.xcassets) Default: [] |
strings | list of labels | String catalogs (.xcstrings) or legacy .strings files Default: [] |
development_region | string | Source language for .strings files (auto-detected for .xcstrings) Default: "" |
module_name | string | Name of the generated enum namespace Default: "Resources" |
access_level | string | Access level for generated code Default: "internal" |
bundle | string | Bundle expression (e.g., '.module', '.main'). Default: auto-detect via BundleFinder Default: "" |
register_fonts | boolean | Generate registerFonts() function Default: True |
force_unwrap | boolean | Generate non-optional accessors with force unwrap Default: False |
*out | label | Output Swift file |
@rules_swift_resources//rules_swift_resources:providers.bzl
Providers for SwiftResources.
Providers
SwiftResourceInfoExposes resource module info for tooling integration.
Fields
module_name | Name of the resource module. |
resources | Depset of resource files (fonts, images, files). |