@@ -4,13 +4,12 @@ import PackageDescription
4
4
let package = Package (
5
5
name: " Stream " ,
6
6
products: [
7
- . library( name: " Stream " , targets: [ " Stream " ] )
7
+ . library(
8
+ name: " Stream " ,
9
+ targets: [ " Stream " ] )
8
10
] ,
9
11
dependencies: [
10
- . package (
11
- url: " https://github.com/swift-stack/test.git " ,
12
- . branch( " master " )
13
- )
12
+ . package ( name: " Test " )
14
13
] ,
15
14
targets: [
16
15
. target(
@@ -20,3 +19,49 @@ let package = Package(
20
19
dependencies: [ " Stream " , " Test " ] )
21
20
]
22
21
)
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