feat: Add granular Apple build primitives#20
Merged
Conversation
1ada23c to
d87047d
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds TOML-declared Apple Swift build primitives for
apple.swift_library,apple.static_framework,apple.dynamic_framework, andapple.macos_command_line_application.swift_libraryexpands into separate cacheable compile and archive actions. Library compile actions depend on dependency module outputs, while executable and framework actions depend on dependency root outputs for linking.The local graph now uses lower-level Fabrik declarations and project-root-relative target ids such as
examples/apple/macos/cli/hello. Build-file deps stay local by default, so same-file deps can be written asGreeter, while./and../resolve relative to the declaringfabrik.toml.This removes the old build-file compatibility path so
fabrik.tomlis the single scanned build-file surface, updatesfabrik vendorto emitvendor/fabrik.toml, and drops the unused parser dependency.The examples now live under
examples/apple/macos/..., including a Tuist-shaped module graph that mimics a layered CLI build without importing Tuist-specific project structure. The previous large examples spec is split into Apple, Rust, and target-listing specs.Validation
mise exec -- cargo test --workspacemise exec -- cargo clippy --workspace --all-targets -- -D warningsmise exec -- cargo fmt --all -- --checkmise exec -- cargo build --releasemise exec -- shellspec