rules_swift_previewsAPI docs @0.1.1

@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_package

Generate 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

SourceFilesInfo

Provider 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_sources

Collect 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_impl

Implementation of the preview package generator rule.

Exported for use by generated repository rules.

Parameters
*ctx

The rule context.

create_swift_previews_rule

Factory 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_macro

Factory to create swift_previews_package macro wrapper.

Parameters
*rule_fn

The rule function to wrap

swift_previews_package

Generate 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_rule

Generates an SPM Package.swift for Xcode SwiftUI previews.

AttributeTypeDescription
*namename

A unique name for this target.

*liblabel

The swift_library target to generate previews for

*package_dirstring

Path to the package directory

extra_excludeslist of strings

Additional directories/files to exclude from the main SPM target

Default: []
ios_versionstring
Default: "18"
macos_versionstring
Default: ""
tvos_versionstring
Default: ""
watchos_versionstring
Default: ""
visionos_versionstring
Default: ""

Aspects

source_collector_aspect

Collects 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_sources

Collect 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_swift

Generate 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

SourceFilesInfo

Provider 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_paths

Generate 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_paths

Generate 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_paths

Generate 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_paths

Generate 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_script

Generate script lines to copy dependency sources to .deps/.

Parameters
*dep_dirs

dict mapping module_name -> list of source File objects

generate_copy_resources_script

Generate 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_script

Generate 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_script

Generate script lines to copy Objective-C sources and headers to .deps/.

Parameters
*objc_modules

dict mapping module_name -> {srcs: [File], hdrs: [File]}

generate_base_script

Generate the base shell script setup lines.

Parameters
*package_dir

Path to the package directory

generate_package_write_script

Generate 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_sources

Collect Swift source files from a target.

Parameters
*ctx

The aspect context.

*target

The target being analyzed.

collect_swift_resources

Collect resource files and generated source from a swift_resources target.

Parameters
*ctx

The aspect context.

*target

The target being analyzed.