-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPackage.swift
More file actions
65 lines (64 loc) · 2.84 KB
/
Copy pathPackage.swift
File metadata and controls
65 lines (64 loc) · 2.84 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
// swift-tools-version: 6.0
import PackageDescription
let package = Package(
name: "Hudson",
platforms: [.macOS(.v15)],
products: [
.library(name: "GmailKit", targets: ["GmailKit"]),
.executable(name: "hudson", targets: ["HudsonCLI"]),
.library(name: "HudsonUI", targets: ["HudsonUI"]),
.executable(name: "HudsonApp", targets: ["HudsonApp"]),
.library(name: "Outbox", targets: ["Outbox"]),
.library(name: "AIKit", targets: ["AIKit"]),
],
dependencies: [
.package(url: "https://github.com/apple/swift-argument-parser", from: "1.5.0"),
.package(url: "https://github.com/groue/GRDB.swift", from: "7.0.0"),
],
targets: [
.target(name: "GmailKit"),
.executableTarget(
name: "HudsonCLI",
dependencies: [
"GmailKit",
"Store",
"SyncEngine",
"Outbox",
"AIKit",
.product(name: "ArgumentParser", package: "swift-argument-parser"),
]
),
.testTarget(
name: "GmailKitTests",
dependencies: ["GmailKit"],
resources: [.copy("Fixtures")]
),
.target(name: "Store", dependencies: [.product(name: "GRDB", package: "GRDB.swift")]),
.testTarget(name: "StoreTests", dependencies: ["Store"]),
.testTarget(name: "HudsonCLITests", dependencies: ["HudsonCLI", "Outbox", "Store", "AIKit"]),
.target(name: "SyncEngine", dependencies: ["GmailKit", "Store"]),
.testTarget(name: "SyncEngineTests", dependencies: ["SyncEngine"]),
.target(
name: "HudsonUI",
dependencies: ["GmailKit", "Store", "SyncEngine", "Outbox", "AIKit",
.product(name: "GRDB", package: "GRDB.swift")],
resources: [.process("Resources")]
),
.executableTarget(name: "HudsonApp", dependencies: ["HudsonUI"]),
.testTarget(name: "HudsonUITests", dependencies: ["HudsonUI", "Store", "AIKit"]),
// MIME building + send state machine (spec §7). Depends on GmailKit
// for the `SentMessage`/`SendTransport` shapes SendService sends
// through, and Store for the `send_jobs` durable queue it persists to.
.target(name: "Outbox", dependencies: ["GmailKit", "Store"]),
.testTarget(
name: "OutboxTests",
dependencies: ["Outbox", "Store"],
resources: [.copy("Golden")]
),
// AIKit composes ONLY Store (retrieval/cache/config) + GmailKit for the
// LLMKeyStore secret seam — never GmailKit's network client (spec §8:
// "Uses Store and its own providers. Never touches GmailKit").
.target(name: "AIKit", dependencies: ["Store", "GmailKit"]),
.testTarget(name: "AIKitTests", dependencies: ["AIKit", "Store"]),
]
)