From babe0161ae6fef6b1c31f4d6207bdf9464033a13 Mon Sep 17 00:00:00 2001 From: Adam <897017+asemy@users.noreply.github.com> Date: Sun, 28 Nov 2021 18:11:39 +0100 Subject: [PATCH] auto package.json version update --- buildSrc/build.gradle.kts | 9 ++- .../factoriowebmap/archetype/node.gradle.kts | 10 ---- modules/mod/build.gradle.kts | 58 +++++++++++++++++++ modules/mod/src/main/typescript/package.json | 14 +++-- 4 files changed, 73 insertions(+), 18 deletions(-) diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index 5e0c6e6..28abbf2 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -4,7 +4,6 @@ plugins { idea `kotlin-dsl` kotlin("jvm") version "1.6.0" - `java-gradle-plugin` } dependencies { @@ -13,9 +12,14 @@ dependencies { implementation(platform("org.jetbrains.kotlin:kotlin-bom:$kotlinVersion")) implementation("org.jetbrains.kotlin:kotlin-serialization") - + implementation("org.jetbrains.kotlin:kotlin-reflect") implementation("org.jetbrains.kotlin:kotlin-gradle-plugin") + val kotlinXSerializationVersion = "1.3.1" + implementation(platform("org.jetbrains.kotlinx:kotlinx-serialization-bom:$kotlinXSerializationVersion")) + implementation("org.jetbrains.kotlinx:kotlinx-serialization-json") + + implementation("com.github.node-gradle:gradle-node-plugin:3.1.1") } @@ -39,7 +43,6 @@ tasks.withType().configureEach { ) } - kotlin { jvmToolchain { (this as JavaToolchainSpec).languageVersion.set(JavaLanguageVersion.of(projectJvmTarget)) diff --git a/buildSrc/src/main/kotlin/dev/adamko/factoriowebmap/archetype/node.gradle.kts b/buildSrc/src/main/kotlin/dev/adamko/factoriowebmap/archetype/node.gradle.kts index 77788fc..0984035 100644 --- a/buildSrc/src/main/kotlin/dev/adamko/factoriowebmap/archetype/node.gradle.kts +++ b/buildSrc/src/main/kotlin/dev/adamko/factoriowebmap/archetype/node.gradle.kts @@ -1,16 +1,7 @@ package dev.adamko.factoriowebmap.archetype -import org.gradle.kotlin.dsl.kotlin -import com.github.gradle.node.npm.task.NpmTask -import com.github.gradle.node.npm.task.NpxTask -import com.github.gradle.node.task.NodeTask import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMultiplatformPlugin import org.jetbrains.kotlin.gradle.targets.js.KotlinJsPlugin -import org.jetbrains.kotlin.gradle.targets.js.dukat.DtsResolver -import org.jetbrains.kotlin.gradle.targets.js.npm.tasks.RootPackageJsonTask -import org.jetbrains.kotlin.gradle.targets.js.npm.tasks.KotlinPackageJsonTask -import org.jetbrains.kotlin.util.parseSpaceSeparatedArgs -import org.jetbrains.kotlin.gradle.targets.js.npm.NpmProject plugins { id("com.github.node-gradle.node") @@ -26,4 +17,3 @@ node { project.plugins.withType() project.plugins.withType() - diff --git a/modules/mod/build.gradle.kts b/modules/mod/build.gradle.kts index 3590ace..677523f 100644 --- a/modules/mod/build.gradle.kts +++ b/modules/mod/build.gradle.kts @@ -1,8 +1,17 @@ import com.github.gradle.node.npm.task.NpmTask import dev.adamko.factoriowebmap.configurations.asConsumer import dev.adamko.factoriowebmap.configurations.typescriptAttributes +import groovy.json.JsonOutput +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.apache.tools.ant.filters.ReplaceTokens +import org.gradle.kotlin.dsl.support.useToRun import org.jetbrains.kotlin.util.parseSpaceSeparatedArgs +import org.jetbrains.kotlin.util.suffixIfNot plugins { idea @@ -55,6 +64,55 @@ val tstlTask = tasks.register("typescriptToLua") { } +val updatePackageJsonVersion by tasks.registering { + group = project.name + description = """ + Read the package.json file and set the version to be the project's version. + """.trimIndent() + + val projectVersion = "${project.version}" + inputs.properties( + "projectVersion" to projectVersion, + ) + + val packageJsonFile = layout.projectDirectory.file("src/main/typescript/package.json") + outputs.file(packageJsonFile) + + val jsonFormatter = Json { + prettyPrint = true + prettyPrintIndent = " " + } + + onlyIf { + val packageJsonContent = packageJsonFile.asFile.readText() + val packageJson = jsonFormatter.parseToJsonElement(packageJsonContent).jsonObject + packageJson["version"]?.jsonPrimitive?.content != projectVersion + } + + doFirst { + delete(temporaryDir) + mkdir(temporaryDir) + } + + doLast { + val packageJsonContent = packageJsonFile.asFile.readText() + val packageJson = jsonFormatter.parseToJsonElement(packageJsonContent).jsonObject + val packageJsonUpdate = JsonObject( + packageJson + ("version" to JsonPrimitive(projectVersion)) + ) + val packageJsonContentUpdated = + jsonFormatter + .encodeToString(packageJsonUpdate) + .suffixIfNot("\n") + packageJsonFile.asFile.writer().useToRun { + write(packageJsonContentUpdated) + } + } +} + +tasks.assemble { dependsOn(updatePackageJsonVersion) } + + val dataModelTs: Configuration by configurations.creating { asConsumer() typescriptAttributes(objects) diff --git a/modules/mod/src/main/typescript/package.json b/modules/mod/src/main/typescript/package.json index 91aa84e..f69dcfe 100644 --- a/modules/mod/src/main/typescript/package.json +++ b/modules/mod/src/main/typescript/package.json @@ -1,6 +1,6 @@ { "name": "factorio-web-map-mod", - "version": "0.0.4", + "version": "0.0.5", "private": true, "scripts": { "build": "tstl", @@ -9,7 +9,8 @@ "engines": { "node": ">=10.13.0" }, - "devDependencies": {}, + "devDependencies": { + }, "dependencies": { "lua-types": "^2.11.0", "@types/node": "^12.0.8", @@ -20,7 +21,10 @@ "//": { "typed-factorio": "0.10.0" }, - "peerDependencies": {}, - "optionalDependencies": {}, - "bundledDependencies": [] + "peerDependencies": { + }, + "optionalDependencies": { + }, + "bundledDependencies": [ + ] }