From ab6a83aee0c33284c956b0548b388f8cc1933b24 Mon Sep 17 00:00:00 2001 From: Sergey Vlasenko Date: Mon, 25 Mar 2024 12:55:37 +0300 Subject: [PATCH] feature add outputs for apiGenerator, stringGenerator --- .../main/java/apigen/ApiGeneratorPlugin.kt | 50 +++++++++++-------- gradle/scripts/stringGenerator.gradle | 12 +++-- 2 files changed, 37 insertions(+), 25 deletions(-) diff --git a/gradle/plugins/src/main/java/apigen/ApiGeneratorPlugin.kt b/gradle/plugins/src/main/java/apigen/ApiGeneratorPlugin.kt index fcaf17a..9f42c0f 100644 --- a/gradle/plugins/src/main/java/apigen/ApiGeneratorPlugin.kt +++ b/gradle/plugins/src/main/java/apigen/ApiGeneratorPlugin.kt @@ -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 { 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(), + ) + } } } diff --git a/gradle/scripts/stringGenerator.gradle b/gradle/scripts/stringGenerator.gradle index 9c47e90..76f6266 100644 --- a/gradle/scripts/stringGenerator.gradle +++ b/gradle/scripts/stringGenerator.gradle @@ -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 sources = android.languageMap + + outputs.files(sources) + + doFirst { + generate(sources, project) + println("Strings generated!") + } } private def generate(Map sources, Project project) { -- 2.40.1