Skip to content

Commit a4547a1

Browse files
committed
Introduce traits guarding dependencies that macros and -tool use
1 parent 67c20f7 commit a4547a1

File tree

1 file changed

+82
-17
lines changed

1 file changed

+82
-17
lines changed

Package.swift

Lines changed: 82 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -202,8 +202,20 @@ let package = Package(
202202
type: .dynamic,
203203
targets: ["ExampleSwiftLibrary"]
204204
),
205+
],
206+
traits: [
207+
// guards dependencies pulled by the swift-java tool (source generator)
208+
.trait(name: "_SwiftJavaToolDependencyGuardTrait", enabledTraits: []),
209+
210+
// guards dependencies pulled by the SwiftJava target to support `@Java...` macros
211+
.trait(name: "_SwiftJavaMacrosDependencyGuardTrait", enabledTraits: []),
205212

213+
.default(enabledTraits: [
214+
"_SwiftJavaToolDependencyGuardTrait",
215+
"_SwiftJavaMacrosDependencyGuardTrait",
216+
])
206217
],
218+
207219
dependencies: [
208220
.package(url: "https://github.com/swiftlang/swift-syntax", from: "602.0.0"),
209221
.package(url: "https://github.com/apple/swift-argument-parser", from: "1.5.0"),
@@ -231,8 +243,16 @@ let package = Package(
231243
.macro(
232244
name: "SwiftJavaMacros",
233245
dependencies: [
234-
.product(name: "SwiftSyntaxMacros", package: "swift-syntax"),
235-
.product(name: "SwiftCompilerPlugin", package: "swift-syntax"),
246+
.product(
247+
name: "SwiftSyntaxMacros",
248+
package: "swift-syntax",
249+
condition: .when(traits: ["_SwiftJavaMacrosDependencyGuardTrait"])
250+
),
251+
.product(
252+
name: "SwiftCompilerPlugin",
253+
package: "swift-syntax",
254+
condition: .when(traits: ["_SwiftJavaMacrosDependencyGuardTrait"])
255+
),
236256
],
237257
swiftSettings: [
238258
.swiftLanguageMode(.v5)
@@ -403,11 +423,26 @@ let package = Package(
403423
.target(
404424
name: "SwiftJavaToolLib",
405425
dependencies: [
406-
.product(name: "Logging", package: "swift-log"),
407-
.product(name: "OrderedCollections", package: "swift-collections"),
408-
.product(name: "SwiftBasicFormat", package: "swift-syntax"),
409-
.product(name: "SwiftSyntax", package: "swift-syntax"),
410-
.product(name: "SwiftSyntaxBuilder", package: "swift-syntax"),
426+
.product(
427+
name: "Logging", package: "swift-log",
428+
condition: .when(traits: ["_SwiftJavaToolDependencyGuardTrait"])
429+
),
430+
.product(
431+
name: "OrderedCollections", package: "swift-collections",
432+
condition: .when(traits: ["_SwiftJavaToolDependencyGuardTrait"])
433+
),
434+
.product(
435+
name: "SwiftBasicFormat", package: "swift-syntax",
436+
condition: .when(traits: ["_SwiftJavaToolDependencyGuardTrait"])
437+
),
438+
.product(
439+
name: "SwiftSyntax", package: "swift-syntax",
440+
condition: .when(traits: ["_SwiftJavaToolDependencyGuardTrait"])
441+
),
442+
.product(
443+
name: "SwiftSyntaxBuilder", package: "swift-syntax",
444+
condition: .when(traits: ["_SwiftJavaToolDependencyGuardTrait"])
445+
),
411446
"SwiftJava",
412447
"JavaUtilJar",
413448
"JavaLangReflect",
@@ -428,11 +463,26 @@ let package = Package(
428463
.executableTarget(
429464
name: "SwiftJavaTool",
430465
dependencies: [
431-
.product(name: "SwiftBasicFormat", package: "swift-syntax"),
432-
.product(name: "SwiftSyntax", package: "swift-syntax"),
433-
.product(name: "SwiftSyntaxBuilder", package: "swift-syntax"),
434-
.product(name: "ArgumentParser", package: "swift-argument-parser"),
435-
.product(name: "SystemPackage", package: "swift-system"),
466+
.product(
467+
name: "SwiftBasicFormat", package: "swift-syntax",
468+
condition: .when(traits: ["_SwiftJavaToolDependencyGuardTrait"])
469+
),
470+
.product(
471+
name: "SwiftSyntax", package: "swift-syntax",
472+
condition: .when(traits: ["_SwiftJavaToolDependencyGuardTrait"])
473+
),
474+
.product(
475+
name: "SwiftSyntaxBuilder", package: "swift-syntax",
476+
condition: .when(traits: ["_SwiftJavaToolDependencyGuardTrait"])
477+
),
478+
.product(
479+
name: "ArgumentParser", package: "swift-argument-parser",
480+
condition: .when(traits: ["_SwiftJavaToolDependencyGuardTrait"])
481+
),
482+
.product(
483+
name: "SystemPackage", package: "swift-system",
484+
condition: .when(traits: ["_SwiftJavaToolDependencyGuardTrait"])
485+
),
436486
"SwiftJava",
437487
"JavaUtilJar",
438488
"JavaNet",
@@ -455,11 +505,26 @@ let package = Package(
455505
.target(
456506
name: "JExtractSwiftLib",
457507
dependencies: [
458-
.product(name: "SwiftBasicFormat", package: "swift-syntax"),
459-
.product(name: "SwiftLexicalLookup", package: "swift-syntax"),
460-
.product(name: "SwiftSyntax", package: "swift-syntax"),
461-
.product(name: "SwiftSyntaxBuilder", package: "swift-syntax"),
462-
.product(name: "ArgumentParser", package: "swift-argument-parser"),
508+
.product(
509+
name: "SwiftBasicFormat", package: "swift-syntax",
510+
condition: .when(traits: ["_SwiftJavaToolDependencyGuardTrait"])
511+
),
512+
.product(
513+
name: "SwiftLexicalLookup", package: "swift-syntax",
514+
condition: .when(traits: ["_SwiftJavaToolDependencyGuardTrait"])
515+
),
516+
.product(
517+
name: "SwiftSyntax", package: "swift-syntax",
518+
condition: .when(traits: ["_SwiftJavaToolDependencyGuardTrait"])
519+
),
520+
.product(
521+
name: "SwiftSyntaxBuilder", package: "swift-syntax",
522+
condition: .when(traits: ["_SwiftJavaToolDependencyGuardTrait"])
523+
),
524+
.product(
525+
name: "ArgumentParser", package: "swift-argument-parser",
526+
condition: .when(traits: ["_SwiftJavaToolDependencyGuardTrait"]),
527+
),
463528
"JavaTypes",
464529
"SwiftJavaShared",
465530
"SwiftJavaConfigurationShared",

0 commit comments

Comments
 (0)