Defined the Package, App, and AppTests mustache templates in the library target.
This commit is contained in:
parent
7b1cb9ae2a
commit
87dc069917
@ -186,7 +186,7 @@
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright 2024 Adam Fowler
|
||||
Copyright 2025 Röck+Cöde
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
20
Library/Resources/Files/Templates/App/App.mustache
Normal file
20
Library/Resources/Files/Templates/App/App.mustache
Normal file
@ -0,0 +1,20 @@
|
||||
import AppLibrary
|
||||
import ArgumentParser
|
||||
|
||||
@main
|
||||
struct App: AsyncParsableCommand {
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
@OptionGroup var options: Options
|
||||
|
||||
// MARK: Functions
|
||||
|
||||
mutating func run() async throws {
|
||||
let builder = AppBuilder(name: "{{ name }}")
|
||||
let app = try await builder(options)
|
||||
|
||||
try await app.runService()
|
||||
}
|
||||
|
||||
}
|
45
Library/Resources/Files/Templates/Package.mustache
Normal file
45
Library/Resources/Files/Templates/Package.mustache
Normal file
@ -0,0 +1,45 @@
|
||||
// swift-tools-version:6.0
|
||||
|
||||
import PackageDescription
|
||||
|
||||
let package = Package(
|
||||
name: "{{ name }}",
|
||||
platforms: [
|
||||
.macOS(.v14)
|
||||
],
|
||||
products: [
|
||||
.executable(name: "App", targets: ["App"]),
|
||||
.library(name: "AppLibrary", targets: ["AppLibrary"])
|
||||
],
|
||||
dependencies: [
|
||||
.package(url: "https://github.com/hummingbird-project/hummingbird.git", from: "2.0.0"),
|
||||
.package(url: "https://github.com/apple/swift-argument-parser.git", from: "1.3.0")
|
||||
],
|
||||
targets: [
|
||||
.executableTarget(
|
||||
name: "App",
|
||||
dependencies: [
|
||||
.product(name: "ArgumentParser", package: "swift-argument-parser"),
|
||||
.product(name: "Hummingbird", package: "hummingbird"),
|
||||
.target(name: "AppLibrary")
|
||||
],
|
||||
path: "App"
|
||||
),
|
||||
.target(
|
||||
name: "AppLibrary",
|
||||
dependencies: [
|
||||
.product(name: "ArgumentParser", package: "swift-argument-parser"),
|
||||
.product(name: "Hummingbird", package: "hummingbird")
|
||||
],
|
||||
path: "Library"
|
||||
),
|
||||
.testTarget(
|
||||
name: "AppTests",
|
||||
dependencies: [
|
||||
.product(name: "HummingbirdTesting", package: "hummingbird"),
|
||||
.target(name: "AppLibrary")
|
||||
],
|
||||
path: "Test"
|
||||
)
|
||||
]
|
||||
)
|
33
Library/Resources/Files/Templates/Test/AppTests.mustache
Normal file
33
Library/Resources/Files/Templates/Test/AppTests.mustache
Normal file
@ -0,0 +1,33 @@
|
||||
import AppLibrary
|
||||
import Hummingbird
|
||||
import HummingbirdTesting
|
||||
import Testing
|
||||
|
||||
struct AppTests {
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
private let arguments = TestArguments()
|
||||
private let builder = AppBuilder(name: "{{ name }}")
|
||||
|
||||
// MARK: Route tests
|
||||
|
||||
@Test(arguments: ["/"])
|
||||
func routes(_ uri: String) async throws {
|
||||
let app = try await builder(arguments)
|
||||
|
||||
try await app.test(.router) { client in
|
||||
try await client.execute(uri: uri, method: .get) { response in
|
||||
#expect(response.status == .ok)
|
||||
#expect(response.body == .empty)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// MARK: ByteBuffer+Constants
|
||||
|
||||
private extension ByteBuffer {
|
||||
static let empty = ByteBuffer(string: "")
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user