rules_swift_resourcesAPI docs @0.3.0

@rules_swift_resources//rules_swift_resources:defs.bzl

Bazel rules for SwiftResources.

Functions & Macros

swift_resources_library

Generates a Swift module with type-safe resource accessors.

Creates four targets:

  • {name}_gen (swift_resources_generate):
    Runs the sr CLI 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
    resources attribute 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_resources

Swift resources module. Provides SwiftResourceInfo for tooling integration.

AttributeTypeDescription
*namename

A unique name for this target.

fileslist of labels
Default: []
fontslist of labels
Default: []
imageslist of labels
Default: []
xcassetslist of labels
Default: []
stringslist of labels
Default: []
*inner_liblabel

The inner swift_library target

*module_namestring
swift_resources_generate

Generates Swift code for type-safe resource access.

AttributeTypeDescription
*namename

A unique name for this target.

fontslist of labels

Font files (.ttf, .otf)

Default: []
imageslist of labels

Image files

Default: []
fileslist of labels

Arbitrary files

Default: []
xcassetslist of labels

Asset catalog directories (.xcassets)

Default: []
stringslist of labels

String catalogs (.xcstrings) or legacy .strings files

Default: []
development_regionstring

Source language for .strings files (auto-detected for .xcstrings)

Default: ""
module_namestring

Name of the generated enum namespace

Default: "Resources"
access_levelstring

Access level for generated code

Default: "internal"
bundlestring

Bundle expression (e.g., '.module', '.main'). Default: auto-detect via BundleFinder

Default: ""
register_fontsboolean

Generate registerFonts() function

Default: True
force_unwrapboolean

Generate non-optional accessors with force unwrap

Default: False
*outlabel

Output Swift file

@rules_swift_resources//rules_swift_resources:providers.bzl

Providers for SwiftResources.

Providers

SwiftResourceInfo

Exposes resource module info for tooling integration.

Fields
module_name

Name of the resource module.

resources

Depset of resource files (fonts, images, files).