From 3b1c41973d543e12a9ca3eef3ad996c4e5885197 Mon Sep 17 00:00:00 2001 From: Dan Federman Date: Sun, 22 Sep 2024 20:44:23 -0700 Subject: [PATCH] Adopt Swift 6. Drop support for Xcode 15 and below --- .github/workflows/ci.yml | 155 ++---------- .ruby-version | 2 +- CacheAdvance.podspec | 2 +- Gemfile | 2 +- Gemfile.lock | 32 +-- Package.swift | 27 ++- Package@swift-5.7.swift | 48 ---- Package@swift-5.8.swift | 48 ---- Package@swift-5.9.swift | 49 ---- README.md | 8 +- Scripts/build.swift | 227 +++--------------- Scripts/github/prepare-simulators.sh | 16 -- Sources/CADCacheAdvance/CADCacheAdvance.swift | 4 +- .../CacheAdvance/BigEndianHostSwappable.swift | 2 +- Sources/CacheAdvance/CacheHeaderHandle.swift | 4 +- .../CacheAdvance/FileHandleExtensions.swift | 6 +- Sources/CacheAdvance/FileHeader.swift | 24 +- .../CacheAdvanceTests/CacheAdvanceTests.swift | 6 +- 18 files changed, 126 insertions(+), 536 deletions(-) delete mode 100644 Package@swift-5.7.swift delete mode 100644 Package@swift-5.8.swift delete mode 100644 Package@swift-5.9.swift delete mode 100755 Scripts/github/prepare-simulators.sh diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c3857bd..c1c6679 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,147 +9,41 @@ on: jobs: pod-lint: name: Pod Lint - runs-on: ubuntu-20.04 - strategy: - matrix: - swift_version: [ - '5.6', - '5.7', - '5.8', - '5.9', - '5.10', - ] - fail-fast: false + runs-on: macOS-14 steps: - - uses: ruby/setup-ruby@v1 - with: - ruby-version: '3.3.1' - name: Checkout Repo uses: actions/checkout@v4 - - name: Setup Swift Environment - uses: swift-actions/setup-swift@v2 - with: - swift-version: ${{ matrix.swift_version }} - - name: Bundle Install - run: bundle install - - name: Lint Podspec - run: bundle exec pod lib lint --verbose --fail-fast --swift-version=${{ matrix.swift_version }} - spm-13: - name: Build Xcode 13 - runs-on: macOS-12 - strategy: - matrix: - platforms: [ - 'iOS_15,watchOS_8', - 'macOS_12,tvOS_15', - ] - fail-fast: false - steps: - uses: ruby/setup-ruby@v1 with: - ruby-version: '3.3.1' - - name: Checkout Repo - uses: actions/checkout@v4 - - name: Bundle Install - run: bundle install + ruby-version: '3.3.5' + bundler-cache: true - name: Select Xcode Version - run: sudo xcode-select --switch /Applications/Xcode_13.4.1.app/Contents/Developer - - name: Prepare Simulator Runtimes - run: Scripts/github/prepare-simulators.sh ${{ matrix.platforms }} - - name: Build and Test Framework - run: Scripts/build.swift ${{ matrix.platforms }} - - name: Prepare Coverage Reports - run: ./Scripts/prepare-coverage-reports.sh - - name: Upload Coverage Reports - if: success() - uses: codecov/codecov-action@v4 - with: - token: ${{ secrets.CODECOV_TOKEN }} - spm-13-swift: - name: Swift Build Xcode 13 - runs-on: macOS-12 - steps: - - uses: ruby/setup-ruby@v1 - with: - ruby-version: '3.3.1' - - name: Checkout Repo - uses: actions/checkout@v4 - - name: Bundle Install - run: bundle install - - name: Select Xcode Version - run: sudo xcode-select --switch /Applications/Xcode_13.4.1.app/Contents/Developer - - name: Build and Test Framework - run: xcrun swift test -c release -Xswiftc -enable-testing - spm-14: - name: Build Xcode 14 - runs-on: macOS-12 + run: sudo xcode-select --switch /Applications/Xcode_16.app/Contents/Developer + - name: Lint Podspec + run: bundle exec pod lib lint --verbose --fail-fast --swift-version=6.0 + spm-16: + name: Build Xcode 16 + runs-on: macOS-14 strategy: matrix: platforms: [ - 'iOS_16,watchOS_9', - 'macOS_12,tvOS_16', + 'iOS_18,watchOS_11', + 'macOS_15,tvOS_18', + 'macCatalyst_15', + 'visionOS_2' ] fail-fast: false steps: - - uses: ruby/setup-ruby@v1 - with: - ruby-version: '3.3.1' - - name: Checkout Repo - uses: actions/checkout@v4 - - name: Bundle Install - run: bundle install - - name: Select Xcode Version - run: sudo xcode-select --switch /Applications/Xcode_14.0.1.app/Contents/Developer - - name: Prepare Simulator Runtimes - run: Scripts/github/prepare-simulators.sh ${{ matrix.platforms }} - - name: Build and Test Framework - run: Scripts/build.swift ${{ matrix.platforms }} - - name: Prepare Coverage Reports - run: ./Scripts/prepare-coverage-reports.sh - - name: Upload Coverage Reports - if: success() - uses: codecov/codecov-action@v4 - with: - token: ${{ secrets.CODECOV_TOKEN }} - spm-14-swift: - name: Swift Build Xcode 14 - runs-on: macOS-12 - steps: - - uses: ruby/setup-ruby@v1 - with: - ruby-version: '3.3.1' - name: Checkout Repo uses: actions/checkout@v4 - - name: Bundle Install - run: bundle install - - name: Select Xcode Version - run: sudo xcode-select --switch /Applications/Xcode_14.0.1.app/Contents/Developer - - name: Build and Test Framework - run: xcrun swift test -c release -Xswiftc -enable-testing - spm-15: - name: Build Xcode 15 - runs-on: macOS-14 - strategy: - matrix: - platforms: [ - 'iOS_17,watchOS_10', - 'macOS_14,tvOS_17', - 'macCatalyst_14', - 'visionOS_1' - ] - fail-fast: false - steps: - uses: ruby/setup-ruby@v1 with: - ruby-version: '3.3.1' - - name: Checkout Repo - uses: actions/checkout@v4 - - name: Bundle Install - run: bundle install + ruby-version: '3.3.5' + bundler-cache: true - name: Select Xcode Version - run: sudo xcode-select --switch /Applications/Xcode_15.2.app/Contents/Developer + run: sudo xcode-select --switch /Applications/Xcode_16.app/Contents/Developer - name: Download visionOS - if: matrix.platforms == 'visionOS_1' + if: matrix.platforms == 'visionOS_2' run: | sudo xcodebuild -runFirstLaunch sudo xcrun simctl list @@ -164,18 +58,17 @@ jobs: uses: codecov/codecov-action@v4 with: token: ${{ secrets.CODECOV_TOKEN }} - spm-15-swift: - name: Swift Build Xcode 15 + spm-16-swift: + name: Swift Build Xcode 16 runs-on: macOS-14 steps: - - uses: ruby/setup-ruby@v1 - with: - ruby-version: '3.3.1' - name: Checkout Repo uses: actions/checkout@v4 - - name: Bundle Install - run: bundle install + - uses: ruby/setup-ruby@v1 + with: + ruby-version: '3.3.5' + bundler-cache: true - name: Select Xcode Version - run: sudo xcode-select --switch /Applications/Xcode_15.2.app/Contents/Developer + run: sudo xcode-select --switch /Applications/Xcode_16.app/Contents/Developer - name: Build and Test Framework run: xcrun swift test -c release -Xswiftc -enable-testing diff --git a/.ruby-version b/.ruby-version index 712bd5a..0163af7 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -3.3.1 \ No newline at end of file +3.3.5 \ No newline at end of file diff --git a/CacheAdvance.podspec b/CacheAdvance.podspec index f18966d..20111e3 100644 --- a/CacheAdvance.podspec +++ b/CacheAdvance.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'CacheAdvance' - s.version = '2.1.0' + s.version = '3.0.0' s.license = 'Apache License, Version 2.0' s.summary = 'A performant cache for logging systems. CacheAdvance persists log events 30x faster than SQLite.' s.homepage = 'https://github.com/dfed/CacheAdvance' diff --git a/Gemfile b/Gemfile index 74533d4..3505460 100644 --- a/Gemfile +++ b/Gemfile @@ -1,4 +1,4 @@ -ruby '3.3.1' +ruby '3.3.5' source 'https://rubygems.org' diff --git a/Gemfile.lock b/Gemfile.lock index d0d8ae5..3180c6a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -5,18 +5,19 @@ GEM base64 nkf rexml - activesupport (7.1.3.3) + activesupport (7.2.1) base64 bigdecimal - concurrent-ruby (~> 1.0, >= 1.0.2) + concurrent-ruby (~> 1.0, >= 1.3.1) connection_pool (>= 2.2.5) drb i18n (>= 1.6, < 2) + logger (>= 1.4.2) minitest (>= 5.1) - mutex_m - tzinfo (~> 2.0) - addressable (2.8.6) - public_suffix (>= 2.0.2, < 6.0) + securerandom (>= 0.3) + tzinfo (~> 2.0, >= 2.0.5) + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) algoliasearch (1.27.5) httpclient (~> 2.8, >= 2.8.3) json (>= 1.5.1) @@ -62,32 +63,31 @@ GEM netrc (~> 0.11) cocoapods-try (1.2.0) colored2 (3.1.2) - concurrent-ruby (1.2.3) + concurrent-ruby (1.3.4) connection_pool (2.4.1) drb (2.2.1) escape (0.0.4) ethon (0.16.0) ffi (>= 1.15.0) - ffi (1.16.3) + ffi (1.17.0) fourflusher (2.3.1) fuzzy_match (2.0.4) gh_inspector (1.1.3) httpclient (2.8.3) - i18n (1.14.5) + i18n (1.14.6) concurrent-ruby (~> 1.0) json (2.7.2) - minitest (5.23.0) + logger (1.6.1) + minitest (5.25.1) molinillo (0.8.0) - mutex_m (0.2.0) nanaimo (0.3.0) nap (1.1.0) netrc (0.11.0) nkf (0.2.0) public_suffix (4.0.7) - rexml (3.3.6) - strscan + rexml (3.3.7) ruby-macho (2.5.1) - strscan (3.1.0) + securerandom (0.3.1) typhoeus (1.4.1) ethon (>= 0.9.0) tzinfo (2.0.6) @@ -107,7 +107,7 @@ DEPENDENCIES cocoapods (~> 1.15.0) RUBY VERSION - ruby 3.3.1p55 + ruby 3.3.5p94 BUNDLED WITH - 2.4.12 + 2.5.16 diff --git a/Package.swift b/Package.swift index e243470..497befb 100644 --- a/Package.swift +++ b/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version:5.6 +// swift-tools-version:6.0 // The swift-tools-version declares the minimum version of Swift required to build this package. import PackageDescription @@ -25,24 +25,39 @@ let package = Package( targets: [ .target( name: "CacheAdvance", - swiftSettings: [.define("SWIFT_PACKAGE_MANAGER")] + swiftSettings: [ + .swiftLanguageMode(.v6), + .define("SWIFT_PACKAGE_MANAGER") + ] ), .testTarget( name: "CacheAdvanceTests", - dependencies: ["CacheAdvance", "LorumIpsum"] + dependencies: ["CacheAdvance", "LorumIpsum"], + swiftSettings: [ + .swiftLanguageMode(.v6), + ] ), .target( name: "CADCacheAdvance", dependencies: ["CacheAdvance"], - swiftSettings: [.define("SWIFT_PACKAGE_MANAGER")] + swiftSettings: [ + .swiftLanguageMode(.v6), + .define("SWIFT_PACKAGE_MANAGER") + ] ), .target( name: "LorumIpsum", - dependencies: [] + dependencies: [], + swiftSettings: [ + .swiftLanguageMode(.v6), + ] ), .testTarget( name: "CADCacheAdvanceTests", - dependencies: ["CADCacheAdvance", "LorumIpsum"] + dependencies: ["CADCacheAdvance", "LorumIpsum"], + swiftSettings: [ + .swiftLanguageMode(.v6), + ] ), ] ) diff --git a/Package@swift-5.7.swift b/Package@swift-5.7.swift deleted file mode 100644 index c14ad8a..0000000 --- a/Package@swift-5.7.swift +++ /dev/null @@ -1,48 +0,0 @@ -// swift-tools-version:5.7 -// The swift-tools-version declares the minimum version of Swift required to build this package. - -import PackageDescription - -let package = Package( - name: "CacheAdvance", - platforms: [ - .iOS(.v13), - .tvOS(.v13), - .watchOS(.v6), - .macOS(.v10_15), - .macCatalyst(.v13), - ], - products: [ - .library( - name: "CacheAdvance", - targets: ["CacheAdvance"] - ), - .library( - name: "CADCacheAdvance", - targets: ["CADCacheAdvance"] - ), - ], - targets: [ - .target( - name: "CacheAdvance", - swiftSettings: [.define("SWIFT_PACKAGE_MANAGER")] - ), - .testTarget( - name: "CacheAdvanceTests", - dependencies: ["CacheAdvance", "LorumIpsum"] - ), - .target( - name: "CADCacheAdvance", - dependencies: ["CacheAdvance"], - swiftSettings: [.define("SWIFT_PACKAGE_MANAGER")] - ), - .target( - name: "LorumIpsum", - dependencies: [] - ), - .testTarget( - name: "CADCacheAdvanceTests", - dependencies: ["CADCacheAdvance", "LorumIpsum"] - ), - ] -) diff --git a/Package@swift-5.8.swift b/Package@swift-5.8.swift deleted file mode 100644 index 8db6ca4..0000000 --- a/Package@swift-5.8.swift +++ /dev/null @@ -1,48 +0,0 @@ -// swift-tools-version:5.8 -// The swift-tools-version declares the minimum version of Swift required to build this package. - -import PackageDescription - -let package = Package( - name: "CacheAdvance", - platforms: [ - .iOS(.v13), - .tvOS(.v13), - .watchOS(.v6), - .macOS(.v10_15), - .macCatalyst(.v13), - ], - products: [ - .library( - name: "CacheAdvance", - targets: ["CacheAdvance"] - ), - .library( - name: "CADCacheAdvance", - targets: ["CADCacheAdvance"] - ), - ], - targets: [ - .target( - name: "CacheAdvance", - swiftSettings: [.define("SWIFT_PACKAGE_MANAGER")] - ), - .testTarget( - name: "CacheAdvanceTests", - dependencies: ["CacheAdvance", "LorumIpsum"] - ), - .target( - name: "CADCacheAdvance", - dependencies: ["CacheAdvance"], - swiftSettings: [.define("SWIFT_PACKAGE_MANAGER")] - ), - .target( - name: "LorumIpsum", - dependencies: [] - ), - .testTarget( - name: "CADCacheAdvanceTests", - dependencies: ["CADCacheAdvance", "LorumIpsum"] - ), - ] -) diff --git a/Package@swift-5.9.swift b/Package@swift-5.9.swift deleted file mode 100644 index 898f196..0000000 --- a/Package@swift-5.9.swift +++ /dev/null @@ -1,49 +0,0 @@ -// 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: "CacheAdvance", - platforms: [ - .iOS(.v13), - .tvOS(.v13), - .watchOS(.v6), - .macOS(.v10_15), - .macCatalyst(.v13), - .visionOS(.v1), - ], - products: [ - .library( - name: "CacheAdvance", - targets: ["CacheAdvance"] - ), - .library( - name: "CADCacheAdvance", - targets: ["CADCacheAdvance"] - ), - ], - targets: [ - .target( - name: "CacheAdvance", - swiftSettings: [.define("SWIFT_PACKAGE_MANAGER")] - ), - .testTarget( - name: "CacheAdvanceTests", - dependencies: ["CacheAdvance", "LorumIpsum"] - ), - .target( - name: "CADCacheAdvance", - dependencies: ["CacheAdvance"], - swiftSettings: [.define("SWIFT_PACKAGE_MANAGER")] - ), - .target( - name: "LorumIpsum", - dependencies: [] - ), - .testTarget( - name: "CADCacheAdvanceTests", - dependencies: ["CADCacheAdvance", "LorumIpsum"] - ), - ] -) diff --git a/README.md b/README.md index 6f700b4..60a335d 100644 --- a/README.md +++ b/README.md @@ -78,12 +78,12 @@ The first 64bytes of a CacheAdvance is reserved for storing metadata about the f ## Requirements -* Xcode 12.4 or later. +* Xcode 16.0 or later. * iOS 13 or later. * tvOS 13 or later. * watchOS 6 or later. * macOS 10.15 or later. -* Swift 5.6 or later. +* Swift 5.10 or later. ## Installation @@ -93,7 +93,7 @@ To install CacheAdvance in your iOS project with [Swift Package Manager](https:/ ```swift dependencies: [ - .package(url: "https://github.com/dfed/CacheAdvance", from: "2.0.0"), + .package(url: "https://github.com/dfed/CacheAdvance", from: "3.0.0"), ] ``` @@ -103,7 +103,7 @@ To install CacheAdvance in your iOS project with [CocoaPods](http://cocoapods.or ``` platform :ios, '13.0' -pod 'CacheAdvance', '~> 2.0' +pod 'CacheAdvance', '~> 3.0' ``` ### Submodules diff --git a/Scripts/build.swift b/Scripts/build.swift index 4826c3c..6be0ba7 100755 --- a/Scripts/build.swift +++ b/Scripts/build.swift @@ -21,182 +21,50 @@ enum TaskError: Error { } enum Platform: String, CaseIterable, CustomStringConvertible { - case iOS_13 - case iOS_14 - case iOS_15 - case iOS_16 - case iOS_17 - case tvOS_13 - case tvOS_14 - case tvOS_15 - case tvOS_16 - case tvOS_17 - case macOS_10_15 - case macOS_11 - case macOS_12 - case macOS_13 - case macOS_14 - case macCatalyst_13 - case macCatalyst_14 - case watchOS_6 - case watchOS_7 - case watchOS_8 - case watchOS_9 - case watchOS_10 - case visionOS_1 + case iOS_18 + case tvOS_18 + case macOS_15 + case macCatalyst_15 + case watchOS_11 + case visionOS_2 var destination: String { switch self { - case .iOS_13: - return "platform=iOS Simulator,OS=13.7,name=iPad Pro (12.9-inch) (4th generation)" - case .iOS_14: - return "platform=iOS Simulator,OS=14.4,name=iPad Pro (12.9-inch) (4th generation)" - case .iOS_15: - return "platform=iOS Simulator,OS=15.5,name=iPad Pro (12.9-inch) (5th generation)" - case .iOS_16: - return "platform=iOS Simulator,OS=16.0,name=iPad Pro (12.9-inch) (5th generation)" - case .iOS_17: - return "platform=iOS Simulator,OS=17.2,name=iPad Pro (12.9-inch) (6th generation)" - - case .tvOS_13: - return "platform=tvOS Simulator,OS=13.4,name=Apple TV" - case .tvOS_14: - return "platform=tvOS Simulator,OS=14.3,name=Apple TV" - case .tvOS_15: - return "platform=tvOS Simulator,OS=15.4,name=Apple TV" - case .tvOS_16: - return "platform=tvOS Simulator,OS=16.0,name=Apple TV" - case .tvOS_17: - return "platform=tvOS Simulator,OS=17.2,name=Apple TV" - - case .macOS_10_15, - .macOS_11, - .macOS_12, - .macOS_13, - .macOS_14, - .macCatalyst_13, - .macCatalyst_14: - return "platform=OS X" - - case .watchOS_6: - return "OS=6.2.1,name=Apple Watch Series 4 - 44mm" - case .watchOS_7: - return "OS=7.2,name=Apple Watch Series 6 - 44mm" - case .watchOS_8: - return "OS=8.5,name=Apple Watch Series 6 - 44mm" - case .watchOS_9: - return "OS=9.0,name=Apple Watch Series 7 (45mm)" - case .watchOS_10: - return "OS=10.2,name=Apple Watch Series 7 (45mm)" - case .visionOS_1: - return "OS=1.0,name=Apple Vision Pro" + case .iOS_18: + "platform=iOS Simulator,OS=18.0,name=iPad Pro (12.9-inch) (6th generation)" + case .tvOS_18: + "platform=tvOS Simulator,OS=18.0,name=Apple TV" + case .tvOS_18: + "platform=tvOS Simulator,OS=18,name=Apple TV" + + case .macOS_15, + .macCatalyst_15: + "platform=OS X" + + case .watchOS_11: + "OS=11.0,name=Apple Watch Series 7 (45mm)" + case .visionOS_2: + "OS=2.0,name=Apple Vision Pro" } } var sdk: String { switch self { - case .iOS_13, - .iOS_14, - .iOS_15, - .iOS_16, - .iOS_17: - return "iphonesimulator" - - case .tvOS_13, - .tvOS_14, - .tvOS_15, - .tvOS_16, - .tvOS_17: - return "appletvsimulator" - - case .macOS_10_15: - return "macosx10.15" - case .macOS_11: - return "macosx11.1" - case .macOS_12: - return "macosx12.3" - case .macOS_13: - return "macosx13.0" - case .macOS_14: - return "macosx14.2" - case .macCatalyst_13: - return "macosx13.0" - case .macCatalyst_14: - return "macosx14.2" + case .iOS_18: + "iphonesimulator" - case .watchOS_6, - .watchOS_7, - .watchOS_8, - .watchOS_9, - .watchOS_10: - return "watchsimulator" + case .tvOS_18: + "appletvsimulator" - case .visionOS_1: - return "xrsimulator" - } - } + case .macOS_15, + .macCatalyst_15: + "macosx15.0" - var shouldTest: Bool { - switch self { - case .iOS_13, - .iOS_14, - .iOS_15, - .iOS_16, - .iOS_17, - .tvOS_13, - .tvOS_14, - .tvOS_15, - .tvOS_16, - .tvOS_17, - .macOS_10_15, - .macOS_11, - .macOS_12, - .macOS_13, - .macOS_14, - .macCatalyst_13, - .macCatalyst_14, - .visionOS_1: - return true + case .watchOS_11: + "watchsimulator" - case .watchOS_6, - .watchOS_7, - .watchOS_8, - .watchOS_9, - .watchOS_10: - // watchOS does not support unit testing (yet?). - return false - } - } - - var shouldGenerateXcodeproj: Bool { - switch self { - case .iOS_13, - .iOS_14, - .tvOS_13, - .tvOS_14, - .macOS_10_15, - .macOS_11, - .watchOS_6, - .watchOS_7: - return true - - case .iOS_15, - .iOS_16, - .iOS_17, - .tvOS_15, - .tvOS_16, - .tvOS_17, - .macOS_12, - .macOS_13, - .macOS_14, - .macCatalyst_13, - .macCatalyst_14, - .watchOS_8, - .watchOS_9, - .watchOS_10, - .visionOS_1: - // Xcode 13+ do not require xcodeproj generation - return false + case .visionOS_2: + "xrsimulator" } } @@ -224,17 +92,6 @@ for rawPlatform in rawPlatforms { throw TaskError.code(1) } - if isFirstRun, platform.shouldGenerateXcodeproj { - // Generate the xcode project if we need it - try execute(commandPath: "/usr/bin/swift", arguments: ["package", "generate-xcodeproj", "--output=generated/"]) - - // The generate-xcodeproj command has a bug where the test deployment target is above the minimum deployment target for the project. Fix it with sed. - try execute(commandPath: "/usr/bin/sed", arguments: ["-i", "-e", "s/IPHONEOS_DEPLOYMENT_TARGET = \"14.0\"/IPHONEOS_DEPLOYMENT_TARGET = \"12.0\"/g", "generated/CacheAdvance.xcodeproj/project.pbxproj"]) - try execute(commandPath: "/usr/bin/sed", arguments: ["-i", "-e", "s/TVOS_DEPLOYMENT_TARGET = \"14.0\"/TVOS_DEPLOYMENT_TARGET = \"12.0\"/g", "generated/CacheAdvance.xcodeproj/project.pbxproj"]) - try execute(commandPath: "/usr/bin/sed", arguments: ["-i", "-e", "s/WATCHOS_DEPLOYMENT_TARGET = \"7.0\"/WATCHOS_DEPLOYMENT_TARGET = \"5.0\"/g", "generated/CacheAdvance.xcodeproj/project.pbxproj"]) - try execute(commandPath: "/usr/bin/sed", arguments: ["-i", "-e", "s/MACOSX_DEPLOYMENT_TARGET = \"11.0\"/MACOSX_DEPLOYMENT_TARGET = \"11.0\"/g", "generated/CacheAdvance.xcodeproj/project.pbxproj"]) - } - var xcodeBuildArguments = [ "-scheme", "CacheAdvance-Package", "-sdk", platform.sdk, @@ -242,28 +99,14 @@ for rawPlatform in rawPlatforms { "-PBXBuildsContinueAfterErrors=0", "OTHER_SWIFT_FLAGS=-warnings-as-errors", ] - if platform.shouldGenerateXcodeproj { - // Point at the generated project - xcodeBuildArguments.append("-project") - xcodeBuildArguments.append("generated/CacheAdvance.xcodeproj") - // Set the configuration to be release – this configuration is not supported when running xcodebuild without a xcodeproj file. - xcodeBuildArguments.append("-configuration") - xcodeBuildArguments.append("Release") - // Set a compiler flag to enable a xcodeproj-specific build flag. - xcodeBuildArguments.append("OTHER_CFLAGS='-DGENERATED_XCODE_PROJECT'") - } if !platform.destination.isEmpty { xcodeBuildArguments.append("-destination") xcodeBuildArguments.append(platform.destination) } - if platform.shouldTest { - xcodeBuildArguments.append("-enableCodeCoverage") - xcodeBuildArguments.append("YES") - } + xcodeBuildArguments.append("-enableCodeCoverage") + xcodeBuildArguments.append("YES") xcodeBuildArguments.append("build") - if platform.shouldTest { - xcodeBuildArguments.append("test") - } + xcodeBuildArguments.append("test") try execute(commandPath: "/usr/bin/xcodebuild", arguments: xcodeBuildArguments) isFirstRun = false diff --git a/Scripts/github/prepare-simulators.sh b/Scripts/github/prepare-simulators.sh deleted file mode 100755 index ce1a5c0..0000000 --- a/Scripts/github/prepare-simulators.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash -l -set -ex - -IFS=','; PLATFORMS=$(echo $1); unset IFS - -sudo mkdir -p /Library/Developer/CoreSimulator/Profiles/Runtimes - -if [[ ${PLATFORMS[*]} =~ 'iOS_13' ]]; then - sudo ln -s /Applications/Xcode_11.7.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime /Library/Developer/CoreSimulator/Profiles/Runtimes/iOS\ 13.7.simruntime -fi - -if [[ ${PLATFORMS[*]} =~ 'tvOS_13' ]]; then - sudo ln -s /Applications/Xcode_11.7.app/Contents/Developer/Platforms/AppleTVOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/tvOS.simruntime /Library/Developer/CoreSimulator/Profiles/Runtimes/tvOS\ 13.4.simruntime -fi - -xcrun simctl list runtimes diff --git a/Sources/CADCacheAdvance/CADCacheAdvance.swift b/Sources/CADCacheAdvance/CADCacheAdvance.swift index db69f11..4ef61a8 100644 --- a/Sources/CADCacheAdvance/CADCacheAdvance.swift +++ b/Sources/CADCacheAdvance/CADCacheAdvance.swift @@ -99,7 +99,7 @@ public final class __ObjectiveCCompatibleCacheAdvanceWithGenericData: NSObject { final class PassthroughDataDecoder: MessageDecoder { func decode(_ type: T.Type, from data: Data) throws -> T where T : Decodable { // Force cast because this type is only used with a CacheAdvance type. - return data as! T + data as! T } } @@ -109,6 +109,6 @@ final class PassthroughDataDecoder: MessageDecoder { final class PassthroughDataEncoder: MessageEncoder { func encode(_ value: T) throws -> Data where T : Encodable { // Force cast because this type is only used with a CacheAdvance type. - return value as! Data + value as! Data } } diff --git a/Sources/CacheAdvance/BigEndianHostSwappable.swift b/Sources/CacheAdvance/BigEndianHostSwappable.swift index a27b784..9ab6ec1 100644 --- a/Sources/CacheAdvance/BigEndianHostSwappable.swift +++ b/Sources/CacheAdvance/BigEndianHostSwappable.swift @@ -35,7 +35,7 @@ extension BigEndianHostSwappable { /// - Parameter data: A data blob representing encodable data. Must be of length `Self.storageLength`. init(_ data: Data) { let decodedSize = data.withUnsafeBytes { - return $0.load(as: Self.self) + $0.load(as: Self.self) } self = Self.swapToHost(decodedSize) } diff --git a/Sources/CacheAdvance/CacheHeaderHandle.swift b/Sources/CacheAdvance/CacheHeaderHandle.swift index f861dde..0b8e7bd 100644 --- a/Sources/CacheAdvance/CacheHeaderHandle.swift +++ b/Sources/CacheAdvance/CacheHeaderHandle.swift @@ -188,9 +188,9 @@ final class CacheHeaderHandle { private func memoizedMetadata() throws -> Metadata { if let persistedMetadata = self.persistedMetadata { - return persistedMetadata + persistedMetadata } else { - return try Metadata(headerData: try readHeaderData()) + try Metadata(headerData: try readHeaderData()) } } diff --git a/Sources/CacheAdvance/FileHandleExtensions.swift b/Sources/CacheAdvance/FileHandleExtensions.swift index 6d66613..f1233cf 100644 --- a/Sources/CacheAdvance/FileHandleExtensions.swift +++ b/Sources/CacheAdvance/FileHandleExtensions.swift @@ -25,12 +25,12 @@ extension FileHandle { func readDataUp(toLength length: Int) throws -> Data { if #available(iOS 13.4, tvOS 13.4, watchOS 6.2, macOS 10.15.4, *) { if let data = try read(upToCount: length) { - return data + data } else { - return Data() + Data() } } else { - return try __readDataUp(toLength: length) + try __readDataUp(toLength: length) } } diff --git a/Sources/CacheAdvance/FileHeader.swift b/Sources/CacheAdvance/FileHeader.swift index 632822c..7ec117e 100644 --- a/Sources/CacheAdvance/FileHeader.swift +++ b/Sources/CacheAdvance/FileHeader.swift @@ -84,17 +84,17 @@ struct FileHeader { func data(for field: Field) -> Data { switch field { case .version: - return Data(version) + Data(version) case .maximumBytes: - return Data(maximumBytes) + Data(maximumBytes) case .overwriteOldMessages: - return Data(overwritesOldMessages) + Data(overwritesOldMessages) case .offsetInFileOfOldestMessage: - return Data(offsetInFileOfOldestMessage) + Data(offsetInFileOfOldestMessage) case .offsetInFileAtEndOfNewestMessage: - return Data(offsetInFileAtEndOfNewestMessage) + Data(offsetInFileAtEndOfNewestMessage) case .reservedSpace: - return Data(repeating: 0, count: field.storageLength) + Data(repeating: 0, count: field.storageLength) } } @@ -112,20 +112,20 @@ struct FileHeader { var storageLength: Int { switch self { case .version: - return UInt8.storageLength + UInt8.storageLength case .maximumBytes: - return Bytes.storageLength + Bytes.storageLength case .overwriteOldMessages: - return Bool.storageLength + Bool.storageLength case .offsetInFileOfOldestMessage: - return UInt64.storageLength + UInt64.storageLength case .offsetInFileAtEndOfNewestMessage: - return UInt64.storageLength + UInt64.storageLength case .reservedSpace: // Subtract from this value every time another additive field is added. // We currently have a total of 64 bytes reserved for the header. // We're currently using only 26 of them. - return 38 + 38 } } diff --git a/Tests/CacheAdvanceTests/CacheAdvanceTests.swift b/Tests/CacheAdvanceTests/CacheAdvanceTests.swift index 5e7d039..6fa78e3 100644 --- a/Tests/CacheAdvanceTests/CacheAdvanceTests.swift +++ b/Tests/CacheAdvanceTests/CacheAdvanceTests.swift @@ -106,7 +106,7 @@ final class CacheAdvanceTests: XCTestCase { overwritesOldMessages: true) func makeCache() throws -> CacheAdvance { - return CacheAdvance( + CacheAdvance( fileURL: testFileLocation, writer: try FileHandle(forWritingTo: testFileLocation), reader: try CacheReader( @@ -142,7 +142,7 @@ final class CacheAdvanceTests: XCTestCase { overwritesOldMessages: true) func makeCache() throws -> CacheAdvance { - return CacheAdvance( + CacheAdvance( fileURL: testFileLocation, writer: try FileHandle(forWritingTo: testFileLocation), reader: try CacheReader( @@ -178,7 +178,7 @@ final class CacheAdvanceTests: XCTestCase { overwritesOldMessages: true) func makeCache() throws -> CacheAdvance { - return CacheAdvance( + CacheAdvance( fileURL: testFileLocation, writer: try FileHandle(forWritingTo: testFileLocation), reader: try CacheReader(