From eb33ff89060bc5df9477913994dfe74831983e63 Mon Sep 17 00:00:00 2001 From: Max Howell Date: Fri, 28 May 2021 09:35:35 -0400 Subject: [PATCH] [ci] more; some fixes I found --- .github/workflows/cd.yml | 21 ++++++++ .github/workflows/ci.yml | 78 +++++++++++---------------- Path.swift.podspec | 16 ++++++ README.md | 16 +++--- Sources/Path+FileManager.swift | 6 ++- Sources/Path.swift | 1 + Tests/PathTests/PathTests.swift | 37 +++++++++---- Tests/PathTests/XCTestManifests.swift | 1 + 8 files changed, 106 insertions(+), 70 deletions(-) create mode 100644 .github/workflows/cd.yml create mode 100644 Path.swift.podspec diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml new file mode 100644 index 0000000..d0f4da8 --- /dev/null +++ b/.github/workflows/cd.yml @@ -0,0 +1,21 @@ +name: CD +on: + release: + types: published +jobs: + docs: + runs-on: macos-latest + steps: + - uses: actions/checkout@v2 + - uses: sersoft-gmbh/swifty-docs-action@v1 + with: + module-version: ${{ github.event.inputs.version }} + + pods: + runs-on: macos-latest + steps: + - uses: actions/checkout@v2 + - run: pod trunk push --allow-warnings + env: + COCOAPODS_TRUNK_TOKEN: ${{ secrets.COCOAPODS_TRUNK_TOKEN }} + VERSION: ${{ github.event.inputs.version }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 735d68b..b6b6372 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,5 +1,5 @@ name: CI -on: [pull_request] +on: pull_request jobs: smoke: runs-on: macos-latest @@ -8,39 +8,22 @@ jobs: - uses: actions/checkout@v2 - run: swift test --generate-linuxmain - run: git diff --exit-code - macOS: - needs: smoke - runs-on: macos-latest - strategy: - matrix: - xcode: - # - 10.3 # Swift 5.0 (doesn’t work on GHA macOS image :-/) - - 11.3 # Swift 5.1 - - ^11.4 # Swift 5.2 - # - ^12.5 # Swift 5.4 (not yet available on GHA) - steps: - - uses: actions/checkout@v2 - - name: setup-xcode - uses: maxim-lobanov/setup-xcode@v1 - with: - xcode-version: ${{ matrix.xcode }} - - run: swift --version - - run: swift test --parallel - otherOS: - needs: smoke + + apple: runs-on: macos-latest strategy: matrix: destination: - - platform=iOS Simulator,OS=latest,name=iPhone 11 + - platform=iOS Simulator,OS=latest,name=iPhone 12 - platform=tvOS Simulator,OS=latest,name=Apple TV + # - platform=watchOS Simulator,OS=latest,name=Apple Watch Series 5 - 40mm + # ^^ coming with Xcode 12.5 which is not yet available on GHA - platform=macOS steps: - uses: actions/checkout@v2 - uses: maxim-lobanov/setup-xcode@v1 with: - xcode-version: 12 # Swift 5.3 - - run: swift --version + xcode-version: 12.4 - run: swift package generate-xcodeproj --enable-code-coverage - uses: sersoft-gmbh/xcodebuild-action@v1 with: @@ -49,43 +32,31 @@ jobs: destination: ${{ matrix.destination }} action: test - uses: codecov/codecov-action@v1 - watchOS: - needs: smoke - runs-on: macos-latest - steps: - - uses: actions/checkout@v2 - - run: swift package generate-xcodeproj - - uses: sersoft-gmbh/xcodebuild-action@v1 - with: - project: Path.swift.xcodeproj - scheme: Path.swift-Package - destination: platform=watchOS Simulator,OS=latest,name=Apple Watch Series 5 - 40mm - action: build - linux-4-2: - needs: smoke + + linux-swift-4: + name: linux (4.2) runs-on: ubuntu-18.04 steps: - - uses: actions/checkout@v2 - uses: fwal/setup-swift@v1 with: swift-version: 4.2 - - run: swift test --parallel # doesn’t support code coverage + - uses: actions/checkout@v2 + - run: swift test --parallel + linux: - needs: smoke runs-on: ubuntu-18.04 strategy: matrix: swift: - - 5.0.3 - - 5.1 - - 5.2 - # - 5.3 # 1 test fails - # - 5.4 + - '5.0' + - '5.1' + - '5.2' + - '5.3' steps: - - uses: actions/checkout@v2 - uses: fwal/setup-swift@v1 with: swift-version: ${{ matrix.swift }} + - uses: actions/checkout@v2 - run: swift test --parallel --enable-code-coverage - name: Generate Coverage Report run: | @@ -98,4 +69,15 @@ jobs: > info.lcov - uses: codecov/codecov-action@v1 with: - file: ./info.lcov \ No newline at end of file + file: ./info.lcov + + # code coverage fails with 5.4 for some reason + linux-swift-5-4: + name: linux (5.4) + runs-on: ubuntu-18.04 + steps: + - uses: fwal/setup-swift@v1 + with: + swift-version: 5.4 + - uses: actions/checkout@v2 + - run: swift test --parallel diff --git a/Path.swift.podspec b/Path.swift.podspec new file mode 100644 index 0000000..f496beb --- /dev/null +++ b/Path.swift.podspec @@ -0,0 +1,16 @@ +Pod::Spec.new do |spec| + spec.name = "Path.swift" + spec.version = ENV['VERSION'] || "0.0.1" + spec.summary = "Delightful, robust, cross-platform and chainable file-pathing functions." + spec.homepage = "https://github.com/mxcl/Path.swift" + spec.license = "Unlicense" + spec.author = { "Max Howell" => "mxcl@me.com" } + spec.source = { :git => "https://github.com/mxcl/Path.swift.git", :tag => "#{spec.version}" } + spec.source_files = "Sources/*.swift" + spec.swift_versions = ['4.2', '5'] + spec.module_name = 'Path' + spec.osx.deployment_target = '10.10' + spec.ios.deployment_target = '8.0' + spec.tvos.deployment_target = '9.0' + spec.watchos.deployment_target = '2.0' +end diff --git a/README.md b/README.md index 641f337..33e05c9 100644 --- a/README.md +++ b/README.md @@ -45,16 +45,13 @@ try Bundle.resources.helper.copy(into: Path.root.usr.local.bin).chmod(0o500) We emphasize safety and correctness, just like Swift, and also (again like Swift), we provide a thoughtful and comprehensive (yet concise) API. -# Support mxcl +# Sponsor @mxcl Hi, I’m Max Howell and I have written a lot of open source software—generally -a good deal of my free time 👨🏻‍💻. +a good deal of my free time 👨🏻‍💻. Sponsorship helps me justify creating new open +source and maintaining it. Thank you. - - - - -[Other donation/tipping options](http://mxcl.dev/#donate) +[Sponsor @mxcl]. # Handbook @@ -367,7 +364,7 @@ no filesystem entry there at all check if `type` is `nil`. Changing directory is dangerous, you should *always* try to avoid it and thus we don’t even provide the method. If you are executing a sub-process then -use `Process.currentDirectoryURL` to change *its* working directory when it +use `Process.currentDirectoryURL` to change *its* working directory when it executes. If you must change directory then use `FileManager.changeCurrentDirectory` as @@ -438,7 +435,7 @@ Carthage: [badge-platforms]: https://img.shields.io/badge/platforms-macOS%20%7C%20Linux%20%7C%20iOS%20%7C%20tvOS%20%7C%20watchOS-lightgrey.svg -[badge-languages]: https://img.shields.io/badge/swift-4.2%20%7C%205.0%20%7C%205.1%20%7C%205.2%20%7C%205.3-orange.svg +[badge-languages]: https://img.shields.io/badge/swift-4.2%20%7C%205.x-orange.svg [docs]: https://mxcl.dev/Path.swift/Structs/Path.html [badge-jazzy]: https://raw.githubusercontent.com/mxcl/Path.swift/gh-pages/badge.svg?sanitize=true [badge-codecov]: https://codecov.io/gh/mxcl/Path.swift/branch/master/graph/badge.svg @@ -447,3 +444,4 @@ Carthage: [codecov]: https://codecov.io/gh/mxcl/Path.swift [badge-version]: https://img.shields.io/cocoapods/v/Path.swift.svg?label=version [cocoapods]: https://cocoapods.org/pods/Path.swift +[Sponsor @mxcl]: https://github.com/sponsors/mxcl \ No newline at end of file diff --git a/Sources/Path+FileManager.swift b/Sources/Path+FileManager.swift index 66edf22..3798187 100644 --- a/Sources/Path+FileManager.swift +++ b/Sources/Path+FileManager.swift @@ -29,7 +29,8 @@ public extension Pathish { if overwrite, let tokind = to.type, tokind != .directory, type != .directory { try FileManager.default.removeItem(at: to.url) } - #if os(Linux) && !swift(>=5.3) // check if fixed + #if os(Linux) + //NOTE doing manually due to inconsistency in Linux Foundation behavior if !overwrite, to.type != nil { throw CocoaError.error(.fileWriteFileExists) } @@ -69,7 +70,8 @@ public extension Pathish { if overwrite, let kind = rv.type, kind != .directory { try FileManager.default.removeItem(at: rv.url) } - #if os(Linux) && !swift(>=5.3) // check if fixed + #if os(Linux) + //NOTE doing manually due to inconsistency in Linux Foundation behavior if !overwrite, rv.type != nil { throw CocoaError.error(.fileWriteFileExists) } diff --git a/Sources/Path.swift b/Sources/Path.swift index 8842066..519e509 100644 --- a/Sources/Path.swift +++ b/Sources/Path.swift @@ -168,6 +168,7 @@ public extension Pathish { */ var parent: Path { let index = string.lastIndex(of: "/")! + guard index != string.indices.startIndex else { return Path(string: "/") } let substr = string[string.indices.startIndex..