From aedb9013f03248f4e09784d8251c10ac5a9fef18 Mon Sep 17 00:00:00 2001 From: Keith Smiley Date: Fri, 23 Mar 2018 09:05:35 -0700 Subject: [PATCH] Update PathKit to support Swift 4.1 and 3.2 This fixes the warning from Swift 4.1/3.2, and starts running them both on CI. --- .swift-version | 2 +- .travis.yml | 39 ++++++++++++++++++++++------ CHANGELOG.md | 7 +++++ Package.resolved | 16 ++++++++++++ Package.swift | 2 +- Sources/PathKit.swift | 24 ++++++++++++----- Tests/PathKitTests/PathKitSpec.swift | 6 ++--- 7 files changed, 76 insertions(+), 20 deletions(-) create mode 100644 Package.resolved diff --git a/.swift-version b/.swift-version index 5186d07..7d5c902 100644 --- a/.swift-version +++ b/.swift-version @@ -1 +1 @@ -4.0 +4.1 diff --git a/.travis.yml b/.travis.yml index 5de9176..57ba3c3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,11 +1,34 @@ -os: -- linux -- osx -language: generic -sudo: required -dist: trusty -osx_image: xcode9 +matrix: + include: + - os: linux + language: generic + sudo: required + dist: trusty + env: + - SWIFT_VERSION=4.0.3 + - MAJOR_VERSION=4 + - os: linux + language: generic + sudo: required + dist: trusty + env: + - SWIFT_VERSION=4.0.3 + - MAJOR_VERSION=3 + - os: osx + language: generic + sudo: required + osx_image: xcode9 + env: + - SWIFT_VERSION=4.0.3 + - MAJOR_VERSION=4 + - os: osx + language: generic + sudo: required + osx_image: xcode9 + env: + - SWIFT_VERSION=4.0.3 + - MAJOR_VERSION=3 install: - eval "$(curl -sL https://gist.githubusercontent.com/kylef/5c0475ff02b7c7671d2a/raw/9f442512a46d7a2af7b850d65a7e9bd31edfb09b/swiftenv-install.sh)" script: -- swift test +- swift test -Xswiftc -swift-version -Xswiftc $MAJOR_VERSION diff --git a/CHANGELOG.md b/CHANGELOG.md index 3fdbf22..278c50e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # PathKit Changelog +## master + +### Bug Fixes + +* Fix warning with Swift 4, support 4.1 + [Keith Smiley](https://github.com/keith) + ## 0.9.0 ### Enhancements diff --git a/Package.resolved b/Package.resolved new file mode 100644 index 0000000..a93d413 --- /dev/null +++ b/Package.resolved @@ -0,0 +1,16 @@ +{ + "object": { + "pins": [ + { + "package": "Spectre", + "repositoryURL": "https://github.com/kylef/Spectre.git", + "state": { + "branch": null, + "revision": "e34d5687e1e9d865e3527dd58bc2f7464ef6d936", + "version": "0.8.0" + } + } + ] + }, + "version": 1 +} diff --git a/Package.swift b/Package.swift index 6ea3c7b..f957437 100644 --- a/Package.swift +++ b/Package.swift @@ -13,5 +13,5 @@ let package = Package( .target(name: "PathKit", dependencies: [], path: "Sources"), .testTarget(name: "PathKitTests", dependencies: ["PathKit", "Spectre"], path:"Tests/PathKitTests") ], - swiftLanguageVersions: [3] + swiftLanguageVersions: [3, 4] ) diff --git a/Sources/PathKit.swift b/Sources/PathKit.swift index 2d3e99e..99cb3af 100644 --- a/Sources/PathKit.swift +++ b/Sources/PathKit.swift @@ -42,7 +42,7 @@ public struct Path { path = "." } else if components.first == Path.separator && components.count > 1 { let p = components.joined(separator: Path.separator) - path = p.substring(from: p.characters.index(after: p.startIndex)) + path = String(p[p.index(after: p.startIndex)...]) } else { path = components.joined(separator: Path.separator) } @@ -276,10 +276,10 @@ extension Path { guard Path.fileManager.fileExists(atPath: normalize().path, isDirectory: &directory) else { return false } -#if os(Linux) - return directory -#else +#if !os(Linux) || swift(>=4.1) return directory.boolValue +#else + return directory #endif } @@ -295,10 +295,10 @@ extension Path { guard Path.fileManager.fileExists(atPath: normalize().path, isDirectory: &directory) else { return false } -#if os(Linux) - return !directory -#else +#if !os(Linux) || swift(>=4.1) return !directory.boolValue +#else + return !directory #endif } @@ -598,6 +598,15 @@ extension Path { #else let matchc = gt.gl_matchc #endif +#if swift(>=4.1) + return (0..=4.1) try expect(Path("a/..").lastComponentWithoutExtension) == ".." + #else + try expect(Path("a/..").lastComponentWithoutExtension) == "." #endif }