fun main()

in generator/src/main/kotlin/space/jetbrains/api/generator/Main.kt [77:107]


fun main(vararg args: String) {
    require(args.size in 2..3 && args.getOrNull(2)?.equals("--no-cleanup") != false) {
        // GET /api/http/http-api-model?$fields=dto(id,deprecation,extends,fields,hierarchyRole,implements,inheritors,
        // name,record),enums(id,deprecation,name,values),resources(id,displayPlural,displaySingular,endpoints,
        // nestedResources!,parentResource,path)
        "HTTP Client Generator accepts two or three arguments: path to HTTP model, path to output directory and, " +
            "optionally, '--no-cleanup'"
    }

    Log.info { "Parsing HTTP model" }
    val model = HttpApiEntitiesById(jackson.readValue(File(args[0])))

    val out = File(args[1])
    if (out.exists() && args.size != 3) out.deleteRecursively()
    out.mkdirs()

    Log.info { "Generating types for SDK" }
    val generatedTypes = generateTypes(model)
    Log.info { "Generating resources for SDK" }
    val generatedResources = generateResources(model)
    Log.info { "Generating structures for SDK" }
    val generatedStructures = generateStructures(model)
    Log.info { "Generating partials for SDK" }
    val generatedPartials = generatePartials(model)
    Log.info { "Generating feature flags for SDK" }
    val generatedFeatureFlags = generateFeatureFlags(model)

    (generatedTypes + generatedResources + generatedStructures + generatedPartials + generatedFeatureFlags).forEach {
        it.writeTo(out)
    }
}