diff --git a/build.gradle.kts b/build.gradle.kts index f39581b..efda1c4 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,4 +1,5 @@ import dev.adamko.kafkatorio.gradle.excludeGeneratedGradleDsl +import java.time.LocalDate plugins { idea @@ -12,14 +13,14 @@ version = "0.4.0" val licenseFile: RegularFile by extra(layout.projectDirectory.file("LICENSE")) -val projectTokens: MutableMap by extra( - mutableMapOf( - "project.version" to "$version", - "rootProject.name" to rootProject.name, - "date.year" to "${java.time.LocalDate.now().year}", - "author.email" to "adam@adamko.dev", - ) -) +val projectTokens: MapProperty by extra { + objects.mapProperty().apply { + put("project.version", provider { "$version" }) + put("rootProject.name", provider { rootProject.name }) + put("date.year", provider { "${LocalDate.now().year}" }) + put("author.email", "adam@adamko.dev") + } +} idea { module { diff --git a/modules/events-mod/build.gradle.kts b/modules/events-mod/build.gradle.kts index 3c7eee1..5251770 100644 --- a/modules/events-mod/build.gradle.kts +++ b/modules/events-mod/build.gradle.kts @@ -18,24 +18,21 @@ description = // Factorio required format is: // - filename: `mod-name_version.zip` // - zip contains one directory, `mod-name` -val modName: String by extra("${rootProject.name}-events") -val distributionZipName: String by extra("${modName}_${project.version}.zip") +val modName: String by extra { "${rootProject.name}-events" } +val distributionZipName: String by extra { "${modName}_${project.version}.zip" } // version of Factorio that the mod is compatible with (must only be "major.minor" - patch causes error) -val modFactorioCompatibility: String by extra( - libs.versions.factorio - .map { SemVer.parse(it).run { "$major.$minor" } } - .get() -) +val modFactorioCompatibility: Provider = + libs.versions.factorio.map { SemVer.parse(it).run { "$major.$minor" } } val licenseFile: RegularFile by rootProject.extra -val projectTokens: MutableMap by rootProject.extra -projectTokens += mapOf( - "mod.name" to modName, - "mod.title" to "Kafkatorio Events", - "mod.description" to (project.description ?: ""), - "factorio.version" to modFactorioCompatibility, -) +val projectTokens: MapProperty by rootProject.extra +projectTokens.apply { + put("mod.name", modName) + put("mod.title", "Kafkatorio Events") + put("mod.description", provider { project.description }.orElse("")) + put("factorio.version", modFactorioCompatibility) +} val tsSrcDir: Directory = layout.projectDirectory.dir("src/main/typescript") @@ -95,8 +92,14 @@ val installEventsTsSchema by tasks.registering(Sync::class) { tasks.distZip { - archiveFileName.set(provider { distributionZipName }) + val zipName = distributionZipName + val zipNameProvider = provider { zipName } + val projectTokens = projectTokens + inputs.property("distributionZipName", distributionZipName) + inputs.property("zipNameProvider", zipNameProvider) + inputs.property("projectTokens", projectTokens) + archiveFileName.set(zipNameProvider) } @@ -112,7 +115,7 @@ distributions { from(licenseFile) from(typescriptToLua.map { it.outputDirectory }) filesNotMatching("**/*.png") { - filter("tokens" to projectTokens) + filter("tokens" to projectTokens.get()) } includeEmptyDirs = false exclude { diff --git a/modules/infra-kafka-pipe/build.gradle.kts b/modules/infra-kafka-pipe/build.gradle.kts index 77b8da2..ab7f0a3 100644 --- a/modules/infra-kafka-pipe/build.gradle.kts +++ b/modules/infra-kafka-pipe/build.gradle.kts @@ -1,4 +1,4 @@ -import org.jetbrains.kotlin.util.parseSpaceSeparatedArgs +import dev.adamko.kafkatorio.task.DockerComposeExec plugins { dev.adamko.kafkatorio.infra.`docker-compose` @@ -14,9 +14,7 @@ tasks.dockerUp { } - -@Suppress("UnstableApiUsage") // normalizeLineEndings is incubating -val dockerBuildKafkaPipe by tasks.registering(dev.adamko.kafkatorio.task.DockerComposeExec::class) { +val dockerBuildKafkaPipe by tasks.registering(DockerComposeExec::class) { dependsOn(tasks.dockerEnv) dockerComposeDir.set(dockerSrcDir)