diff --git a/pom.xml b/pom.xml index 28be0da..9a813da 100644 --- a/pom.xml +++ b/pom.xml @@ -46,6 +46,16 @@ javalin 3.10.1 + + org.apache.commons + commons-compress + 1.20 + + + org.koin + koin-core + 2.1.6 + diff --git a/src/main/kotlin/starter/KotlinStarter.kt b/src/main/kotlin/starter/KotlinStarter.kt index 34f23fd..44f9494 100644 --- a/src/main/kotlin/starter/KotlinStarter.kt +++ b/src/main/kotlin/starter/KotlinStarter.kt @@ -1,8 +1,29 @@ package starter +import org.koin.core.context.startKoin +import org.koin.dsl.bind +import org.koin.dsl.module +import starter.templates.MainTemplate +import starter.templates.PomTemplate +import starter.templates.Template + +val mainModule = module { + single { Config().load() } + single { PebbleModule().engine() } + single { Server(get(), get(), get()) } + single { Views(get()) } + single { ProjectZip(getAll()) } +} + +val templateModule = module { + single { PomTemplate(get()) } bind Template::class + single { MainTemplate(get()) } bind Template::class +} + fun main() { - val config = Config() - val loaded = config.load() - val server = Server(Views(PebbleModule().engine()),loaded) + val koin = startKoin { + modules(mainModule, templateModule) + }.koin + val server = koin.get() server.run() } diff --git a/src/main/kotlin/starter/Models.kt b/src/main/kotlin/starter/Models.kt index 0cb1836..672c6a7 100644 --- a/src/main/kotlin/starter/Models.kt +++ b/src/main/kotlin/starter/Models.kt @@ -18,4 +18,11 @@ data class Dependency( val scope: Scope ) -data class Input(val name: String, val display: String, val value: String? = null) \ No newline at end of file +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, +) diff --git a/src/main/kotlin/starter/ProjectZip.kt b/src/main/kotlin/starter/ProjectZip.kt new file mode 100644 index 0000000..9a2db33 --- /dev/null +++ b/src/main/kotlin/starter/ProjectZip.kt @@ -0,0 +1,23 @@ +package starter + +import starter.templates.Template +import starter.utils.ZipOutput +import starter.utils.sanitizeFilename + +class ProjectZip(private val templates: List