11package tasks
22
33import com.javiersc.semver.project.gradle.plugin.Commit
4- import gg.jte.ContentType
5- import gg.jte.TemplateEngine
6- import gg.jte.output.StringOutput
4+ import gg.jte.generated.precompiled.StaticTemplates
75import javax.inject.Inject
86import org.gradle.api.DefaultTask
9- import org.gradle.api.file.DirectoryProperty
107import org.gradle.api.file.ProjectLayout
118import org.gradle.api.model.ObjectFactory
129import org.gradle.api.tasks.*
1310import org.gradle.kotlin.dsl.*
1411import org.gradle.language.base.plugins.LifecycleBasePlugin
1512
1613@CacheableTask
17- abstract class BuildConfig @Inject constructor(private val extn : BuildConfigExtension ) :
14+ abstract class BuildConfig @Inject constructor(@Nested val extn : BuildConfigExtension ) :
1815 DefaultTask () {
1916
20- @get:Input val version = extn.projectVersion
21-
2217 @get:Internal internal val templateName = " BuildConfig.kte"
2318
24- @get: [OutputDirectory Optional ]
25- val generatedOutputDir: DirectoryProperty = extn.outputDir
26-
2719 init {
2820 description = " Generate build config class"
2921 group = LifecycleBasePlugin .BUILD_TASK_NAME
3022 }
3123
3224 @TaskAction
3325 fun execute () {
34- val dir = generatedOutputDir .asFile.get()
26+ val dir = extn.outputDir .asFile.get()
3527 dir.deleteRecursively()
3628 dir.mkdirs()
3729
@@ -40,7 +32,7 @@ abstract class BuildConfig @Inject constructor(private val extn: BuildConfigExte
4032 val pkg = fqName.substringBeforeLast(" ." , " " )
4133
4234 val file = dir.resolve(" $className .kt" )
43- logger.quiet(" Generated build config file: ${file.path } " )
35+ logger.quiet(" Generated build config file: ${file.name } " )
4436
4537 // Get git commit info
4638 val gitCommit = run {
@@ -59,38 +51,39 @@ abstract class BuildConfig @Inject constructor(private val extn: BuildConfigExte
5951 mapOf (
6052 " name" to extn.projectName.get(),
6153 " description" to extn.projectDesc.get(),
62- " version" to version .get(),
54+ " version" to extn.projectVersion .get(),
6355 )
6456
65- // the<VersionCatalogsExtension>().named("libs").
66- val params =
67- mapOf (
68- " className" to className,
69- " pkg" to pkg,
70- " projectProps" to rootProjectProps,
71- " gitCommit" to gitCommit,
72- " catalogVersions" to extn.catalogVersions.get(),
73- " dependencies" to extn.dependencies.get(),
74- )
57+ // val content = StringOutput()
58+ // val tmplEngine = TemplateEngine.createPrecompiled(ContentType.Plain).apply {
59+ // setTrimControlStructures(true) }
60+ // tmplEngine.render(templateName, params, content)
7561
76- val content = StringOutput ()
77- val tmplEngine =
78- TemplateEngine .createPrecompiled(ContentType .Plain ).apply { setTrimControlStructures(true ) }
62+ val content =
63+ StaticTemplates ()
64+ .BuildConfig (
65+ className = className,
66+ pkg = pkg,
67+ projectProps = rootProjectProps,
68+ gitCommit = gitCommit,
69+ catalogVersions = extn.catalogVersions.get(),
70+ dependencies = extn.dependencies.get())
71+ .render()
7972
80- tmplEngine.render(templateName, params, content)
81- file.writeText(content.toString())
82- // outputs.dirs(generatedOutputDir)
73+ file.writeText(content)
74+ // outputs.dirs(extn.outputDir)
8375 }
8476}
8577
8678open class BuildConfigExtension @Inject constructor(layout : ProjectLayout , objects : ObjectFactory ) {
8779 @get:Input val classFqName = objects.property<String >().convention(" BuildConfig" )
80+ @get:Input val projectVersion = objects.property<String >()
8881 @get:Input val projectName = objects.property<String >()
8982 @get:Input val projectDesc = objects.property<String >()
90- @get:Input val gitCommit = objects.property<Commit >()
9183 @get:Input val catalogVersions = objects.mapProperty<String , String >().convention(emptyMap())
9284 @get:Input val dependencies = objects.listProperty<String >().convention(emptyList())
93- val projectVersion = objects.property<String >()
85+ @Internal val gitCommit = objects.property<Commit >()
86+ @get: [OutputDirectory Optional ]
9487 val outputDir =
9588 objects.directoryProperty().convention(layout.buildDirectory.dir(" generated/buildconfig" ))
9689}
0 commit comments