Compare commits

...

6 Commits

Author SHA1 Message Date
repo-ranger[bot]
dc7affa28c Merge pull request #42 from mxcl/path-components
Add Path.components
2019-02-15 18:49:13 +00:00
Max Howell
476cdc1461 Add Path.components 2019-02-15 13:38:36 -05:00
Max Howell
a644208c62 Test Swift 4.0.3 also 2019-02-13 21:34:35 -05:00
Max Howell
d7a9819350 Fix publishing the release in the deploy stage
[ci skip]
2019-02-13 20:52:39 -05:00
repo-ranger[bot]
24a54c2ee0 Merge pull request #39 from mxcl/less-manifests-test
You can specify future Swifts in a 4.2 manifest!
2019-02-14 01:00:02 +00:00
Max Howell
3735ed4476 You can specify future Swifts in a 4.2 manifest! 2019-02-13 19:40:07 -05:00
7 changed files with 28 additions and 27 deletions

16
.github/deploy vendored
View File

@@ -5,7 +5,7 @@ import PMKFoundation // PromiseKit/Foundation ~> 3.3
import LegibleError // @mxcl ~> 1.0
import Foundation
import PromiseKit // @mxcl ~> 6.8
import Path // mxcl/Path.swift == master
import Path // mxcl/Path.swift ~> 0.15
let env = ProcessInfo.processInfo.environment
let token = env["GITHUB_TOKEN"] ?? env["GITHUB_ACCESS_TOKEN"]!
@@ -17,13 +17,7 @@ func fatal(message: String) -> Never {
exit(1)
}
func fatal(error: Error) -> Never {
fatal(message: error.legibleLocalizedDescription)
}
guard let licenseFile = try Path.cwd.ls().files.first(where: {
$0.basename().hasPrefix("LICENSE")
})?.basename() else {
fatal(message: "no LICENSE file found")
fatal(message: "\(error.legibleLocalizedDescription)\n\n\(error.legibleDescription)")
}
struct Repo: Decodable {
@@ -124,7 +118,7 @@ func podspec(repo: Repo, user: User, pkg: Package) -> (Substring, String) {
s.version = '\(tag)'
s.summary = '\(repo.description)'
s.homepage = "https://github.com/\(slug)"
s.license = { type: '\(repo.license.spdx_id)', file: '\(licenseFile)' }
s.license = '\(repo.license.spdx_id)'
s.author = { '\(user.name)': '\(user.email)' }
s.source = { git: "https://github.com/\(slug).git", tag: '\(tag)' }
s.social_media_url = 'https://twitter.com/\(owner)'
@@ -140,8 +134,8 @@ func podspec(repo: Repo, user: User, pkg: Package) -> (Substring, String) {
func publishRelease() throws -> Promise<Void> {
struct Input: Encodable {
var tag_name: String { return tag }
var name: String { return tag }
let tag_name = tag
let name = tag
let body = ""
}

View File

@@ -15,8 +15,12 @@ xcode_scheme: Path.swift-Package
jobs:
include:
- name: macOS / Swift 4.0.3
script: swift test --parallel -Xswiftc -swift-version -Xswiftc 4
- name: macOS / Swift 4.2.1
script: swift test --parallel
- name: macOS / Swift 5.0
osx_image: xcode10.2
script: swift test --parallel
@@ -26,9 +30,11 @@ jobs:
xcode_destination: platform=iOS Simulator,OS=latest,name=iPhone XS
name: iOS / Swift 4.2.1
after_success: bash <(curl -s https://codecov.io/bash)
- <<: *xcodebuild
xcode_destination: platform=tvOS Simulator,OS=latest,name=Apple TV
name: tvOS / Swift 4.2.1
- <<: *xcodebuild
name: watchOS / Swift 4.2.1
script: |
@@ -52,7 +58,7 @@ jobs:
- <<: *linux
env: SWIFT_VERSION='5.0-DEVELOPMENT-SNAPSHOT-2019-01-22-a'
name: Linux / Swift 5.0.0-dev+2019-01-22
name: Linux / Swift 5.0.0-dev+2019.01.22
- stage: pretest
name: Check Linux tests are syncd

View File

@@ -10,5 +10,5 @@ let pkg = Package(
.target(name: "Path", path: "Sources"),
.testTarget(name: "PathTests", dependencies: ["Path"]),
],
swiftLanguageVersions: [.v4, .v4_2]
swiftLanguageVersions: [.v4, .v4_2, .version("5")]
)

View File

@@ -1,14 +0,0 @@
// swift-tools-version:5.0
import PackageDescription
let pkg = Package(
name: "Path.swift",
products: [
.library(name: "Path", targets: ["Path"]),
],
targets: [
.target(name: "Path", path: "Sources"),
.testTarget(name: "PathTests", dependencies: ["Path"]),
],
swiftLanguageVersions: [.v4, .v4_2, .v5]
)

View File

@@ -200,6 +200,15 @@ public struct Path: Equatable, Hashable, Comparable {
}
}
/**
Splits the string representation on the directory separator.
- Important: The first element is always "/" to be consistent with `NSString.pathComponents`.
*/
@inlinable
public var components: [String] {
return ["/"] + string.split(separator: "/").map(String.init)
}
//MARK: Pathing
/**

View File

@@ -588,4 +588,9 @@ class PathTests: XCTestCase {
XCTAssertNil(Path("../foo"))
XCTAssertNil(Path("./foo"))
}
func testPathComponents() throws {
XCTAssertEqual(Path.root.foo.bar.components, ["/", "foo", "bar"])
XCTAssertEqual(Path.root.components, ["/"])
}
}

View File

@@ -28,6 +28,7 @@ extension PathTests {
("testMoveInto", testMoveInto),
("testMoveTo", testMoveTo),
("testNoUndesiredSymlinkResolution", testNoUndesiredSymlinkResolution),
("testPathComponents", testPathComponents),
("testReadlinkOnFileReturnsSelf", testReadlinkOnFileReturnsSelf),
("testReadlinkOnNonExistantFileThrows", testReadlinkOnNonExistantFileThrows),
("testReadlinkOnRelativeSymlink", testReadlinkOnRelativeSymlink),