mirror of https://github.com/garrytan/gstack.git
41 lines
1.3 KiB
Swift
41 lines
1.3 KiB
Swift
// swift-tools-version:5.9
|
|
//
|
|
// gen-accessors-tool — SwiftPM tool that reads an app's Swift source via
|
|
// swift-syntax, finds @Observable classes with @Snapshotable-marked fields,
|
|
// and emits StateAccessor.swift for each one.
|
|
//
|
|
// First build is 2-5 min on a cold machine (swift-syntax compile chain).
|
|
// Subsequent runs are content-hash-cached and finish in ~50ms.
|
|
//
|
|
// Invocation:
|
|
// swift run --package-path ios-qa/scripts/gen-accessors-tool \
|
|
// gen-accessors --input <swift-source-dir> [--output <out-dir>]
|
|
|
|
import PackageDescription
|
|
|
|
let package = Package(
|
|
name: "gen-accessors-tool",
|
|
platforms: [.macOS(.v13)],
|
|
products: [
|
|
.executable(name: "gen-accessors", targets: ["GenAccessors"]),
|
|
],
|
|
dependencies: [
|
|
.package(url: "https://github.com/swiftlang/swift-syntax.git", from: "510.0.0"),
|
|
],
|
|
targets: [
|
|
.executableTarget(
|
|
name: "GenAccessors",
|
|
dependencies: [
|
|
.product(name: "SwiftSyntax", package: "swift-syntax"),
|
|
.product(name: "SwiftParser", package: "swift-syntax"),
|
|
],
|
|
path: "Sources/GenAccessors"
|
|
),
|
|
.testTarget(
|
|
name: "GenAccessorsTests",
|
|
dependencies: ["GenAccessors"],
|
|
path: "Tests/GenAccessorsTests"
|
|
),
|
|
]
|
|
)
|