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

main.hu.gecsevar.openapi.KotlinMultiplatformGenerator.kt Maven / Gradle / Ivy

Go to download

Yet another OpenAPI code generator - but it tries not to generate the whole world - only interfaces, implementations (client) and view models.

The newest version!
package hu.gecsevar.openapi

import com.google.common.collect.ImmutableMap
import com.samskivert.mustache.Mustache
import com.samskivert.mustache.Template
import org.openapitools.codegen.CodegenType
import org.openapitools.codegen.SupportingFile
import java.io.Writer

class KotlinMultiplatformGenerator : AbstractGenerator() {
    init {
        outputFolder = "generated/"
        modelTemplateFiles["model.mustache"] = ".kt"
        apiTemplateFiles["api.mustache"] = ".kt"
        supportingFiles.add(SupportingFile("README.mustache", "", "README.md"))
        //supportingFiles.add(SupportingFile("http_service.mustache", "", "HttpService.kt"))
        templateDir = "gv-kotlin-multiplatform"
        embeddedTemplateDir = templateDir
        apiPackage = "Apis"
        modelPackage = "Models"
    }

    // source folder where to write the files
    protected val sourceFolder = "src"
    val apiVersion = "1.0.5"

    override fun getTag(): CodegenType {
        return CodegenType.CLIENT
    }

    override fun getName(): String {
        return "gv-kotlin-multiplatform"
    }

    override fun getHelp(): String {
        return "Generates a gecsevar's kotlin multiplatform (KMM) client"
    }

//    override fun setTemplatingEngine(templatingEngine: TemplatingEngineAdapter?) {
//        super.setTemplatingEngine(JteTemplateEngine(templateDir))
//    }
// TODO replace this dummy engine
//    override fun setTemplatingEngine(templatingEngine: TemplatingEngineAdapter?) {
//        super.setTemplatingEngine(HandlebarsEngineAdapter())
//    }
    override fun defaultTemplatingEngine(): String {
        return "mustache"
    }

    override fun postProcess() {
        System.out.println("################################################################################");
        System.out.println("################################################################################");
        System.out.println("################################################################################");
        System.out.println("# Thanks for using OpenAPI Generator.                                          #");
    }

    override fun addMustacheLambdas(): ImmutableMap.Builder {
        return super.addMustacheLambdas()
            .put("", CreateClientCode)
    }

    object CreateClientCode : Mustache.Lambda {
        override fun execute(frag: Template.Fragment?, out: Writer?) {

        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy