@rules_swift_previews//:defs.bzl
Non-bzlmod entry point for rules_swift_previews.
This file provides a fallback for users not using bzlmod (WORKSPACE-based projects).
Note: This basic version does NOT support automatic resource module detection.
For resource support, migrate to bzlmod and set enable_resources = True.
Functions & Macros
swift_previews_packageGenerate an SPM Package.swift for Xcode SwiftUI previews.
Parameters
*name | Target name (typically "previews") |
*lib | The swift_library target to generate previews for |
ios_version | iOS deployment target (default: "18") Default: "18" |
macos_version | macOS deployment target (empty to omit) Default: "" |
tvos_version | tvOS deployment target (empty to omit) Default: "" |
watchos_version | watchOS deployment target (empty to omit) Default: "" |
visionos_version | visionOS deployment target (empty to omit) Default: "" |
visibility | Bazel visibility Default: None |
Providers
SourceFilesInfoProvider that contains source files collected from swift_library targets.
Fields
sources | depset of source files |
module_sources | dict mapping module names to their source files |
resource_modules | dict mapping resource module names to their resource files |
module_deps | dict mapping module names to their dependency module names |
@rules_swift_previews//:extensions.bzl
Module extension for rules_swift_previews.
Module Extensions
swift_previewsTag Classes
use_swift_resourcesEnable rules_swift_resources integration for generating Swift resource accessors.
@rules_swift_previews//internal:core.bzl
Core implementation for rules_swift_previews.
Uses convention-based resource detection (checks rule kind) rather than
importing SwiftResourceInfo.
Functions & Macros
swift_previews_package_implImplementation of the preview package generator rule.
Exported for use by generated repository rules.
Parameters
*ctx | The rule context. |
create_swift_previews_ruleFactory to create swift_previews_package rule variants.
Parameters
extra_attrs | Additional attributes to add to the rule (e.g., _sr for SwiftResources) Default: {} |
create_swift_previews_macroFactory to create swift_previews_package macro wrapper.
Parameters
*rule_fn | The rule function to wrap |
swift_previews_packageGenerate an SPM Package.swift for Xcode SwiftUI previews.
Parameters
*name | Target name (typically "previews") |
*lib | The swift_library target to generate previews for |
ios_version | iOS deployment target (default: "18") Default: "18" |
macos_version | macOS deployment target (empty to omit) Default: "" |
tvos_version | tvOS deployment target (empty to omit) Default: "" |
watchos_version | watchOS deployment target (empty to omit) Default: "" |
visionos_version | visionOS deployment target (empty to omit) Default: "" |
visibility | Bazel visibility Default: None |
Rules
swift_previews_package_ruleGenerates an SPM Package.swift for Xcode SwiftUI previews.
| Attribute | Type | Description |
|---|---|---|
*name | name | A unique name for this target. |
*lib | label | The swift_library target to generate previews for |
*package_dir | string | Path to the package directory |
ios_version | string | Default: "18" |
macos_version | string | Default: "" |
tvos_version | string | Default: "" |
watchos_version | string | Default: "" |
visionos_version | string | Default: "" |
Aspects
source_collector_aspectCollects source files and resources from swift_library targets.
@rules_swift_previews//internal:package_generator.bzl
Package.swift generation logic for rules_swift_previews.
Functions & Macros
generate_package_swiftGenerate the Package.swift content.
Parameters
*name | The main module name (from the swift_library target) |
*dep_modules | List of dependency module names |
*resource_modules | List of resource module names |
module_deps | Dict mapping module names to their dependency module names Default: None |
ios_version | iOS deployment target version Default: "18" |
macos_version | macOS deployment target version (empty to omit) Default: "" |
tvos_version | tvOS deployment target version (empty to omit) Default: "" |
watchos_version | watchOS deployment target version (empty to omit) Default: "" |
visionos_version | visionOS deployment target version (empty to omit) Default: "" |
@rules_swift_previews//internal:providers.bzl
Shared providers for rules_swift_previews.
Providers
SourceFilesInfoProvider that contains source files collected from swift_library targets.
Fields
sources | depset of source files |
module_sources | dict mapping module names to their source files |
resource_modules | dict mapping resource module names to their resource files |
module_deps | dict mapping module names to their dependency module names |
@rules_swift_previews//internal:repo_rule.bzl
Repository rule that generates the swift_previews repository.
Generates a thin wrapper that optionally adds the sr binary for
Swift resource accessor generation.
Repository Rules
swift_previews_repositoryGenerates the swift_previews repository.
| Attribute | Type | Description |
|---|---|---|
*name | name | A unique name for this repository. |
repo_mapping | dictionary: String → String | In For example, an entry This attribute is not supported in |
swift_resources | string | Label for the sr binary. Enables Swift resource accessor generation. Default: "" |
@rules_swift_previews//internal:script_generator.bzl
Shell script generation utilities for rules_swift_previews.
This module provides both pure string-based functions (for testability) and
wrapper functions that work with Bazel File objects.
Functions & Macros
generate_copy_sources_script_from_pathsGenerate script lines to copy dependency sources to .deps/.
Pure function that takes string paths instead of File objects.
Parameters
*dep_dirs | dict mapping module_name -> list of source short_paths (strings) |
generate_copy_resources_script_from_pathsGenerate script lines to copy resource files to .deps/<module>/Resources/.
Pure function that takes string paths instead of File objects.
Parameters
*resource_modules | dict mapping module_name -> list of resource short_paths (strings) |
generate_sr_script_from_pathsGenerate script lines to run SwiftResources sr generate for each resource module.
Pure function that takes classified file info instead of File objects.
Parameters
*resource_modules | dict mapping module_name -> dict with keys:
|
*sr_short_path | short_path to the sr binary |
generate_copy_sources_scriptGenerate script lines to copy dependency sources to .deps/.
Parameters
*dep_dirs | dict mapping module_name -> list of source File objects |
generate_copy_resources_scriptGenerate script lines to copy resource files to .deps/<module>/Resources/.
Parameters
*resource_modules | dict mapping module_name -> list of resource File objects |
generate_sr_scriptGenerate script lines to run SwiftResources sr generate for each resource module.
Parameters
*resource_modules | dict mapping module_name -> list of resource File objects |
*sr_short_path | short_path to the sr binary |
generate_base_scriptGenerate the base shell script setup lines.
Parameters
*package_dir | Path to the package directory |
generate_package_write_scriptGenerate script lines to write Package.swift.
Parameters
*package_swift_content | The Package.swift file content |