feature add outputs for apiGenerator, stringGenerator

This commit is contained in:
Sergey Vlasenko 2024-03-25 12:55:37 +03:00
parent 6df29f2101
commit ab6a83aee0
2 changed files with 37 additions and 25 deletions

View File

@ -2,7 +2,6 @@ package apigen
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.Task
import org.gradle.kotlin.dsl.create
import org.gradle.kotlin.dsl.dependencies
import org.gradle.kotlin.dsl.repositories
@ -44,32 +43,39 @@ abstract class ApiGeneratorPlugin : Plugin<Project> {
protected fun Project.getExtension(): ApiGeneratorExtension = extensions.getByName(API_GENERATOR_EXT_NAME) as ApiGeneratorExtension
private fun Project.createApiGeneratorTask(): Task = tasks.create(API_GENERATOR_CONFIG).doLast {
private fun Project.createApiGeneratorTask() = tasks.register(API_GENERATOR_CONFIG) {
val extension = getExtension()
val pathToApiSchemes = extension.pathToApiSchemes ?: throw IllegalStateException("Configure path to api schemes for api generator plugin")
val outputLanguage = extension.outputLanguage ?: throw IllegalStateException("Configure output language code for api generator plugin")
javaexec {
main = "-jar"
workingDir = rootDir
args = listOfNotNull(
configurations.getByName("apiGenerator").asPath,
"generate-client-code",
"--output-language",
outputLanguage.argName,
"--specification-path",
pathToApiSchemes,
"--kotlin-methods-generation-mode".takeIf { outputLanguage.methodOutputType != null },
outputLanguage.methodOutputType?.argName,
"--output-path",
extension.outputDirPath,
"--package-name",
extension.outputPackageName,
"--recreate_output_dirs",
extension.recreateOutputDir.toString()
)
outputs.files(files(pathToApiSchemes).asFileTree.files)
doLast {
javaexec {
mainClass.set("-jar")
workingDir = rootDir
args = listOfNotNull(
"--add-opens",
"java.base/java.lang=ALL-UNNAMED",
"--add-opens",
"java.base/java.time=ALL-UNNAMED",
configurations.getByName("apiGenerator").asPath,
"generate-client-code",
"--output-language",
outputLanguage.argName,
"--specification-path",
pathToApiSchemes,
"--kotlin-methods-generation-mode".takeIf { outputLanguage.methodOutputType != null },
outputLanguage.methodOutputType?.argName,
"--output-path",
extension.outputDirPath,
"--package-name",
extension.outputPackageName,
"--recreate_output_dirs",
extension.recreateOutputDir.toString(),
)
}
}
}

View File

@ -1,9 +1,15 @@
import groovy.json.JsonSlurper
import groovy.xml.MarkupBuilder
task stringGenerator {
generate(android.languageMap, project)
println("Strings generated!")
tasks.register('stringGenerator') {
Map<String, String> sources = android.languageMap
outputs.files(sources)
doFirst {
generate(sources, project)
println("Strings generated!")
}
}
private def generate(Map<String, String> sources, Project project) {