From 66878900f5664ff444748531f4b8873ec7afebc9 Mon Sep 17 00:00:00 2001 From: Hubert Van De Walle Date: Wed, 30 Sep 2020 02:39:58 +0200 Subject: [PATCH] Clean + lint --- .editorconfig | 18 +++++ pom.xml | 6 ++ src/main/kotlin/starter/Config.kt | 45 ++++++------ src/main/kotlin/starter/KotlinStarter.kt | 41 +++++++++-- src/main/kotlin/starter/Models.kt | 28 ++++---- src/main/kotlin/starter/PebbleModule.kt | 6 +- src/main/kotlin/starter/ProjectZip.kt | 1 - src/main/kotlin/starter/Server.kt | 68 ------------------- src/main/kotlin/starter/Views.kt | 11 ++- .../starter/extensions/Http4kExtensions.kt | 17 +++++ .../starter/routes/IndexRouteSupplier.kt | 19 ++++++ .../kotlin/starter/routes/RouteSupplier.kt | 10 +++ .../kotlin/starter/routes/ZipRouteSupplier.kt | 56 +++++++++++++++ .../starter/templates/GitignoreTemplate.kt | 4 +- .../starter/templates/LogbackTemplate.kt | 2 +- .../kotlin/starter/templates/MainTemplate.kt | 4 +- .../kotlin/starter/templates/PomTemplate.kt | 6 +- src/main/kotlin/starter/utils/PebbleUtils.kt | 2 +- src/main/kotlin/starter/utils/XmlUtils.kt | 15 ++-- 19 files changed, 220 insertions(+), 139 deletions(-) create mode 100644 .editorconfig delete mode 100644 src/main/kotlin/starter/Server.kt create mode 100644 src/main/kotlin/starter/extensions/Http4kExtensions.kt create mode 100644 src/main/kotlin/starter/routes/IndexRouteSupplier.kt create mode 100644 src/main/kotlin/starter/routes/RouteSupplier.kt create mode 100644 src/main/kotlin/starter/routes/ZipRouteSupplier.kt diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..237ae17 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,18 @@ +# editorconfig.org +root = true + +[*] +indent_style = space +indent_size = 4 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.{kt, kts}] +indent_size = 4 +insert_final_newline = true +continuation_indent_size=4 +max_line_length = 120 +disabled_rules = no-wildcard-imports +kotlin_imports_layout = idea diff --git a/pom.xml b/pom.xml index 6c404a2..fe74bfb 100644 --- a/pom.xml +++ b/pom.xml @@ -10,6 +10,7 @@ 11 UTF-8 1.4.10 + official @@ -51,6 +52,11 @@ koin-core 2.1.6 + + org.slf4j + slf4j-simple + 1.7.30 + diff --git a/src/main/kotlin/starter/Config.kt b/src/main/kotlin/starter/Config.kt index c625fc7..43989ea 100644 --- a/src/main/kotlin/starter/Config.kt +++ b/src/main/kotlin/starter/Config.kt @@ -4,9 +4,9 @@ import com.electronwill.nightconfig.core.file.FileConfig import com.electronwill.nightconfig.core.Config as NightConfig data class StarterConfig( - val dependencies: List, - val inputs: List, - val repositories: List, + val dependencies: List, + val inputs: List, + val repositories: List, ) class Config { @@ -19,31 +19,30 @@ class Config { cfg.load() val dependencies = cfg.configMap("dependencies") - .map { (name, values) -> - Dependency( - name, - values["groupId"], - values["artifactId"], - values["version"], - values.getOrElse("default", false), - values.getEnumOrElse("category", Category.Other), - values.getEnumOrElse("scope", Scope.Compile), - values["logger"], - values["repository"], - ) - } + .map { (name, values) -> + Dependency( + name, + values["groupId"], + values["artifactId"], + values["version"], + values.getOrElse("default", false), + values.getEnumOrElse("category", Category.Other), + values.getEnumOrElse("scope", Scope.Compile), + values["logger"], + values["repository"], + ) + } val inputs = cfg.configMap("inputs") - .map { (name, values) -> - Input(name, values["display"], values["default"]) - } + .map { (name, values) -> + Input(name, values["display"], values["default"]) + } val repositories = cfg.configMap("repositories") - .map { (name, values) -> - Repository(name, values["url"]) - } + .map { (name, values) -> + Repository(name, values["url"]) + } return StarterConfig(dependencies, inputs, repositories) } - } diff --git a/src/main/kotlin/starter/KotlinStarter.kt b/src/main/kotlin/starter/KotlinStarter.kt index 584d29a..4885bd2 100644 --- a/src/main/kotlin/starter/KotlinStarter.kt +++ b/src/main/kotlin/starter/KotlinStarter.kt @@ -1,14 +1,32 @@ package starter +import org.http4k.routing.ResourceLoader +import org.http4k.routing.RoutingHttpHandler +import org.http4k.routing.routes +import org.http4k.routing.static +import org.http4k.server.SunHttp +import org.http4k.server.asServer import org.koin.core.context.startKoin import org.koin.dsl.bind import org.koin.dsl.module +import org.koin.dsl.onClose +import org.slf4j.Logger +import org.slf4j.LoggerFactory +import starter.routes.IndexRouteSupplier +import starter.routes.RouteSupplier +import starter.routes.ZipRouteSupplier +import starter.routes.toRouter import starter.templates.* val mainModule = module { + single(createdAtStart = true) { + get().info("Starting on http://localhost:7000") + get().asServer(SunHttp(7000)).start() + } onClose { it?.stop() } + single { Config().load() } single { PebbleModule().engine() } - single { Server(get(), get(), get()) } + single { LoggerFactory.getLogger("Starter") } single { Views(get()) } single { ProjectZip(getAll()) } } @@ -20,10 +38,19 @@ val templateModule = module { single { GitignoreTemplate(get()) } bind Template::class } -fun main() { - val koin = startKoin { - modules(mainModule, templateModule) - }.koin - val server = koin.get() - server.run() +val routesModule = module { + single { IndexRouteSupplier(get(), get()) } bind RouteSupplier::class + single { ZipRouteSupplier(get(), get()) } bind RouteSupplier::class + single { + routes( + static(ResourceLoader.Classpath("/assets")), + getAll().toRouter() + ) + } +} + +fun main() { + startKoin { + modules(mainModule, templateModule, routesModule) + } } diff --git a/src/main/kotlin/starter/Models.kt b/src/main/kotlin/starter/Models.kt index f0a0886..eb27e2b 100644 --- a/src/main/kotlin/starter/Models.kt +++ b/src/main/kotlin/starter/Models.kt @@ -9,15 +9,15 @@ enum class Scope { } data class Dependency( - val name: String, - val groupId: String, - val artifactId: String, - val version: String, - val default: Boolean, - val category: Category, - val scope: Scope, - val logger: String?, - val repository: String?, + val name: String, + val groupId: String, + val artifactId: String, + val version: String, + val default: Boolean, + val category: Category, + val scope: Scope, + val logger: String?, + val repository: String?, ) data class Repository(val name: String, val url: String) @@ -25,9 +25,9 @@ data class Repository(val name: String, val url: String) data class Input(val name: String, val display: String, val value: String? = null) data class Project( - val name: String, - val basePackage: String, - val inputs: List, - val dependencies: List, - val repositories: List, + val name: String, + val basePackage: String, + val inputs: List, + val dependencies: List, + val repositories: List, ) diff --git a/src/main/kotlin/starter/PebbleModule.kt b/src/main/kotlin/starter/PebbleModule.kt index 48c1bd4..5c3bc98 100644 --- a/src/main/kotlin/starter/PebbleModule.kt +++ b/src/main/kotlin/starter/PebbleModule.kt @@ -8,8 +8,8 @@ class PebbleModule { val loader = ClasspathLoader() loader.suffix = ".twig" return PebbleEngine.Builder() - .loader(loader) - .cacheActive(true) - .build() + .loader(loader) + .cacheActive(true) + .build() } } diff --git a/src/main/kotlin/starter/ProjectZip.kt b/src/main/kotlin/starter/ProjectZip.kt index 5f20a0f..7613dba 100644 --- a/src/main/kotlin/starter/ProjectZip.kt +++ b/src/main/kotlin/starter/ProjectZip.kt @@ -17,5 +17,4 @@ class ProjectZip(private val templates: List