Skip to content

Commit bac8535

Browse files
Merge pull request #15 from NeedleInAJayStack/feat/package-traits
Breaking: Uses package traits
2 parents 1b06577 + 54de306 commit bac8535

File tree

18 files changed

+158
-269
lines changed

18 files changed

+158
-269
lines changed

.github/workflows/test.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@ jobs:
1212
xcode-version: latest
1313
- uses: actions/checkout@v4
1414
- name: Darwin build & test
15-
run: swift test --skip IntegrationTests
15+
run: swift test --enable-all-traits --skip IntegrationTests
1616
linux-test:
1717
runs-on: ubuntu-latest
1818
container:
1919
image: swift:latest
2020
steps:
2121
- uses: actions/checkout@v4
2222
- name: Linux build & test
23-
run: swift test --skip IntegrationTests
23+
run: swift test --traits ClientNIO,ServerVapor --skip IntegrationTests

.spi.yml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,4 @@ builder:
44
- documentation_targets:
55
- "Haystack"
66
- "HaystackClient"
7-
- "HaystackClientDarwin"
8-
- "HaystackClientNIO"
97
- "HaystackServer"
10-
- "HaystackServerVapor"

.swiftformat

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
--ifdef no-indent

Package.swift

Lines changed: 76 additions & 213 deletions
Original file line numberDiff line numberDiff line change
@@ -1,217 +1,80 @@
1-
// swift-tools-version: 5.7
1+
// swift-tools-version: 6.1
22

33
import PackageDescription
44

