Files
vapor-po/Package.swift

178 lines
6.3 KiB
Swift

// swift-tools-version:6.0
import PackageDescription
let package = Package(
name: "hhe-po",
platforms: [
.macOS(.v14)
],
products: [
.executable(name: "App", targets: ["App"]),
.library(name: "ApiController", targets: ["ApiController"]),
.library(name: "ApiControllerLive", targets: ["ApiControllerLive"]),
.library(name: "SharedModels", targets: ["SharedModels"]),
.library(name: "DatabaseClient", targets: ["DatabaseClient"]),
.library(name: "DatabaseClientLive", targets: ["DatabaseClientLive"]),
.library(name: "HtmlSnapshotTesting", targets: ["HtmlSnapshotTesting"]),
.library(name: "ViewController", targets: ["ViewController"]),
.library(name: "ViewControllerLive", targets: ["ViewControllerLive"])
],
dependencies: [
// 💧 A server-side Swift web framework.
.package(url: "https://github.com/vapor/vapor.git", from: "4.110.1"),
// 🗄 An ORM for SQL and NoSQL databases.
.package(url: "https://github.com/vapor/fluent.git", from: "4.9.0"),
// 🪶 Fluent driver for SQLite.
.package(url: "https://github.com/vapor/fluent-sqlite-driver.git", from: "4.6.0"),
// 🔵 Non-blocking, event-driven networking f Swift. Used for, custom executors
.package(url: "https://github.com/apple/swift-nio.git", from: "2.65.0"),
.package(url: "https://github.com/pointfreeco/swift-dependencies.git", from: "1.6.3"),
.package(url: "https://github.com/sliemeobn/elementary.git", from: "0.3.2"),
.package(url: "https://github.com/sliemeobn/elementary-htmx.git", from: "0.4.0"),
.package(url: "https://github.com/vapor-community/vapor-elementary.git", from: "0.1.0"),
.package(url: "https://github.com/pointfreeco/swift-url-routing.git", from: "0.6.2"),
.package(url: "https://github.com/pointfreeco/vapor-routing.git", from: "0.1.3"),
.package(url: "https://github.com/pointfreeco/swift-snapshot-testing.git", from: "1.17.7"),
.package(url: "https://github.com/pointfreeco/swift-case-paths.git", from: "1.6.0")
],
targets: [
.executableTarget(
name: "App",
dependencies: [
.target(name: "ApiControllerLive"),
.target(name: "DatabaseClientLive"),
.target(name: "ViewControllerLive"),
.product(name: "Fluent", package: "fluent"),
.product(name: "FluentSQLiteDriver", package: "fluent-sqlite-driver"),
.product(name: "Vapor", package: "vapor"),
.product(name: "NIOCore", package: "swift-nio"),
.product(name: "NIOPosix", package: "swift-nio"),
.product(name: "Dependencies", package: "swift-dependencies"),
.product(name: "DependenciesMacros", package: "swift-dependencies"),
.product(name: "Elementary", package: "elementary"),
.product(name: "VaporElementary", package: "vapor-elementary"),
.product(name: "ElementaryHTMX", package: "elementary-htmx"),
.product(name: "VaporRouting", package: "vapor-routing")
],
swiftSettings: swiftSettings
),
.target(
name: "ApiController",
dependencies: [
.target(name: "SharedModels"),
.product(name: "Dependencies", package: "swift-dependencies"),
.product(name: "DependenciesMacros", package: "swift-dependencies")
],
swiftSettings: swiftSettings
),
.target(
name: "ApiControllerLive",
dependencies: [
.target(name: "ApiController"),
.target(name: "DatabaseClient")
],
swiftSettings: swiftSettings
),
.testTarget(
name: "ApiRouteTests",
dependencies: [
.target(name: "SharedModels")
],
swiftSettings: swiftSettings
),
.target(
name: "DatabaseClient",
dependencies: [
"SharedModels",
.product(name: "Dependencies", package: "swift-dependencies"),
.product(name: "DependenciesMacros", package: "swift-dependencies"),
.product(name: "Fluent", package: "fluent"),
.product(name: "Vapor", package: "vapor")
],
swiftSettings: swiftSettings
),
.target(
name: "DatabaseClientLive",
dependencies: [
"DatabaseClient",
.product(name: "Vapor", package: "vapor")
],
swiftSettings: swiftSettings
),
.testTarget(
name: "DatabaseClientTests",
dependencies: [
"DatabaseClientLive",
.product(name: "FluentSQLiteDriver", package: "fluent-sqlite-driver")
]
),
.target(
name: "HtmlSnapshotTesting",
dependencies: [
.product(name: "Elementary", package: "elementary"),
.product(name: "SnapshotTesting", package: "swift-snapshot-testing")
]
),
.target(
name: "SharedModels",
dependencies: [
.product(name: "Dependencies", package: "swift-dependencies"),
.product(name: "URLRouting", package: "swift-url-routing"),
.product(name: "CasePaths", package: "swift-case-paths")
],
swiftSettings: swiftSettings
),
.target(
name: "ViewController",
dependencies: [
.target(name: "SharedModels"),
.product(name: "Dependencies", package: "swift-dependencies"),
.product(name: "DependenciesMacros", package: "swift-dependencies"),
.product(name: "Elementary", package: "elementary")
],
swiftSettings: swiftSettings
),
.target(
name: "ViewControllerLive",
dependencies: [
.target(name: "DatabaseClient"),
.target(name: "ViewController"),
.product(name: "ElementaryHTMX", package: "elementary-htmx"),
.product(name: "Vapor", package: "vapor")
],
swiftSettings: swiftSettings
),
.testTarget(
name: "ViewControllerTests",
dependencies: [
.target(name: "ViewControllerLive"),
.target(name: "HtmlSnapshotTesting")
],
resources: [
.copy("__Snapshots__")
],
swiftSettings: swiftSettings
),
.testTarget(
name: "ViewRouteTests",
dependencies: [
.target(name: "App"),
.product(name: "VaporTesting", package: "vapor")
],
swiftSettings: swiftSettings
)
],
swiftLanguageModes: [.v5]
)
var swiftSettings: [SwiftSetting] { [
.enableUpcomingFeature("DisableOutwardActorInference"),
.enableExperimentalFeature("StrictConcurrency=complete"),
.enableUpcomingFeature("ExistentialAny"),
.enableUpcomingFeature("ConciseMagicFile"),
.enableUpcomingFeature("ForwardTrailingClosures")
] }