This PR contains the work done to support the static files serving for the **Website** service, and also included the essential boilerplate assets from the **HTML5 boilerplate** project. To provide further details about the work done: * Serving: Added the `FileMiddleware` middlewqare to the router; `path`, `server name`, and `log level` now read from config with defaults. * Library: Added the `StaticFile` enumeration with a `contentType` property, plus typed config-key/value constants and the `Configuration` dependency on WebsiteCore. * Assets: Added the **HTML5 boilerplate** (HTML, CSS, JS, icons, manifest, robots) to the *Resources/Static* folder. * Docker: Stage the Resources directory as read-only. * Tests: Added a test plan, and a shared Xcode scheme. Reviewed-on: rock-n-code/loud-amsterdam#3 Co-authored-by: Javier Cicchelli <javier@rock-n-code.com> Co-committed-by: Javier Cicchelli <javier@rock-n-code.com>
29 lines
697 B
Swift
29 lines
697 B
Swift
import Configuration
|
|
import Hummingbird
|
|
import Logging
|
|
|
|
@main
|
|
struct App {
|
|
static func main() async throws {
|
|
let reader = try await ConfigReader(
|
|
providers: [
|
|
CommandLineArgumentsProvider(),
|
|
EnvironmentVariablesProvider(),
|
|
EnvironmentVariablesProvider(
|
|
environmentFilePath: ".env",
|
|
allowMissing: true
|
|
),
|
|
InMemoryProvider(values: [
|
|
.HTTP.serverName: .HTTP.serverName
|
|
]),
|
|
]
|
|
)
|
|
|
|
let app = try await application(
|
|
reader: reader
|
|
)
|
|
|
|
try await app.runService()
|
|
}
|
|
}
|