tidying up after refactor, fix update-package-json task, try to fix factorio-client launcher

This commit is contained in:
Adam 2021-12-01 18:31:18 +01:00
parent 8c75b47a96
commit afbfeda616
7 changed files with 37 additions and 31 deletions

View file

@ -1,4 +1,4 @@
package dev.adamko
package dev.adamko.kafkatorio.gradle
import java.io.ByteArrayOutputStream
import org.gradle.api.Project

View file

@ -2,19 +2,19 @@ package dev.adamko.kafkatorio.lang
import com.github.gradle.node.NodePlugin
import dev.adamko.kafkatorio.task.UpdatePackageJson
import dev.adamko.kafkatorio.gradle.not
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import kotlinx.serialization.json.JsonObject
import kotlinx.serialization.json.JsonPrimitive
import kotlinx.serialization.json.jsonObject
import kotlinx.serialization.json.jsonPrimitive
import org.gradle.kotlin.dsl.registering
import org.gradle.kotlin.dsl.support.useToRun
import org.gradle.kotlin.dsl.withType
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMultiplatformPlugin
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsPlugin
import org.jetbrains.kotlin.util.suffixIfNot
plugins {
id("com.github.node-gradle.node")
id("dev.adamko.kafkatorio.base")
@ -37,38 +37,33 @@ val jsonMapper = Json {
}
val packageJsonFile: RegularFile = layout.projectDirectory.file("src/main/typescript/package.json")
fun arePropertiesUpToDate(
packageJsonFile: RegularFileProperty,
properties: () -> Map<String, String>
): Spec<Task> = Spec<Task> {
val packageJsonContent = packageJsonFile.get().asFile.readText()
val packageJson = jsonMapper.parseToJsonElement(packageJsonContent).jsonObject
fun arePropertiesUpToDate(properties: () -> Map<String, String>): Spec<Task> =
Spec<Task> {
val packageJsonContent = packageJsonFile.asFile.readText()
val packageJson = jsonMapper.parseToJsonElement(packageJsonContent).jsonObject
properties().all { (key, expectedVal) ->
val actualVal = packageJson[key]?.jsonPrimitive?.content
val isUpToDate = expectedVal == actualVal
if (!isUpToDate) {
logger.lifecycle("package.json has outdated property $key=$actualVal (expected: $expectedVal)")
}
isUpToDate
properties().all { (key, expectedVal) ->
val actualVal = packageJson[key]?.jsonPrimitive?.content
(expectedVal == actualVal).also {
if (!it)
logger.lifecycle("package.json has outdated property '$key' (expected: $expectedVal, actual: $actualVal)")
}
}
}
val updatePackageJson by tasks.registering(UpdatePackageJson::class) {
group = NodePlugin.NODE_GROUP
group = project.name
description = "Read the package.json file and update the version and name, based on the project."
propertiesToCheck["version"] = "${project.version}"
outputs.file(packageJsonFile)
// check to see if the properties are already up-to-date
onlyIf(arePropertiesUpToDate { propertiesToCheck })
onlyIf(!arePropertiesUpToDate(packageJsonFile) { propertiesToCheck })
doLast {
val packageJsonContent = packageJsonFile.asFile.readText()
val packageJsonContent = packageJsonFile.get().asFile.readText()
val packageJson = jsonMapper.parseToJsonElement(packageJsonContent).jsonObject
val newJsonProps = propertiesToCheck.mapValues { (_, newVal) -> JsonPrimitive(newVal) }
@ -79,7 +74,9 @@ val updatePackageJson by tasks.registering(UpdatePackageJson::class) {
.encodeToString(packageJsonUpdate)
.suffixIfNot("\n")
packageJsonFile.asFile.writer().useToRun {
logger.lifecycle(packageJsonContentUpdated)
packageJsonFile.get().asFile.writer().useToRun {
write(packageJsonContentUpdated)
}

View file

@ -1,9 +1,13 @@
package dev.adamko.kafkatorio.task
import org.gradle.api.DefaultTask
import org.gradle.api.file.RegularFileProperty
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.OutputFile
abstract class UpdatePackageJson : DefaultTask() {
@get:Input
val propertiesToCheck: MutableMap<String, String> = mutableMapOf()
@get:OutputFile
abstract val packageJsonFile: RegularFileProperty
}