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
|
same "printed page" as the copyright notice for easier
|
||||||
identification within third-party archives.
|
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");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with 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