All Downloads are FREE. Search and download functionalities are using the official Maven repository.

tech.skot.tools.starter.StarterGenerator.kt Maven / Gradle / Ivy

package tech.skot.tools.starter

import tech.skot.starter.buildsrc.buildSrc
import tech.skot.tools.generation.writeLinesTo
import tech.skot.tools.generation.writeStringTo
import tech.skot.tools.starter.androidApp.androidApp
import tech.skot.tools.starter.model.model
import tech.skot.tools.starter.modelcontract.modelContract
import tech.skot.tools.starter.view.view
import tech.skot.tools.starter.viewcontract.viewContract
import tech.skot.tools.starter.viewmodel.viewModel
import java.nio.file.Path

class StarterGenerator(val rootDir: Path, val configuration: StarterConfiguration) {

    var modules = mutableListOf()

    fun generateSkeletton() {

        rootDir.writeStringTo(".gitignore", gitIgnore)

        println("---generate buildSrc")
        buildSrc()
        println("---generate viewContract")
        viewContract()
        println("---generate modelContract")
        modelContract()
        println("---generate view")
        view()
        println("---generate model")
        model()
        println("---generate viewModel")
        viewModel()
        println("---generate android App")
        androidApp()

        println("---generate skot module")
        skotModule()


        println("---generate settings.gradle.kts")
        rootDir.writeLinesTo("settings.gradle.kts", modules.map {
            "include(\":$it\")"
        }, evenIfExists = true)

        println("---generate build.gradle.kts")
        rootDir.writeStringTo("build.gradle.kts", rootBuildGradle, evenIfExists = true)

        rootDir.writeStringTo("skot_librairies.properties", "//Add here dependencies to Skot Libraries\n", evenIfExists = false)
        rootDir.writeStringTo("skot_variants.properties", "variants=\nenvironment=dev", evenIfExists = false)
        rootDir.writeStringTo("skot_version_code.properties", "1", evenIfExists = false)

        rootDir.writeStringTo("gradle.properties", """android.enableJetifier=true
org.gradle.jvmargs=-XX\:MaxHeapSize\=4096 -Xmx4096M
org.gradle.daemon=true
android.useAndroidX=true""")

        rootDir.writeStringTo(".gitignore", """*.iml
.gradle
/local.properties
/.idea/*
.DS_Store
**/build""", evenIfExists = true)

//        rootDir.writeLinesTo("settings.gradle.kts", modules.map { "include(\":$it\")" })
    }


}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy