// swift-tools-version: 6.4 import PackageDescription let package = Package( name: "Localization", defaultLocalization: "en", platforms: [ .macOS(.v15), ], products: [ .library( name: "Localization", targets: [ "Localization" ] ) ], targets: [ .target( name: "Localization", path: "Sources", ), .testTarget( name: "LocalizationTests", dependencies: [ .byName(name: "Localization") ], path: "Tests", resources: [ // Copied verbatim rather than processed: the String Catalog is read as raw JSON at runtime so it // resolves identically on Darwin and Linux (which cannot compile it). .copy("Catalogs/Localizable.xcstrings") ] ), ] ) // Applied to every target: strict memory safety and warnings as errors as guardrails — deprecations stay warnings, so a // dependency update cannot break the build — plus the upcoming concurrency features Swift 7 turns on by default. for target in package.targets { target.swiftSettings = (target.swiftSettings ?? []) + [ .strictMemorySafety(), .treatAllWarnings(as: .error), .treatWarning("DeprecatedDeclaration", as: .warning), .enableUpcomingFeature("NonisolatedNonsendingByDefault"), .enableUpcomingFeature("InferIsolatedConformances"), ] }