Skip to content

Commit ca9937e

Browse files
committed
[Package] Add multiple package sources
1 parent 0569854 commit ca9937e

File tree

1 file changed

+50
-5
lines changed

1 file changed

+50
-5
lines changed

Package.swift

Lines changed: 50 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,12 @@ import PackageDescription
44
let package = Package(
55
name: "Stream",
66
products: [
7-
.library(name: "Stream", targets: ["Stream"])
7+
.library(
8+
name: "Stream",
9+
targets: ["Stream"])
810
],
911
dependencies: [
10-
.package(
11-
url: "https://github.com/swift-stack/test.git",
12-
.branch("master")
13-
)
12+
.package(name: "Test")
1413
],
1514
targets: [
1615
.target(
@@ -20,3 +19,49 @@ let package = Package(
2019
dependencies: ["Stream", "Test"])
2120
]
2221
)
22+
23+
// MARK: - custom package source
24+
25+
#if canImport(ObjectiveC)
26+
import Darwin.C
27+
#else
28+
import Glibc
29+
#endif
30+
31+
extension Package.Dependency {
32+
enum Source: String {
33+
case local, remote, github
34+
35+
static var `default`: Self { .local }
36+
37+
var baseUrl: String {
38+
switch self {
39+
case .local: return "../"
40+
case .remote: return "https://swiftstack.io/"
41+
case .github: return "https://github.com/swift-stack/"
42+
}
43+
}
44+
45+
func url(for name: String) -> String {
46+
return self == .local
47+
? baseUrl + name.lowercased()
48+
: baseUrl + name.lowercased() + ".git"
49+
}
50+
}
51+
52+
static func package(name: String) -> Package.Dependency {
53+
guard let pointer = getenv("SWIFTSTACK") else {
54+
return .package(name: name, source: .default)
55+
}
56+
guard let source = Source(rawValue: String(cString: pointer)) else {
57+
fatalError("Invalid source. Use local, remote or github")
58+
}
59+
return .package(name: name, source: source)
60+
}
61+
62+
static func package(name: String, source: Source) -> Package.Dependency {
63+
return source == .local
64+
? .package(name: name, path: source.url(for: name))
65+
: .package(name: name, url: source.url(for: name), .branch("dev"))
66+
}
67+
}

0 commit comments

Comments
 (0)