5-
#if os(macOS) || os(iOS) || os(watchOS) || os(tvOS) || os(visionOS)
6-
let package = Package(
7-
name: "Haystack",
8-
platforms: [
9-
.macOS(.v12),
10-
.iOS(.v15),
11-
.tvOS(.v15),
12-
.watchOS(.v8),
13-
],
14-
products: [
15-
.library(
16-
name: "Haystack",
17-
targets: ["Haystack"]
18-
),
19-
.library(
20-
name: "HaystackClientDarwin",
21-
targets: [
22-
"HaystackClient",
23-
"HaystackClientDarwin",
24-
]
25-
),
26-
.library(
27-
name: "HaystackClientNIO",
28-
targets: [
29-
"HaystackClient",
30-
"HaystackClientNIO",
31-
]
32-
),
33-
.library(
34-
name: "HaystackServer",
35-
targets: [
36-
"HaystackServer",
37-
]
38-
),
39-
.library(
40-
name: "HaystackServerVapor",
41-
targets: [
42-
"HaystackServerVapor",
43-
]
44-
),
45-
],
46-
dependencies: [
47-
.package(url: "https://github.com/apple/swift-crypto.git", "1.0.0" ..< "3.0.0"),
48-
.package(url: "https://github.com/swift-server/async-http-client.git", from: "1.9.0"),
49-
.package(url: "https://github.com/vapor/vapor.git", from: "4.0.0"),
50-
],
51-
targets: [
52-
.target(
53-
name: "Haystack",
54-
dependencies: []
55-
),
56-
.target(
57-
name: "HaystackClient",
58-
dependencies: [
59-
"Haystack",
60-
.product(name: "Crypto", package: "swift-crypto"),
61-
]
62-
),
63-
.target(
64-
name: "HaystackClientDarwin",
65-
dependencies: [
66-
"Haystack",
67-
"HaystackClient",
68-
]
69-
),
70-
.target(
71-
name: "HaystackClientNIO",
72-
dependencies: [
73-
"Haystack",
74-
"HaystackClient",
75-
.product(name: "AsyncHTTPClient", package: "async-http-client"),
76-
]
77-
),
78-
.target(
79-
name: "HaystackServer",
80-
dependencies: [
81-
"Haystack",
82-
]
83-
),
84-
.target(
85-
name: "HaystackServerVapor",
86-
dependencies: [
87-
"Haystack",
88-
"HaystackServer",
89-
.product(name: "Vapor", package: "vapor"),
90-
]
91-
),
5+
let package = Package(
6+
name: "Haystack",
7+
platforms: [
8+
.macOS(.v12),
9+
.iOS(.v15),
10+
.tvOS(.v15),
11+
.watchOS(.v8),
12+
],
13+
products: [
14+
.library(
15+
name: "Haystack",
16+
targets: ["Haystack"]
17+
),
18+
.library(
19+
name: "HaystackClient",
20+
targets: [
21+
"HaystackClient",
22+
]
23+
),
24+
.library(
25+
name: "HaystackServer",
26+
targets: [
27+
"HaystackServer",
28+
]
29+
),
30+
],
31+
traits: [
32+
"ServerVapor",
33+
"ClientNIO",
34+
"ClientDarwin",
35+
.default(enabledTraits: []),
36+
],
37+
dependencies: [
38+
.package(url: "https://github.com/apple/swift-crypto.git", "1.0.0" ..< "3.0.0"),
39+
.package(url: "https://github.com/swift-server/async-http-client.git", from: "1.9.0"),
40+
.package(url: "https://github.com/vapor/vapor.git", from: "4.0.0"),
41+
],
42+
targets: [
43+
.target(
44+
name: "Haystack",
45+
dependencies: []
46+
),
47+
.target(
48+
name: "HaystackClient",
49+
dependencies: [
50+
"Haystack",
51+
.product(name: "Crypto", package: "swift-crypto"),
52+
.product(name: "AsyncHTTPClient", package: "async-http-client", condition: .when(traits: ["ClientNIO"])),
53+
]
54+
),
55+
.target(
56+
name: "HaystackServer",
57+
dependencies: [
58+
"Haystack",
59+
.product(name: "Vapor", package: "vapor", condition: .when(traits: ["ServerVapor"])),
60+
]
61+
),
9262

93-
// Tests
94-
.testTarget(
95-
name: "HaystackTests",
96-
dependencies: ["Haystack"]
97-
),
98-
.testTarget(
99-
name: "HaystackClientTests",
100-
dependencies: ["HaystackClient"]
101-
),
102-
.testTarget(
103-
name: "HaystackClientNIOIntegrationTests",
104-
dependencies: ["HaystackClientNIO"]
105-
),
106-
.testTarget(
107-
name: "HaystackClientDarwinIntegrationTests",
108-
dependencies: ["HaystackClientDarwin"]
109-
),
110-
.testTarget(
111-
name: "HaystackServerTests",
112-
dependencies: ["HaystackServer"]
113-
),
114-
.testTarget(
115-
name: "HaystackServerVaporTests",
116-
dependencies: [
117-
"HaystackServerVapor",
118-
.product(name: "VaporTesting", package: "vapor"),
119-
]
120-
),
121-
]
122-
)
123-
#else
124-
let package = Package(
125-
name: "Haystack",
126-
products: [
127-
.library(
128-
name: "Haystack",
129-
targets: ["Haystack"]
130-
),
131-
.library(
132-
name: "HaystackClientNIO",
133-
targets: [
134-
"HaystackClient",
135-
"HaystackClientNIO",
136-
]
137-
),
138-
.library(
139-
name: "HaystackServer",
140-
targets: [
141-
"HaystackServer",
142-
]
143-
),
144-
.library(
145-
name: "HaystackServerVapor",
146-
targets: [
147-
"HaystackServerVapor",
148-
]
149-
),
150-
],
151-
dependencies: [
152-
.package(url: "https://github.com/apple/swift-crypto.git", "1.0.0" ..< "3.0.0"),
153-
.package(url: "https://github.com/swift-server/async-http-client.git", from: "1.9.0"),
154-
.package(url: "https://github.com/vapor/vapor.git", from: "4.0.0"),
155-
],
156-
targets: [
157-
.target(
158-
name: "Haystack",
159-
dependencies: []
160-
),
161-
.target(
162-
name: "HaystackClient",
163-
dependencies: [
164-
"Haystack",
165-
.product(name: "Crypto", package: "swift-crypto"),
166-
]
167-
),
168-
.target(
169-
name: "HaystackClientNIO",
170-
dependencies: [
171-
"Haystack",
172-
"HaystackClient",
173-
.product(name: "AsyncHTTPClient", package: "async-http-client"),
174-
]
175-
),
176-
.target(
177-
name: "HaystackServer",
178-
dependencies: [
179-
"Haystack",
180-
]
181-
),
182-
.target(
183-
name: "HaystackServerVapor",
184-
dependencies: [
185-
"Haystack",
186-
"HaystackServer",
187-
.product(name: "Vapor", package: "vapor"),
188-
]
189-
),
190-
191-
// Tests
192-
.testTarget(
193-
name: "HaystackTests",
194-
dependencies: ["Haystack"]
195-
),
196-
.testTarget(
197-
name: "HaystackClientTests",
198-
dependencies: ["HaystackClient"]
199-
),
200-
.testTarget(
201-
name: "HaystackClientNIOIntegrationTests",
202-
dependencies: ["HaystackClientNIO"]
203-
),
204-
.testTarget(
205-
name: "HaystackServerTests",
206-
dependencies: ["HaystackServer"]
207-
),
208-
.testTarget(
209-
name: "HaystackServerVaporTests",
210-
dependencies: [
211-
"HaystackServerVapor",
212-
.product(name: "VaporTesting", package: "vapor"),
213-
]
214-
),
215-
]
216-
)
217-
#endif
63+
// Tests
64+
.testTarget(
65+
name: "HaystackTests",
66+
dependencies: ["Haystack"]
67+
),
68+
.testTarget(
69+
name: "HaystackClientTests",
70+
dependencies: ["HaystackClient"]
71+
),
72+
.testTarget(
73+
name: "HaystackServerTests",
74+
dependencies: [
75+
"HaystackServer",
76+
.product(name: "VaporTesting", package: "vapor", condition: .when(traits: ["ServerVapor"])),
77+
]
78+
),
79+
]
80+
)

0 commit comments

Comments
 (0)