fun process()

in code/codegen/src/main/kotlin/com/android/gradle/replicator/codegen/Main.kt [32:109]


    fun process(args: Array<String>) {

        val parser = ArgsParser()

        val pathToArgumentsFileOption = parser.option(longName = "argsFile", shortName = "i", argc = 1)
        val outputFolderOption = parser.option(longName = "outputFolder", shortName = "o", argc = 1)
        val moduleOption = parser.option(longName = "module", shortName = "m", argc = 1)
        val implClasspathElementOption = parser.option(
                longName = "implClassPath",
                shortName = "cp",
                propertyName = "implClasspath",
                argc = ArgsParser.UNLIMITED_ARGC)
        val apiOption = parser.option(
                longName = "apiClassPath",
                shortName = "api",
                propertyName = "apiClasspath",
                argc = ArgsParser.UNLIMITED_ARGC)
        val codeGenModuleApiClasspathOption = parser.option(
                propertyName = "codeGeneratedModuleApiClasspath",
                argc = ArgsParser.UNLIMITED_ARGC)
        val codeGenModuleImplClasspathOption = parser.option(
                propertyName = "codeGeneratedModuleImplClasspath",
                argc = ArgsParser.UNLIMITED_ARGC)
        val runtimeClasspathOption = parser.option(propertyName = "runtimeClasspath", argc = ArgsParser.UNLIMITED_ARGC)

        val seedOption = parser.option(longName = "seed", shortName = "s", propertyName = "seed", argc = 1)
        val nbOfJavaFilesOption = parser.option(propertyName = "nbOfJavaFiles", argc = 1)
        val nbOfKotlinFilesOption = parser.option(propertyName = "nbOfKotlinFiles", argc = 1)

        parser.parseArgs(args)

        val parametersBuilder = CodeGenerationParameters.Builder()
        val pathToArgumentsFile = pathToArgumentsFileOption.orNull?.first
        if (pathToArgumentsFile!=null
            && File(pathToArgumentsFile).exists()) {
            parser.parsePropertyFile(File(pathToArgumentsFile))
        }
        buildParameters(
                parametersBuilder,
                apiOption.orNull?.argv,
                implClasspathElementOption.orNull?.argv,
                codeGenModuleApiClasspathOption.orNull?.argv,
                codeGenModuleImplClasspathOption.orNull?.argv,
                runtimeClasspathOption.orNull?.argv,
                seedOption.orNull?.first,
                nbOfJavaFilesOption.orNull?.first,
                nbOfKotlinFilesOption.orNull?.first
        )
        val kotlinGenerator: GeneratorType = GeneratorType.Kotlin
        val javaGenerator = GeneratorType.Java

        val outputFolder = File(checkNotNull(outputFolderOption.orNull?.first))
        outputFolder.deleteRecursively()
        outputFolder.mkdirs()
        println("Generating in $outputFolder")

        val arguments = parametersBuilder.build()
        val moduleName = moduleOption.orNull?.first ?: "module"

        if (arguments.numberOfJavaSources > 0) {
            generateSources(
                    arguments.numberOfJavaSources,
                    javaGenerator,
                    arguments,
                    moduleName,
                    outputFolder
            )
        }
        if (arguments.numberOfKotlinSources > 0) {
            generateSources(
                    arguments.numberOfKotlinSources,
                    kotlinGenerator,
                    arguments,
                    moduleName,
                    outputFolder
            )
        }
    }