From f478cb6a2674564bf883f378be91e4081a8a88f4 Mon Sep 17 00:00:00 2001 From: Christopher Fuller Date: Mon, 22 Jan 2024 11:08:06 -0800 Subject: [PATCH] Limit unsafe flags via environment (#295) --- .github/workflows/pages.yml | 1 + .github/workflows/swift.yml | 1 + Package.swift | 19 +++++++++++++------ 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml index ba953359..ae320897 100644 --- a/.github/workflows/pages.yml +++ b/.github/workflows/pages.yml @@ -6,6 +6,7 @@ on: env: DEVELOPER_DIR: /Applications/Xcode_15.0.app/Contents/Developer + SWIFT_EMIT_EXTENSION_BLOCK_SYMBOLS: true jobs: pages: diff --git a/.github/workflows/swift.yml b/.github/workflows/swift.yml index 2c620774..daa1484a 100644 --- a/.github/workflows/swift.yml +++ b/.github/workflows/swift.yml @@ -8,6 +8,7 @@ on: env: DEVELOPER_DIR: /Applications/Xcode_15.0.app/Contents/Developer + SWIFT_STRICT_CONCURRENCY: complete jobs: swift: diff --git a/Package.swift b/Package.swift index 2bd17e79..223bf2d9 100644 --- a/Package.swift +++ b/Package.swift @@ -30,12 +30,7 @@ let package = Package( targets: [ .target( name: "Layout", - swiftSettings: [ - .unsafeFlags([ - "-strict-concurrency=complete", - "-emit-extension-block-symbols" - ]), - ], + swiftSettings: .swiftSettings, plugins: [ .plugin(name: SwiftLint.plugin), ]), @@ -66,3 +61,15 @@ let package = Package( checksum: "963121d6babf2bf5fd66a21ac9297e86d855cbc9d28322790646b88dceca00f1"), ] ) + +extension Array where Element == SwiftSetting { + + static var swiftSettings: [SwiftSetting] { + if let value: String = Context.environment["SWIFT_STRICT_CONCURRENCY"] { + return [.unsafeFlags(["-strict-concurrency=\(value)"])] + } else if Context.environment["SWIFT_EMIT_EXTENSION_BLOCK_SYMBOLS"] != nil { + return [.unsafeFlags(["-emit-extension-block-symbols"])] + } + return [] + } +}