diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..5765b7c --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,6 @@ +# Changelog + +## [0.1.0] - 2024-12-01 + +### Added +- Initial release diff --git a/Package.swift b/Package.swift index 78a522a..8b07dd1 100644 --- a/Package.swift +++ b/Package.swift @@ -5,7 +5,7 @@ import PackageDescription let package = Package( name: "swift-cli", platforms: [ - .macOS(.v12) + .macOS(.v13) ], products: [ // Individual packages - use only what you need @@ -25,61 +25,76 @@ let package = Package( .executable(name: "swift-cli-example", targets: ["SwiftCLIExample"]) ], dependencies: [ - .package(url: "https://github.com/swiftlang/swift-docc-plugin", from: "1.4.0"), + .package(url: "https://github.com/swiftlang/swift-docc-plugin", from: "1.4.3"), .package(url: "https://github.com/apple/swift-atomics.git", from: "1.2.0") ], targets: [ // MARK: - Foundation Layer - /// Pure ANSI escape code generation - zero dependencies - .target(name: "ANSI"), + .target( + name: "ANSI", + swiftSettings: [ + .enableUpcomingFeature("StrictConcurrency") + ] + ), // MARK: - Core Layer - /// Low-level terminal operations: I/O, raw mode, capabilities .target( name: "TerminalCore", dependencies: [ "ANSI", .product(name: "Atomics", package: "swift-atomics") + ], + swiftSettings: [ + .enableUpcomingFeature("StrictConcurrency") ] ), // MARK: - Feature Packages - /// Colors, text styles, chainable styling API .target( name: "TerminalStyle", - dependencies: ["ANSI", "TerminalCore"] + dependencies: ["ANSI", "TerminalCore"], + swiftSettings: [ + .enableUpcomingFeature("StrictConcurrency") + ] ), - /// Keyboard input, mouse events, line editing .target( name: "TerminalInput", - dependencies: ["ANSI", "TerminalCore", "TerminalStyle"] + dependencies: ["ANSI", "TerminalCore", "TerminalStyle"], + swiftSettings: [ + .enableUpcomingFeature("StrictConcurrency") + ] ), - /// Boxes, tables, grids, panels, tree views .target( name: "TerminalLayout", - dependencies: ["ANSI", "TerminalCore", "TerminalStyle"] + dependencies: ["ANSI", "TerminalCore", "TerminalStyle"], + swiftSettings: [ + .enableUpcomingFeature("StrictConcurrency") + ] ), - /// Progress bars, spinners, prompts, selection menus .target( name: "TerminalComponents", - dependencies: ["ANSI", "TerminalCore", "TerminalStyle", "TerminalInput"] + dependencies: ["ANSI", "TerminalCore", "TerminalStyle", "TerminalInput"], + swiftSettings: [ + .enableUpcomingFeature("StrictConcurrency") + ] ), - /// Terminal images: iTerm2, Kitty, Sixel protocols .target( name: "TerminalGraphics", - dependencies: ["ANSI", "TerminalCore"] + dependencies: ["ANSI", "TerminalCore"], + swiftSettings: [ + .enableUpcomingFeature("StrictConcurrency") + ] ), // MARK: - High-Level Framework - /// Full TUI framework with SwiftUI-like API .target( name: "TerminalUI", dependencies: [ @@ -90,12 +105,14 @@ let package = Package( "TerminalLayout", "TerminalComponents", "TerminalGraphics" + ], + swiftSettings: [ + .enableUpcomingFeature("StrictConcurrency") ] ), // MARK: - Umbrella - /// Everything in one import .target( name: "CLI", dependencies: [ @@ -107,6 +124,9 @@ let package = Package( "TerminalComponents", "TerminalGraphics", "TerminalUI" + ], + swiftSettings: [ + .enableUpcomingFeature("StrictConcurrency") ] ), @@ -114,18 +134,69 @@ let package = Package( .executableTarget( name: "SwiftCLIExample", - dependencies: ["CLI"] + dependencies: ["CLI"], + swiftSettings: [ + .enableUpcomingFeature("StrictConcurrency") + ] ), // MARK: - Tests - .testTarget(name: "ANSITests", dependencies: ["ANSI"]), - .testTarget(name: "TerminalCoreTests", dependencies: ["TerminalCore"]), - .testTarget(name: "TerminalStyleTests", dependencies: ["TerminalStyle"]), - .testTarget(name: "TerminalInputTests", dependencies: ["TerminalInput"]), - .testTarget(name: "TerminalLayoutTests", dependencies: ["TerminalLayout"]), - .testTarget(name: "TerminalComponentsTests", dependencies: ["TerminalComponents"]), - .testTarget(name: "TerminalGraphicsTests", dependencies: ["TerminalGraphics"]), - .testTarget(name: "TerminalUITests", dependencies: ["TerminalUI"]) + .testTarget( + name: "ANSITests", + dependencies: ["ANSI"], + swiftSettings: [ + .enableUpcomingFeature("StrictConcurrency") + ] + ), + .testTarget( + name: "TerminalCoreTests", + dependencies: ["TerminalCore"], + swiftSettings: [ + .enableUpcomingFeature("StrictConcurrency") + ] + ), + .testTarget( + name: "TerminalStyleTests", + dependencies: ["TerminalStyle"], + swiftSettings: [ + .enableUpcomingFeature("StrictConcurrency") + ] + ), + .testTarget( + name: "TerminalInputTests", + dependencies: ["TerminalInput"], + swiftSettings: [ + .enableUpcomingFeature("StrictConcurrency") + ] + ), + .testTarget( + name: "TerminalLayoutTests", + dependencies: ["TerminalLayout"], + swiftSettings: [ + .enableUpcomingFeature("StrictConcurrency") + ] + ), + .testTarget( + name: "TerminalComponentsTests", + dependencies: ["TerminalComponents"], + swiftSettings: [ + .enableUpcomingFeature("StrictConcurrency") + ] + ), + .testTarget( + name: "TerminalGraphicsTests", + dependencies: ["TerminalGraphics"], + swiftSettings: [ + .enableUpcomingFeature("StrictConcurrency") + ] + ), + .testTarget( + name: "TerminalUITests", + dependencies: ["TerminalUI"], + swiftSettings: [ + .enableUpcomingFeature("StrictConcurrency") + ] + ) ] )