diff --git a/Package.swift b/Package.swift index 4d48a75f..e6c418ce 100644 --- a/Package.swift +++ b/Package.swift @@ -29,29 +29,27 @@ let package = Package( name: "InstallSafeDITool", targets: ["InstallSafeDITool"] ), - ] + ( - Context.environment["SAFEDI_COCOAPODS_PROTOCOL_PLUGIN"] != nil ? [ - .executable( - name: "SafeDIMacros", - targets: ["SafeDIMacros"] - ) - ] : [] + ] + .appending( + .executable(name: "SafeDIMacros", targets: ["SafeDIMacros"]), + if: isBuildingForCocoapods ), dependencies: [ .package(url: "https://github.com/apple/swift-argument-parser.git", from: "1.2.0"), .package(url: "https://github.com/apple/swift-collections.git", from: "1.0.0"), .package(url: "https://github.com/swiftlang/swift-syntax.git", from: "600.0.0"), - .package(url: "https://github.com/michaeleisel/ZippyJSON.git", from: "1.2.0"), .package(url: "https://github.com/pointfreeco/swift-macro-testing.git", from: "0.5.0"), - ], + ] + .appending( + .package(url: "https://github.com/michaeleisel/ZippyJSON.git", from: "1.2.0"), + if: !isBuildingForCocoapods + ), targets: [ // Macros .target( name: "SafeDI", dependencies: ["SafeDIMacros"], - swiftSettings: [ - .swiftLanguageMode(.v6), - ] + swiftSettings: commonSwiftSettings ), .testTarget( name: "SafeDITests", @@ -59,42 +57,8 @@ let package = Package( "SafeDI", "SafeDICore", ], - swiftSettings: [ - .swiftLanguageMode(.v6), - ] + swiftSettings: commonSwiftSettings ), - Context.environment["SAFEDI_COCOAPODS_PROTOCOL_PLUGIN"] != nil - ? - .executableTarget( - name: "SafeDIMacros", - dependencies: [ - "SafeDICore", - .product(name: "SwiftCompilerPlugin", package: "swift-syntax"), - .product(name: "SwiftDiagnostics", package: "swift-syntax"), - .product(name: "SwiftSyntax", package: "swift-syntax"), - .product(name: "SwiftSyntaxBuilder", package: "swift-syntax"), - .product(name: "SwiftSyntaxMacros", package: "swift-syntax"), - ], - swiftSettings: [ - .swiftLanguageMode(.v6), - ] - ) - : - .macro( - name: "SafeDIMacros", - dependencies: [ - "SafeDICore", - .product(name: "SwiftCompilerPlugin", package: "swift-syntax"), - .product(name: "SwiftDiagnostics", package: "swift-syntax"), - .product(name: "SwiftSyntax", package: "swift-syntax"), - .product(name: "SwiftSyntaxBuilder", package: "swift-syntax"), - .product(name: "SwiftSyntaxMacros", package: "swift-syntax"), - ], - swiftSettings: [ - .swiftLanguageMode(.v6), - ] - ), - .testTarget( name: "SafeDIMacrosTests", dependencies: [ @@ -103,9 +67,7 @@ let package = Package( .product(name: "SwiftSyntaxMacrosTestSupport", package: "swift-syntax"), .product(name: "MacroTesting", package: "swift-macro-testing"), ], - swiftSettings: [ - .swiftLanguageMode(.v6), - ] + swiftSettings: commonSwiftSettings ), // Plugins @@ -123,9 +85,7 @@ let package = Package( .byNameItem(name: "ZippyJSON", condition: .when(platforms: [.iOS, .tvOS, .macOS])), "SafeDICore", ], - swiftSettings: [ - .swiftLanguageMode(.v6), - ] + swiftSettings: commonSwiftSettings ), .testTarget( name: "SafeDIToolTests", @@ -134,9 +94,7 @@ let package = Package( .byNameItem(name: "ZippyJSON", condition: .when(platforms: [.iOS, .tvOS, .macOS])), "SafeDITool", ], - swiftSettings: [ - .swiftLanguageMode(.v6), - ] + swiftSettings: commonSwiftSettings ), .plugin( name: "InstallSafeDITool", @@ -162,16 +120,46 @@ let package = Package( .product(name: "SwiftSyntax", package: "swift-syntax"), .product(name: "SwiftSyntaxBuilder", package: "swift-syntax"), ], - swiftSettings: [ - .swiftLanguageMode(.v6), - ] + swiftSettings: commonSwiftSettings ), .testTarget( name: "SafeDICoreTests", dependencies: ["SafeDICore"], - swiftSettings: [ - .swiftLanguageMode(.v6), - ] + swiftSettings: commonSwiftSettings ), ] + .appending(.executableTarget( + name: "SafeDIMacros", + dependencies: safeDIMacrosDependencies, + swiftSettings: commonSwiftSettings + ), if: isBuildingForCocoapods) + .appending(.macro( + name: "SafeDIMacros", + dependencies: safeDIMacrosDependencies, + swiftSettings: commonSwiftSettings + ), if: !isBuildingForCocoapods) ) + +let isBuildingForCocoapods = Context.environment["SAFEDI_COCOAPODS_PROTOCOL_PLUGIN"] != nil + +let commonSwiftSettings: [SwiftSetting] = [ + .swiftLanguageMode(.v6), +] +let safeDIMacrosDependencies: [Target.Dependency] = [ + "SafeDICore", + .product(name: "SwiftCompilerPlugin", package: "swift-syntax"), + .product(name: "SwiftDiagnostics", package: "swift-syntax"), + .product(name: "SwiftSyntax", package: "swift-syntax"), + .product(name: "SwiftSyntaxBuilder", package: "swift-syntax"), + .product(name: "SwiftSyntaxMacros", package: "swift-syntax"), +] + +extension Array { + func appending(_ element: Element, if condition: Bool) -> [Element] { + if condition { + self + [element] + } else { + self + } + } +}