Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,12 @@ jobs:
xcode-version: latest
- uses: actions/checkout@v4
- name: Darwin build & test
run: swift test --skip IntegrationTests
run: swift test --enable-all-traits --skip IntegrationTests
linux-test:
runs-on: ubuntu-latest
container:
image: swift:latest
steps:
- uses: actions/checkout@v4
- name: Linux build & test
run: swift test --skip IntegrationTests
run: swift test --traits ClientNIO,ServerVapor --skip IntegrationTests
3 changes: 0 additions & 3 deletions .spi.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,4 @@ builder:
- documentation_targets:
- "Haystack"
- "HaystackClient"
- "HaystackClientDarwin"
- "HaystackClientNIO"
- "HaystackServer"
- "HaystackServerVapor"
1 change: 1 addition & 0 deletions .swiftformat
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
--ifdef no-indent
289 changes: 76 additions & 213 deletions Package.swift
Original file line number Diff line number Diff line change
@@ -1,217 +1,80 @@
// swift-tools-version: 5.7
// swift-tools-version: 6.1

import PackageDescription

#if os(macOS) || os(iOS) || os(watchOS) || os(tvOS) || os(visionOS)
let package = Package(
name: "Haystack",
platforms: [
.macOS(.v12),
.iOS(.v15),
.tvOS(.v15),
.watchOS(.v8),
],
products: [
.library(
name: "Haystack",
targets: ["Haystack"]
),
.library(
name: "HaystackClientDarwin",
targets: [
"HaystackClient",
"HaystackClientDarwin",
]
),
.library(
name: "HaystackClientNIO",
targets: [
"HaystackClient",
"HaystackClientNIO",
]
),
.library(
name: "HaystackServer",
targets: [
"HaystackServer",
]
),
.library(
name: "HaystackServerVapor",
targets: [
"HaystackServerVapor",
]
),
],
dependencies: [
.package(url: "https://github.com/apple/swift-crypto.git", "1.0.0" ..< "3.0.0"),
.package(url: "https://github.com/swift-server/async-http-client.git", from: "1.9.0"),
.package(url: "https://github.com/vapor/vapor.git", from: "4.0.0"),
],
targets: [
.target(
name: "Haystack",
dependencies: []
),
.target(
name: "HaystackClient",
dependencies: [
"Haystack",
.product(name: "Crypto", package: "swift-crypto"),
]
),
.target(
name: "HaystackClientDarwin",
dependencies: [
"Haystack",
"HaystackClient",
]
),
.target(
name: "HaystackClientNIO",
dependencies: [
"Haystack",
"HaystackClient",
.product(name: "AsyncHTTPClient", package: "async-http-client"),
]
),
.target(
name: "HaystackServer",
dependencies: [
"Haystack",
]
),
.target(
name: "HaystackServerVapor",
dependencies: [
"Haystack",
"HaystackServer",
.product(name: "Vapor", package: "vapor"),
]
),
let package = Package(
name: "Haystack",
platforms: [
.macOS(.v12),
.iOS(.v15),
.tvOS(.v15),
.watchOS(.v8),
],
products: [
.library(
name: "Haystack",
targets: ["Haystack"]
),
.library(
name: "HaystackClient",
targets: [
"HaystackClient",
]
),
.library(
name: "HaystackServer",
targets: [
"HaystackServer",
]
),
],
traits: [
"ServerVapor",
"ClientNIO",
"ClientDarwin",
.default(enabledTraits: []),
],
dependencies: [
.package(url: "https://github.com/apple/swift-crypto.git", "1.0.0" ..< "3.0.0"),
.package(url: "https://github.com/swift-server/async-http-client.git", from: "1.9.0"),
.package(url: "https://github.com/vapor/vapor.git", from: "4.0.0"),
],
targets: [
.target(
name: "Haystack",
dependencies: []
),
.target(
name: "HaystackClient",
dependencies: [
"Haystack",
.product(name: "Crypto", package: "swift-crypto"),
.product(name: "AsyncHTTPClient", package: "async-http-client", condition: .when(traits: ["ClientNIO"])),
]
),
.target(
name: "HaystackServer",
dependencies: [
"Haystack",
.product(name: "Vapor", package: "vapor", condition: .when(traits: ["ServerVapor"])),
]
),

// Tests
.testTarget(
name: "HaystackTests",
dependencies: ["Haystack"]
),
.testTarget(
name: "HaystackClientTests",
dependencies: ["HaystackClient"]
),
.testTarget(
name: "HaystackClientNIOIntegrationTests",
dependencies: ["HaystackClientNIO"]
),
.testTarget(
name: "HaystackClientDarwinIntegrationTests",
dependencies: ["HaystackClientDarwin"]
),
.testTarget(
name: "HaystackServerTests",
dependencies: ["HaystackServer"]
),
.testTarget(
name: "HaystackServerVaporTests",
dependencies: [
"HaystackServerVapor",
.product(name: "VaporTesting", package: "vapor"),
]
),
]
)
#else
let package = Package(
name: "Haystack",
products: [
.library(
name: "Haystack",
targets: ["Haystack"]
),
.library(
name: "HaystackClientNIO",
targets: [
"HaystackClient",
"HaystackClientNIO",
]
),
.library(
name: "HaystackServer",
targets: [
"HaystackServer",
]
),
.library(
name: "HaystackServerVapor",
targets: [
"HaystackServerVapor",
]
),
],
dependencies: [
.package(url: "https://github.com/apple/swift-crypto.git", "1.0.0" ..< "3.0.0"),
.package(url: "https://github.com/swift-server/async-http-client.git", from: "1.9.0"),
.package(url: "https://github.com/vapor/vapor.git", from: "4.0.0"),
],
targets: [
.target(
name: "Haystack",
dependencies: []
),
.target(
name: "HaystackClient",
dependencies: [
"Haystack",
.product(name: "Crypto", package: "swift-crypto"),
]
),
.target(
name: "HaystackClientNIO",
dependencies: [
"Haystack",
"HaystackClient",
.product(name: "AsyncHTTPClient", package: "async-http-client"),
]
),
.target(
name: "HaystackServer",
dependencies: [
"Haystack",
]
),
.target(
name: "HaystackServerVapor",
dependencies: [
"Haystack",
"HaystackServer",
.product(name: "Vapor", package: "vapor"),
]
),

// Tests
.testTarget(
name: "HaystackTests",
dependencies: ["Haystack"]
),
.testTarget(
name: "HaystackClientTests",
dependencies: ["HaystackClient"]
),
.testTarget(
name: "HaystackClientNIOIntegrationTests",
dependencies: ["HaystackClientNIO"]
),
.testTarget(
name: "HaystackServerTests",
dependencies: ["HaystackServer"]
),
.testTarget(
name: "HaystackServerVaporTests",
dependencies: [
"HaystackServerVapor",
.product(name: "VaporTesting", package: "vapor"),
]
),
]
)
#endif
// Tests
.testTarget(
name: "HaystackTests",
dependencies: ["Haystack"]
),
.testTarget(
name: "HaystackClientTests",
dependencies: ["HaystackClient"]
),
.testTarget(
name: "HaystackServerTests",
dependencies: [
"HaystackServer",
.product(name: "VaporTesting", package: "vapor", condition: .when(traits: ["ServerVapor"])),
]
),
]
)
Loading
Loading