From aa4a0c0d42f5013554cd15460a103039e3d8c72c Mon Sep 17 00:00:00 2001 From: Nikita Vasilev Date: Wed, 25 Dec 2024 15:04:27 +0100 Subject: [PATCH 1/4] Bump the Swift version to 6.0 --- .swiftlint.yml | 6 +++- Package.swift | 2 +- Package@swift-5.10.swift | 23 +++++++++++++ Package@swift-5.7.swift | 2 -- Package@swift-5.8.swift | 2 -- Package@swift-5.9.swift | 23 +++++++++++++ Sources/Log/Classes/Models/LogLevel.swift | 40 +++++++++++++++-------- 7 files changed, 79 insertions(+), 19 deletions(-) create mode 100644 Package@swift-5.10.swift create mode 100644 Package@swift-5.9.swift diff --git a/.swiftlint.yml b/.swiftlint.yml index 58036d3..ada4ca6 100644 --- a/.swiftlint.yml +++ b/.swiftlint.yml @@ -1,6 +1,10 @@ excluded: - Tests - Package.swift + - Package@swift-5.7.swift + - Package@swift-5.8.swift + - Package@swift-5.9.swift + - Package@swift-5.10.swift - .build # Rules @@ -130,4 +134,4 @@ nesting: type_name: max_length: warning: 40 - error: 50 \ No newline at end of file + error: 50 diff --git a/Package.swift b/Package.swift index 7db16b1..e9b38d1 100644 --- a/Package.swift +++ b/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version: 5.9 +// swift-tools-version: 6.0 // The swift-tools-version declares the minimum version of Swift required to build this package. import PackageDescription diff --git a/Package@swift-5.10.swift b/Package@swift-5.10.swift new file mode 100644 index 0000000..5f83718 --- /dev/null +++ b/Package@swift-5.10.swift @@ -0,0 +1,23 @@ +// swift-tools-version: 5.10 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +import PackageDescription + +let package = Package( + name: "Log", + platforms: [ + .macOS(.v10_15), + .iOS(.v13), + .watchOS(.v7), + .tvOS(.v13), + .visionOS(.v1), + ], + products: [ + .library(name: "Log", targets: ["Log"]), + ], + dependencies: [], + targets: [ + .target(name: "Log", dependencies: []), + .testTarget(name: "LogTests", dependencies: ["Log"]), + ] +) diff --git a/Package@swift-5.7.swift b/Package@swift-5.7.swift index cdef89b..da68fea 100644 --- a/Package@swift-5.7.swift +++ b/Package@swift-5.7.swift @@ -1,6 +1,5 @@ // swift-tools-version: 5.7 // The swift-tools-version declares the minimum version of Swift required to build this package. -// swiftlint:disable all import PackageDescription @@ -21,4 +20,3 @@ let package = Package( .testTarget(name: "LogTests", dependencies: ["Log"]), ] ) -// swiftlint:enable all diff --git a/Package@swift-5.8.swift b/Package@swift-5.8.swift index 6de492d..fdb3ce5 100644 --- a/Package@swift-5.8.swift +++ b/Package@swift-5.8.swift @@ -1,6 +1,5 @@ // swift-tools-version: 5.8 // The swift-tools-version declares the minimum version of Swift required to build this package. -// swiftlint:disable all import PackageDescription @@ -21,4 +20,3 @@ let package = Package( .testTarget(name: "LogTests", dependencies: ["Log"]), ] ) -// swiftlint:enable all diff --git a/Package@swift-5.9.swift b/Package@swift-5.9.swift new file mode 100644 index 0000000..7db16b1 --- /dev/null +++ b/Package@swift-5.9.swift @@ -0,0 +1,23 @@ +// swift-tools-version: 5.9 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +import PackageDescription + +let package = Package( + name: "Log", + platforms: [ + .macOS(.v10_15), + .iOS(.v13), + .watchOS(.v7), + .tvOS(.v13), + .visionOS(.v1), + ], + products: [ + .library(name: "Log", targets: ["Log"]), + ], + dependencies: [], + targets: [ + .target(name: "Log", dependencies: []), + .testTarget(name: "LogTests", dependencies: ["Log"]), + ] +) diff --git a/Sources/Log/Classes/Models/LogLevel.swift b/Sources/Log/Classes/Models/LogLevel.swift index 5a68b78..6cda93e 100644 --- a/Sources/Log/Classes/Models/LogLevel.swift +++ b/Sources/Log/Classes/Models/LogLevel.swift @@ -22,19 +22,33 @@ public struct LogLevel: OptionSet { public typealias RawValue = UInt - /// Creates a new default `.off` instance with a bitmask of `1 << 0`. - public static let off = LogLevel(rawValue: offBitmask) - /// Creates a new default `.debug` instance with a bitmask of `1 << 1`. - public static let debug = LogLevel(rawValue: debugBitmask) - /// Creates a new default `.info` instance with a bitmask of `1 << 2`. - public static let info = LogLevel(rawValue: infoBitmask) - /// Creates a new default `.error` instance with a bitmask of `1 << 3`. - public static let error = LogLevel(rawValue: errorBitmask) - /// Creates a new default `.fault` instance with a bitmask of `1 << 4`. - public static let fault = LogLevel(rawValue: faultBitmask) - /// Creates a new default `.error` instance. - public static let all = LogLevel(rawValue: allBitmask) - + #if swift(>=6.0) + /// Creates a new default `.off` instance with a bitmask of `1 << 0`. + public nonisolated(unsafe) static let off = LogLevel(rawValue: offBitmask) + /// Creates a new default `.debug` instance with a bitmask of `1 << 1`. + public nonisolated(unsafe) static let debug = LogLevel(rawValue: debugBitmask) + /// Creates a new default `.info` instance with a bitmask of `1 << 2`. + public nonisolated(unsafe) static let info = LogLevel(rawValue: infoBitmask) + /// Creates a new default `.error` instance with a bitmask of `1 << 3`. + public nonisolated(unsafe) static let error = LogLevel(rawValue: errorBitmask) + /// Creates a new default `.fault` instance with a bitmask of `1 << 4`. + public nonisolated(unsafe) static let fault = LogLevel(rawValue: faultBitmask) + /// Creates a new default `.error` instance. + public nonisolated(unsafe) static let all = LogLevel(rawValue: allBitmask) + #else + /// Creates a new default `.off` instance with a bitmask of `1 << 0`. + public static let off = LogLevel(rawValue: offBitmask) + /// Creates a new default `.debug` instance with a bitmask of `1 << 1`. + public static let debug = LogLevel(rawValue: debugBitmask) + /// Creates a new default `.info` instance with a bitmask of `1 << 2`. + public static let info = LogLevel(rawValue: infoBitmask) + /// Creates a new default `.error` instance with a bitmask of `1 << 3`. + public static let error = LogLevel(rawValue: errorBitmask) + /// Creates a new default `.fault` instance with a bitmask of `1 << 4`. + public static let fault = LogLevel(rawValue: faultBitmask) + /// Creates a new default `.error` instance. + public static let all = LogLevel(rawValue: allBitmask) + #endif /// Returns the raw bitmask value of the LogLevel and satisfies the `RawRepresentable` protocol. public let rawValue: RawValue From 40a359d67ac227945ff8ce521d8d9c0b932b82e6 Mon Sep 17 00:00:00 2001 From: Nikita Vasilev Date: Wed, 25 Dec 2024 15:06:39 +0100 Subject: [PATCH 2/4] Update `ci.yml` --- .github/workflows/ci.yml | 102 +++++++++++++++++++++++++++------------ 1 file changed, 70 insertions(+), 32 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 28d58cd..d68cee0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -34,6 +34,12 @@ jobs: fail-fast: false matrix: include: + - xcode: "Xcode_16.0" + runsOn: macOS-14 + name: "macOS 14, Xcode 16.0, Swift 6.0" + - xcode: "Xcode_15.4" + runsOn: macOS-14 + name: "macOS 14, Xcode 15.4, Swift 5.10" - xcode: "Xcode_15.0" runsOn: macos-13 name: "macOS 13, Xcode 15.0, Swift 5.9.0" @@ -44,16 +50,12 @@ jobs: - uses: actions/checkout@v3 - name: ${{ matrix.name }} run: xcodebuild test -scheme "Log" -destination "platform=macOS" clean -enableCodeCoverage YES -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1 - - name: Upload coverage reports to Codecov - uses: codecov/codecov-action@v3.1.0 + - name: Upload test coverage reports to Codecov + uses: space-code/oss-common-actions/.github/actions/upload_test_coverage_report@main with: + scheme_name: Log + filename: ${{ matrix.name }} token: ${{ secrets.CODECOV_TOKEN }} - xcode: true - xcode_archive_path: test_output/${{ matrix.name }}.xcresult - - uses: actions/upload-artifact@v4 - with: - name: ${{ matrix.name }} - path: test_output iOS: name: ${{ matrix.name }} @@ -65,6 +67,18 @@ jobs: fail-fast: false matrix: include: + - destination: "OS=18.1,name=iPhone 16 Pro" + name: "iOS 18.1" + xcode: "Xcode_16.1" + runsOn: macOS-14 + - destination: "OS=18.0,name=iPhone 16 Pro" + name: "iOS 18.0" + xcode: "Xcode_16.0" + runsOn: macOS-14 + - destination: "OS=17.5,name=iPhone 15 Pro" + name: "iOS 17.5" + xcode: "Xcode_15.4" + runsOn: macOS-14 - destination: "OS=17.0.1,name=iPhone 14 Pro" name: "iOS 17.0.1" xcode: "Xcode_15.0" @@ -77,10 +91,12 @@ jobs: - uses: actions/checkout@v3 - name: ${{ matrix.name }} run: xcodebuild test -scheme "Log" -destination "${{ matrix.destination }}" clean -enableCodeCoverage YES -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1 - - uses: actions/upload-artifact@v4 + - name: Upload test coverage reports to Codecov + uses: space-code/oss-common-actions/.github/actions/upload_test_coverage_report@main with: - name: ${{ matrix.name }} - path: test_output + scheme_name: Log + filename: ${{ matrix.name }} + token: ${{ secrets.CODECOV_TOKEN }} tvOS: name: ${{ matrix.name }} @@ -92,6 +108,18 @@ jobs: fail-fast: false matrix: include: + - destination: "OS=18.1,name=Apple TV" + name: "tvOS 18.1" + xcode: "Xcode_16.1" + runsOn: macOS-14 + - destination: "OS=18.0,name=Apple TV" + name: "tvOS 18.0" + xcode: "Xcode_16.0" + runsOn: macOS-14 + - destination: "OS=17.5,name=Apple TV" + name: "tvOS 17.5" + xcode: "Xcode_15.4" + runsOn: macOS-14 - destination: "OS=17.0,name=Apple TV" name: "tvOS 17.0" xcode: "Xcode_15.0" @@ -104,16 +132,12 @@ jobs: - uses: actions/checkout@v3 - name: ${{ matrix.name }} run: xcodebuild test -scheme "Log" -destination "${{ matrix.destination }}" clean -enableCodeCoverage YES -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1 - - name: Upload coverage reports to Codecov - uses: codecov/codecov-action@v3.1.0 + - name: Upload test coverage reports to Codecov + uses: space-code/oss-common-actions/.github/actions/upload_test_coverage_report@main with: + scheme_name: Log + filename: ${{ matrix.name }} token: ${{ secrets.CODECOV_TOKEN }} - xcode: true - xcode_archive_path: test_output/${{ matrix.name }}.xcresult - - uses: actions/upload-artifact@v4 - with: - name: ${{ matrix.name }} - path: test_output watchOS: name: ${{ matrix.name }} @@ -125,6 +149,18 @@ jobs: fail-fast: false matrix: include: + - destination: "OS=11.1,name=Apple Watch Series 10 (46mm)" + name: "watchOS 11.1" + xcode: "Xcode_16.1" + runsOn: macOS-14 + - destination: "OS=11.0,name=Apple Watch Series 10 (46mm)" + name: "watchOS 11.0" + xcode: "Xcode_16.0" + runsOn: macOS-14 + - destination: "OS=10.5,name=Apple Watch Series 9 (45mm)" + name: "watchOS 10.5" + xcode: "Xcode_15.4" + runsOn: macOS-14 - destination: "OS=10.0,name=Apple Watch Series 9 (45mm)" name: "watchOS 10.0" xcode: "Xcode_15.0" @@ -137,16 +173,12 @@ jobs: - uses: actions/checkout@v3 - name: ${{ matrix.name }} run: xcodebuild test -scheme "Log" -destination "${{ matrix.destination }}" clean -enableCodeCoverage YES -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1 - - name: Upload coverage reports to Codecov - uses: codecov/codecov-action@v3.1.0 + - name: Upload test coverage reports to Codecov + uses: space-code/oss-common-actions/.github/actions/upload_test_coverage_report@main with: + scheme_name: Log + filename: ${{ matrix.name }} token: ${{ secrets.CODECOV_TOKEN }} - xcode: true - xcode_archive_path: test_output/${{ matrix.name }}.xcresult - - uses: actions/upload-artifact@v4 - with: - name: ${{ matrix.name }} - path: test_output spm: name: ${{ matrix.name }} @@ -158,10 +190,16 @@ jobs: fail-fast: false matrix: include: - - name: "Xcode 15" + - name: "macOS 14, SPM 6.0.2 Test" + xcode: "Xcode_16.1" + runsOn: macOS-14 + - name: "macOS 14, SPM 6.0.0 Test" + xcode: "Xcode_16.0" + runsOn: macOS-14 + - name: "macOS 14, SPM 5.9.0 Test" xcode: "Xcode_15.0" - runsOn: macos-13 - - name: "Xcode 14" + runsOn: macos-14 + - name: "macOS 13, SPM 5.8.1 Test" xcode: "Xcode_14.3.1" runsOn: macos-13 steps: @@ -186,11 +224,11 @@ jobs: discover-typos: name: Discover Typos - runs-on: macOS-12 + runs-on: macOS-13 env: DEVELOPER_DIR: /Applications/Xcode_14.1.app/Contents/Developer steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Discover typos run: | export PATH="$PATH:/Library/Frameworks/Python.framework/Versions/3.11/bin" From c349361e87639568ef6d20c002d58822c7448e39 Mon Sep 17 00:00:00 2001 From: Nikita Vasilev Date: Wed, 25 Dec 2024 15:07:51 +0100 Subject: [PATCH 3/4] Update `CHANGELOG.md` --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index aa07494..3aa2677 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,10 +2,19 @@ All notable changes to this project will be documented in this file. #### 1.x Releases +- `1.2.x` Releases - [1.2.0](#120) - `1.1.x` Releases - [1.1.0](#110) - `1.0.x` Releases - [1.0.0](#100) +## [1.2.0](https://github.com/space-code/log/releases/tag/1.2.0) +Released on 2024-12-25. + +#### Added +- Bump the Swift version to 6.0. + - Added in Pull Request [#5](https://github.com/space-code/log/pull/6). + ## [1.1.0](https://github.com/space-code/log/releases/tag/1.1.0) + #### Added - Make the `logLevel` property changeable - Added in Pull Request [#5](https://github.com/space-code/log/pull/5). From b64976ff87799668acf97c6e32681c28050e4487 Mon Sep 17 00:00:00 2001 From: Nikita Vasilev Date: Wed, 25 Dec 2024 15:08:08 +0100 Subject: [PATCH 4/4] Update `README.md` --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d3d5638..87f2519 100644 --- a/README.md +++ b/README.md @@ -91,7 +91,7 @@ Once you have your Swift package set up, adding `log` as a dependency is as easy ```swift dependencies: [ - .package(url: "https://github.com/space-code/log.git", .upToNextMajor(from: "1.0.0")) + .package(url: "https://github.com/space-code/log.git", .upToNextMajor(from: "1.2.0")) ] ```