@rules_swift_previews//:defs.bzl
Public API for rules_swift_previews.
Swift resource modules (swift_resources_library) are automatically detected
via the aspect and their generated source files are included in the preview package.
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 |
extra_excludes | Additional directories/files to exclude from the main SPM target Default: [] |
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 library targets.
Fields
sources | depset of Swift source files |
module_sources | dict mapping module names to their Swift source files |
resource_modules | dict mapping resource module names to {resources: [...], generated_source: File} |
module_deps | dict mapping module names to their dependency module names |
cc_modules | dict mapping module names to {srcs: [...], hdrs: [...]} |
objc_modules | dict mapping module names to {srcs: [...], hdrs: [...]} |
@rules_swift_previews//:extensions.bzl
Module extension for rules_swift_previews.
Note: This extension is kept for potential future use. Load rules directly
from @rules_swift_previews//:defs.bzl instead of using an extension repo.
Module Extensions
swift_previews@rules_swift_previews//internal:cc_collector.bzl
C/C++ source collection for rules_swift_previews.
This module handles collecting C/C++ source files and headers from cc_library targets.
Functions & Macros
collect_cc_sourcesCollect C/C++ source files and headers from a cc_library target.
Parameters
*ctx | The aspect context. |
*target | The target being analyzed. |
@rules_swift_previews//internal:core.bzl
Core implementation for rules_swift_previews.
Uses convention-based resource detection (checks rule kind) rather than
importing SwiftResourceInfo. Delegates source collection to language-specific
modules for Swift, C/C++, and Objective-C.
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 |
extra_excludes | Additional directories/files to exclude from the main SPM target Default: [] |
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 |
extra_excludes | list of strings | Additional directories/files to exclude from the main SPM target Default: [] |
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 from swift_library, cc_library, and objc_library targets.
@rules_swift_previews//internal:objc_collector.bzl
Objective-C source collection for rules_swift_previews.
This module handles collecting Objective-C source files and headers from objc_library targets.
Functions & Macros
collect_objc_sourcesCollect Objective-C source files and headers from an objc_library target.
Parameters
*ctx | The aspect context. |
*target | The target being analyzed. |
@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 Swift dependency module names |
*resource_modules | List of resource module names |
module_deps | Dict mapping module names to their dependency module names Default: None |
cc_modules | List of C/C++ module names Default: None |
objc_modules | List of Objective-C module names Default: None |
extra_excludes | Additional directories/files to exclude from main target 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 library targets.
Fields
sources | depset of Swift source files |
module_sources | dict mapping module names to their Swift source files |
resource_modules | dict mapping resource module names to {resources: [...], generated_source: File} |
module_deps | dict mapping module names to their dependency module names |
cc_modules | dict mapping module names to {srcs: [...], hdrs: [...]} |
objc_modules | dict mapping module names to {srcs: [...], hdrs: [...]} |
@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 and generated source to .deps/<module>/.
Pure function that takes string paths instead of File objects.
Parameters
*resource_modules | dict mapping module_name -> {resources: [paths], generated_source: path} |
generate_copy_cc_module_script_from_pathsGenerate script lines to copy C/C++ sources and headers to .deps/.
Pure function that takes string paths instead of File objects.
Sources go to .deps/<module>/, headers go to .deps/<module>/include/.
Parameters
*cc_modules | dict mapping module_name -> {srcs: [paths], hdrs: [paths]} |
generate_copy_objc_module_script_from_pathsGenerate script lines to copy Objective-C sources and headers to .deps/.
Pure function that takes string paths instead of File objects.
Sources go to .deps/<module>/, headers go to .deps/<module>/include/.
Parameters
*objc_modules | dict mapping module_name -> {srcs: [paths], hdrs: [paths]} |
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 and generated source to .deps/<module>/.
Parameters
*resource_modules | dict mapping module_name -> {resources: [File], generated_source: File} |
generate_copy_cc_module_scriptGenerate script lines to copy C/C++ sources and headers to .deps/.
Parameters
*cc_modules | dict mapping module_name -> {srcs: [File], hdrs: [File]} |
generate_copy_objc_module_scriptGenerate script lines to copy Objective-C sources and headers to .deps/.
Parameters
*objc_modules | dict mapping module_name -> {srcs: [File], hdrs: [File]} |
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 |
@rules_swift_previews//internal:swift_collector.bzl
Swift source collection for rules_swift_previews.
This module handles collecting Swift source files from swift_library targets.
Functions & Macros
collect_swift_sourcesCollect Swift source files from a target.
Parameters
*ctx | The aspect context. |
*target | The target being analyzed. |
collect_swift_resourcesCollect resource files and generated source from a swift_resources target.
Parameters
*ctx | The aspect context. |
*target | The target being analyzed. |