From 8c75b47a96fa5d0222899974a90bb99b241e2ace Mon Sep 17 00:00:00 2001 From: Adam <897017+asemy@users.noreply.github.com> Date: Wed, 1 Dec 2021 18:12:34 +0100 Subject: [PATCH] more re-organisation to new name --- .../factoriowebmap/archetype/node.gradle.kts | 19 ---- .../configurations/factorioMod.kt | 20 ----- .../factoriowebmap/configurations/type.kt | 15 ---- .../configurations/typescript.kt | 20 ----- .../archetype => kafkatorio}/base.gradle.kts | 6 +- .../kafkatorio/gradle/artifactDistribution.kt | 41 +++++++++ .../gradle/extensions.kt} | 0 .../lang}/kotlin-js.gradle.kts | 9 +- .../lang}/kotlin-jvm.gradle.kts | 7 +- .../lang}/kotlin-multiplatform.gradle.kts | 8 +- .../adamko/kafkatorio/lang/node.gradle.kts | 87 +++++++++++++++++++ .../process-runner.gradle.kts | 7 +- .../kafkatorio/task/UpdatePackageJson.kt | 9 ++ modules/events-mod/build.gradle.kts | 76 +++------------- .../events-mod/src/main/typescript/events.ts | 9 -- .../src/main/typescript/package.json | 2 +- .../kafkatorio-events.ts} | 0 modules/events-processor/build.gradle.kts | 2 +- .../processor/FactorioEventLogConsumer.kt | 2 +- .../processor/FactorioEventsTopology.kt | 2 +- .../processor/StreamsExceptionHandler.kt | 2 +- .../processor/config/ApplicationProperties.kt | 4 +- .../processor/config/Lenses.kt | 2 +- .../processor/config/PortVal.kt | 2 +- .../processor/config/environmentExt.kt | 2 +- .../processor/main.kt | 8 +- modules/events-schema/build.gradle.kts | 6 +- .../events/schema}/builtinTypes.kt | 2 +- .../events/schema}/factorioEvents.kt | 2 +- .../events/schema}/json.kt | 2 +- .../events/schema}/kt2ts.kt | 2 +- .../events/schema}/FactorioEventTest.kt | 9 +- .../infra-factorio-client/build.gradle.kts | 7 +- .../infra-factorio-server/build.gradle.kts | 6 +- modules/infra-kafka-pipe/build.gradle.kts | 2 +- modules/kt-rcon/build.gradle.kts | 2 +- .../src/main/kotlin/dev/adamko/ktrcon/main.kt | 15 ++-- 37 files changed, 219 insertions(+), 197 deletions(-) delete mode 100644 buildSrc/src/main/kotlin/dev/adamko/factoriowebmap/archetype/node.gradle.kts delete mode 100644 buildSrc/src/main/kotlin/dev/adamko/factoriowebmap/configurations/factorioMod.kt delete mode 100644 buildSrc/src/main/kotlin/dev/adamko/factoriowebmap/configurations/type.kt delete mode 100644 buildSrc/src/main/kotlin/dev/adamko/factoriowebmap/configurations/typescript.kt rename buildSrc/src/main/kotlin/dev/adamko/{factoriowebmap/archetype => kafkatorio}/base.gradle.kts (76%) create mode 100644 buildSrc/src/main/kotlin/dev/adamko/kafkatorio/gradle/artifactDistribution.kt rename buildSrc/src/main/kotlin/dev/adamko/{gradleExtensions.kt => kafkatorio/gradle/extensions.kt} (100%) rename buildSrc/src/main/kotlin/dev/adamko/{factoriowebmap/archetype => kafkatorio/lang}/kotlin-js.gradle.kts (87%) rename buildSrc/src/main/kotlin/dev/adamko/{factoriowebmap/archetype => kafkatorio/lang}/kotlin-jvm.gradle.kts (90%) rename buildSrc/src/main/kotlin/dev/adamko/{factoriowebmap/archetype => kafkatorio/lang}/kotlin-multiplatform.gradle.kts (67%) create mode 100644 buildSrc/src/main/kotlin/dev/adamko/kafkatorio/lang/node.gradle.kts rename buildSrc/src/main/kotlin/dev/adamko/{factoriowebmap/archetype => kafkatorio}/process-runner.gradle.kts (72%) create mode 100644 buildSrc/src/main/kotlin/dev/adamko/kafkatorio/task/UpdatePackageJson.kt rename modules/events-mod/src/main/typescript/{model/data-model.ts => schema/kafkatorio-events.ts} (100%) rename modules/events-processor/src/main/kotlin/dev/adamko/{factorioevents => kafkatorio}/processor/FactorioEventLogConsumer.kt (66%) rename modules/events-processor/src/main/kotlin/dev/adamko/{factorioevents => kafkatorio}/processor/FactorioEventsTopology.kt (87%) rename modules/events-processor/src/main/kotlin/dev/adamko/{factorioevents => kafkatorio}/processor/StreamsExceptionHandler.kt (91%) rename modules/events-processor/src/main/kotlin/dev/adamko/{factorioevents => kafkatorio}/processor/config/ApplicationProperties.kt (92%) rename modules/events-processor/src/main/kotlin/dev/adamko/{factorioevents => kafkatorio}/processor/config/Lenses.kt (95%) rename modules/events-processor/src/main/kotlin/dev/adamko/{factorioevents => kafkatorio}/processor/config/PortVal.kt (92%) rename modules/events-processor/src/main/kotlin/dev/adamko/{factorioevents => kafkatorio}/processor/config/environmentExt.kt (97%) rename modules/events-processor/src/main/kotlin/dev/adamko/{factorioevents => kafkatorio}/processor/main.kt (85%) rename modules/events-schema/src/main/kotlin/dev/adamko/{factorioevents/model => kafkatorio/events/schema}/builtinTypes.kt (98%) rename modules/events-schema/src/main/kotlin/dev/adamko/{factorioevents/model => kafkatorio/events/schema}/factorioEvents.kt (98%) rename modules/events-schema/src/main/kotlin/dev/adamko/{factorioevents/model => kafkatorio/events/schema}/json.kt (96%) rename modules/events-schema/src/main/kotlin/dev/adamko/{factorioevents/model => kafkatorio/events/schema}/kt2ts.kt (97%) rename modules/events-schema/src/test/kotlin/dev/adamko/{factorioevents/model => kafkatorio/events/schema}/FactorioEventTest.kt (89%) 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 deleted file mode 100644 index 0984035..0000000 --- a/buildSrc/src/main/kotlin/dev/adamko/factoriowebmap/archetype/node.gradle.kts +++ /dev/null @@ -1,19 +0,0 @@ -package dev.adamko.factoriowebmap.archetype - -import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMultiplatformPlugin -import org.jetbrains.kotlin.gradle.targets.js.KotlinJsPlugin - -plugins { - id("com.github.node-gradle.node") - id("dev.adamko.factoriowebmap.archetype.base") -} - -node { - download.set(true) - version.set("14.18.0") - - distBaseUrl.set(null as String?) // set by dependencyResolutionManagement -} - -project.plugins.withType() -project.plugins.withType() diff --git a/buildSrc/src/main/kotlin/dev/adamko/factoriowebmap/configurations/factorioMod.kt b/buildSrc/src/main/kotlin/dev/adamko/factoriowebmap/configurations/factorioMod.kt deleted file mode 100644 index e158817..0000000 --- a/buildSrc/src/main/kotlin/dev/adamko/factoriowebmap/configurations/factorioMod.kt +++ /dev/null @@ -1,20 +0,0 @@ -package dev.adamko.factoriowebmap.configurations - -import org.gradle.api.artifacts.Configuration -import org.gradle.api.attributes.AttributeContainer -import org.gradle.api.attributes.Bundling -import org.gradle.api.attributes.Category -import org.gradle.api.attributes.LibraryElements -import org.gradle.api.attributes.Usage -import org.gradle.api.model.ObjectFactory -import org.gradle.kotlin.dsl.named - -fun Configuration.factorioModAttributes(objects: ObjectFactory) = - attributes { factorioMod(objects) } - -fun AttributeContainer.factorioMod(objects: ObjectFactory) { - attribute(Usage.USAGE_ATTRIBUTE, objects.named("factorio")) - attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.LIBRARY)) - attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, objects.named(LibraryElements.CLASSES_AND_RESOURCES)) - attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling.EMBEDDED)) -} diff --git a/buildSrc/src/main/kotlin/dev/adamko/factoriowebmap/configurations/type.kt b/buildSrc/src/main/kotlin/dev/adamko/factoriowebmap/configurations/type.kt deleted file mode 100644 index 272b7ce..0000000 --- a/buildSrc/src/main/kotlin/dev/adamko/factoriowebmap/configurations/type.kt +++ /dev/null @@ -1,15 +0,0 @@ -package dev.adamko.factoriowebmap.configurations - -import org.gradle.api.artifacts.Configuration - -fun Configuration.asProvider() { - isVisible = false - isCanBeResolved = false - isCanBeConsumed = true -} - -fun Configuration.asConsumer() { - isVisible = false - isCanBeResolved = true - isCanBeConsumed = false -} diff --git a/buildSrc/src/main/kotlin/dev/adamko/factoriowebmap/configurations/typescript.kt b/buildSrc/src/main/kotlin/dev/adamko/factoriowebmap/configurations/typescript.kt deleted file mode 100644 index 2020f16..0000000 --- a/buildSrc/src/main/kotlin/dev/adamko/factoriowebmap/configurations/typescript.kt +++ /dev/null @@ -1,20 +0,0 @@ -package dev.adamko.factoriowebmap.configurations - -import org.gradle.api.artifacts.Configuration -import org.gradle.api.attributes.AttributeContainer -import org.gradle.api.attributes.Bundling -import org.gradle.api.attributes.Category -import org.gradle.api.attributes.LibraryElements -import org.gradle.api.attributes.Usage -import org.gradle.api.model.ObjectFactory -import org.gradle.kotlin.dsl.named - -fun Configuration.typescriptAttributes(objects: ObjectFactory) = - attributes { typescript(objects) } - -fun AttributeContainer.typescript(objects: ObjectFactory) { - attribute(Usage.USAGE_ATTRIBUTE, objects.named("typescript")) - attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.LIBRARY)) - attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, objects.named(LibraryElements.OBJECTS)) - attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling.EXTERNAL)) -} diff --git a/buildSrc/src/main/kotlin/dev/adamko/factoriowebmap/archetype/base.gradle.kts b/buildSrc/src/main/kotlin/dev/adamko/kafkatorio/base.gradle.kts similarity index 76% rename from buildSrc/src/main/kotlin/dev/adamko/factoriowebmap/archetype/base.gradle.kts rename to buildSrc/src/main/kotlin/dev/adamko/kafkatorio/base.gradle.kts index 999ef24..cb48dee 100644 --- a/buildSrc/src/main/kotlin/dev/adamko/factoriowebmap/archetype/base.gradle.kts +++ b/buildSrc/src/main/kotlin/dev/adamko/kafkatorio/base.gradle.kts @@ -1,4 +1,8 @@ -package dev.adamko.factoriowebmap.archetype +package dev.adamko.kafkatorio + +import org.gradle.kotlin.dsl.base +import org.gradle.kotlin.dsl.extra +import org.gradle.kotlin.dsl.idea plugins { idea diff --git a/buildSrc/src/main/kotlin/dev/adamko/kafkatorio/gradle/artifactDistribution.kt b/buildSrc/src/main/kotlin/dev/adamko/kafkatorio/gradle/artifactDistribution.kt new file mode 100644 index 0000000..e4a9181 --- /dev/null +++ b/buildSrc/src/main/kotlin/dev/adamko/kafkatorio/gradle/artifactDistribution.kt @@ -0,0 +1,41 @@ +package dev.adamko.kafkatorio.gradle + +import org.gradle.api.artifacts.Configuration +import org.gradle.api.attributes.Bundling +import org.gradle.api.attributes.Bundling.BUNDLING_ATTRIBUTE +import org.gradle.api.attributes.Category +import org.gradle.api.attributes.Category.CATEGORY_ATTRIBUTE +import org.gradle.api.attributes.LibraryElements +import org.gradle.api.attributes.LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE +import org.gradle.api.attributes.Usage.USAGE_ATTRIBUTE +import org.gradle.api.model.ObjectFactory +import org.gradle.kotlin.dsl.named + + +fun Configuration.asProvider() { + isVisible = false + isCanBeResolved = false + isCanBeConsumed = true +} + +fun Configuration.asConsumer() { + isVisible = false + isCanBeResolved = true + isCanBeConsumed = false +} + +fun Configuration.factorioModAttributes(objects: ObjectFactory): Configuration = + attributes { + attribute(USAGE_ATTRIBUTE, objects.named("factorio")) + attribute(CATEGORY_ATTRIBUTE, objects.named(Category.LIBRARY)) + attribute(LIBRARY_ELEMENTS_ATTRIBUTE, objects.named(LibraryElements.CLASSES_AND_RESOURCES)) + attribute(BUNDLING_ATTRIBUTE, objects.named(Bundling.EMBEDDED)) + } + +fun Configuration.typescriptAttributes(objects: ObjectFactory) = + attributes { + attribute(USAGE_ATTRIBUTE, objects.named("typescript")) + attribute(CATEGORY_ATTRIBUTE, objects.named(Category.LIBRARY)) + attribute(LIBRARY_ELEMENTS_ATTRIBUTE, objects.named(LibraryElements.OBJECTS)) + attribute(BUNDLING_ATTRIBUTE, objects.named(Bundling.EXTERNAL)) + } diff --git a/buildSrc/src/main/kotlin/dev/adamko/gradleExtensions.kt b/buildSrc/src/main/kotlin/dev/adamko/kafkatorio/gradle/extensions.kt similarity index 100% rename from buildSrc/src/main/kotlin/dev/adamko/gradleExtensions.kt rename to buildSrc/src/main/kotlin/dev/adamko/kafkatorio/gradle/extensions.kt diff --git a/buildSrc/src/main/kotlin/dev/adamko/factoriowebmap/archetype/kotlin-js.gradle.kts b/buildSrc/src/main/kotlin/dev/adamko/kafkatorio/lang/kotlin-js.gradle.kts similarity index 87% rename from buildSrc/src/main/kotlin/dev/adamko/factoriowebmap/archetype/kotlin-js.gradle.kts rename to buildSrc/src/main/kotlin/dev/adamko/kafkatorio/lang/kotlin-js.gradle.kts index 26c4bc6..a7ce394 100644 --- a/buildSrc/src/main/kotlin/dev/adamko/factoriowebmap/archetype/kotlin-js.gradle.kts +++ b/buildSrc/src/main/kotlin/dev/adamko/kafkatorio/lang/kotlin-js.gradle.kts @@ -1,8 +1,11 @@ -package dev.adamko.factoriowebmap.archetype +package dev.adamko.kafkatorio.lang import org.gradle.kotlin.dsl.kotlin import com.github.gradle.node.npm.task.NpmTask import com.github.gradle.node.task.NodeTask +import org.gradle.kotlin.dsl.dependencies +import org.gradle.kotlin.dsl.extra +import org.gradle.kotlin.dsl.getting 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 @@ -12,8 +15,8 @@ import org.jetbrains.kotlin.gradle.targets.js.npm.NpmProject plugins { kotlin("js") - id("dev.adamko.factoriowebmap.archetype.base") - id("dev.adamko.factoriowebmap.archetype.node") + id("dev.adamko.kafkatorio.base") + id("dev.adamko.kafkatorio.lang.node") } kotlin { diff --git a/buildSrc/src/main/kotlin/dev/adamko/factoriowebmap/archetype/kotlin-jvm.gradle.kts b/buildSrc/src/main/kotlin/dev/adamko/kafkatorio/lang/kotlin-jvm.gradle.kts similarity index 90% rename from buildSrc/src/main/kotlin/dev/adamko/factoriowebmap/archetype/kotlin-jvm.gradle.kts rename to buildSrc/src/main/kotlin/dev/adamko/kafkatorio/lang/kotlin-jvm.gradle.kts index 3065c31..88f15be 100644 --- a/buildSrc/src/main/kotlin/dev/adamko/factoriowebmap/archetype/kotlin-jvm.gradle.kts +++ b/buildSrc/src/main/kotlin/dev/adamko/kafkatorio/lang/kotlin-jvm.gradle.kts @@ -1,9 +1,12 @@ -package dev.adamko.factoriowebmap.archetype +package dev.adamko.kafkatorio.lang +import org.gradle.kotlin.dsl.dependencies +import org.gradle.kotlin.dsl.kotlin +import org.gradle.kotlin.dsl.withType import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { - id("dev.adamko.factoriowebmap.archetype.base") + id("dev.adamko.kafkatorio.base") kotlin("jvm") } diff --git a/buildSrc/src/main/kotlin/dev/adamko/factoriowebmap/archetype/kotlin-multiplatform.gradle.kts b/buildSrc/src/main/kotlin/dev/adamko/kafkatorio/lang/kotlin-multiplatform.gradle.kts similarity index 67% rename from buildSrc/src/main/kotlin/dev/adamko/factoriowebmap/archetype/kotlin-multiplatform.gradle.kts rename to buildSrc/src/main/kotlin/dev/adamko/kafkatorio/lang/kotlin-multiplatform.gradle.kts index e110efb..28cd163 100644 --- a/buildSrc/src/main/kotlin/dev/adamko/factoriowebmap/archetype/kotlin-multiplatform.gradle.kts +++ b/buildSrc/src/main/kotlin/dev/adamko/kafkatorio/lang/kotlin-multiplatform.gradle.kts @@ -1,11 +1,13 @@ -package dev.adamko.factoriowebmap.archetype +package dev.adamko.kafkatorio.lang +import org.gradle.kotlin.dsl.configure +import org.gradle.kotlin.dsl.kotlin import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension plugins { - id("dev.adamko.factoriowebmap.archetype.base") - id("dev.adamko.factoriowebmap.archetype.node") + id("dev.adamko.kafkatorio.base") + id("dev.adamko.kafkatorio.lang.node") kotlin("multiplatform") } diff --git a/buildSrc/src/main/kotlin/dev/adamko/kafkatorio/lang/node.gradle.kts b/buildSrc/src/main/kotlin/dev/adamko/kafkatorio/lang/node.gradle.kts new file mode 100644 index 0000000..6f30bb9 --- /dev/null +++ b/buildSrc/src/main/kotlin/dev/adamko/kafkatorio/lang/node.gradle.kts @@ -0,0 +1,87 @@ +package dev.adamko.kafkatorio.lang + +import com.github.gradle.node.NodePlugin +import dev.adamko.kafkatorio.task.UpdatePackageJson +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") +} + +node { + download.set(true) + version.set("14.18.0") + + distBaseUrl.set(null as String?) // set by dependencyResolutionManagement +} + +project.plugins.withType() +project.plugins.withType() + + +val jsonMapper = Json { + prettyPrint = true + prettyPrintIndent = " " +} + + +val packageJsonFile: RegularFile = layout.projectDirectory.file("src/main/typescript/package.json") + +fun arePropertiesUpToDate(properties: () -> Map): Spec = + Spec { + 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 + } + } + +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 }) + + doLast { + val packageJsonContent = packageJsonFile.asFile.readText() + val packageJson = jsonMapper.parseToJsonElement(packageJsonContent).jsonObject + + val newJsonProps = propertiesToCheck.mapValues { (_, newVal) -> JsonPrimitive(newVal) } + + val packageJsonUpdate = JsonObject(packageJson + newJsonProps) + val packageJsonContentUpdated = + jsonMapper + .encodeToString(packageJsonUpdate) + .suffixIfNot("\n") + + packageJsonFile.asFile.writer().useToRun { + write(packageJsonContentUpdated) + } + + } +} diff --git a/buildSrc/src/main/kotlin/dev/adamko/factoriowebmap/archetype/process-runner.gradle.kts b/buildSrc/src/main/kotlin/dev/adamko/kafkatorio/process-runner.gradle.kts similarity index 72% rename from buildSrc/src/main/kotlin/dev/adamko/factoriowebmap/archetype/process-runner.gradle.kts rename to buildSrc/src/main/kotlin/dev/adamko/kafkatorio/process-runner.gradle.kts index c793c71..6ef0e30 100644 --- a/buildSrc/src/main/kotlin/dev/adamko/factoriowebmap/archetype/process-runner.gradle.kts +++ b/buildSrc/src/main/kotlin/dev/adamko/kafkatorio/process-runner.gradle.kts @@ -1,7 +1,10 @@ -package dev.adamko.factoriowebmap.archetype +package dev.adamko.kafkatorio + +import org.gradle.kotlin.dsl.extra +import org.gradle.kotlin.dsl.registering plugins { - id("dev.adamko.factoriowebmap.archetype.base") + id("dev.adamko.kafkatorio.base") } val processRunnerTaskGroup: String by extra("processes") diff --git a/buildSrc/src/main/kotlin/dev/adamko/kafkatorio/task/UpdatePackageJson.kt b/buildSrc/src/main/kotlin/dev/adamko/kafkatorio/task/UpdatePackageJson.kt new file mode 100644 index 0000000..e7b0ee5 --- /dev/null +++ b/buildSrc/src/main/kotlin/dev/adamko/kafkatorio/task/UpdatePackageJson.kt @@ -0,0 +1,9 @@ +package dev.adamko.kafkatorio.task + +import org.gradle.api.DefaultTask +import org.gradle.api.tasks.Input + +abstract class UpdatePackageJson : DefaultTask() { + @get:Input + val propertiesToCheck: MutableMap = mutableMapOf() +} diff --git a/modules/events-mod/build.gradle.kts b/modules/events-mod/build.gradle.kts index 26413ae..772df6d 100644 --- a/modules/events-mod/build.gradle.kts +++ b/modules/events-mod/build.gradle.kts @@ -1,23 +1,15 @@ import com.github.gradle.node.npm.task.NpmTask -import dev.adamko.factoriowebmap.configurations.asConsumer -import dev.adamko.factoriowebmap.configurations.asProvider -import dev.adamko.factoriowebmap.configurations.factorioModAttributes -import dev.adamko.factoriowebmap.configurations.typescriptAttributes +import dev.adamko.kafkatorio.gradle.asConsumer +import dev.adamko.kafkatorio.gradle.asProvider +import dev.adamko.kafkatorio.gradle.factorioModAttributes +import dev.adamko.kafkatorio.gradle.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 - id("dev.adamko.factoriowebmap.archetype.node") + id("dev.adamko.kafkatorio.lang.node") } val tokens: Map by project.extra @@ -29,8 +21,7 @@ node { nodeProjectDir.set(tsSrcDir) } - -val dataModelTs by configurations.registering { +val typescriptEventsSchema by configurations.registering { asConsumer() typescriptAttributes(objects) defaultDependencies { @@ -38,7 +29,6 @@ val dataModelTs by configurations.registering { } } - val typescriptToLua by tasks.registering(NpmTask::class) { description = "Convert Typescript To Lua" group = project.name @@ -75,56 +65,14 @@ val typescriptToLua by tasks.registering(NpmTask::class) { } -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 { - // check to see if the version is already up-to-date - val packageJsonContent = packageJsonFile.asFile.readText() - val packageJson = jsonFormatter.parseToJsonElement(packageJsonContent).jsonObject - packageJson["version"]?.jsonPrimitive?.content != projectVersion - } - - 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) - } - } -} - -val updateDataModel by tasks.registering(Sync::class) { +val fetchEventsSchema by tasks.registering(Sync::class) { group = project.name description = "Fetch the latest shared data-model" - dependsOn(dataModelTs) + dependsOn(typescriptEventsSchema) from( - dataModelTs.map { c -> + typescriptEventsSchema.map { c -> c.incoming .artifactView { lenient(true) } .artifacts @@ -136,7 +84,6 @@ val updateDataModel by tasks.registering(Sync::class) { into(layout.projectDirectory.dir("src/main/typescript/model")) } - val packageMod by tasks.registering(Zip::class) { description = "Package mod files into ZIP" group = project.name @@ -204,8 +151,11 @@ val factorioModProvider by configurations.registering { outgoing.artifact(packageMod) } +tasks.updatePackageJson { + propertiesToCheck["name"] = "${rootProject.name}-${project.name}" +} -tasks.assemble { dependsOn(updateDataModel, updatePackageJsonVersion) } +tasks.assemble { dependsOn(fetchEventsSchema, tasks.updatePackageJson) } tasks.build { dependsOn(packageMod) } diff --git a/modules/events-mod/src/main/typescript/events.ts b/modules/events-mod/src/main/typescript/events.ts index e63cf1f..0fb6924 100644 --- a/modules/events-mod/src/main/typescript/events.ts +++ b/modules/events-mod/src/main/typescript/events.ts @@ -1,13 +1,4 @@ -// import {Data, Mods} from "typed-factorio/settings/types" -// import { events } from "typed-factorio/generated" - -// declare const factorioData: Data -// declare const factorioMods: Mods - - import {Serdes} from "./serdes/serdes" -// import {FactorioEvent, JsonTable} from "./model/model"; - const MOD_VERSION = script.active_mods["factorio-web-map"] diff --git a/modules/events-mod/src/main/typescript/package.json b/modules/events-mod/src/main/typescript/package.json index 4bc733a..f0ebee7 100644 --- a/modules/events-mod/src/main/typescript/package.json +++ b/modules/events-mod/src/main/typescript/package.json @@ -1,5 +1,5 @@ { - "name": "factorio-web-map-mod", + "name": "kafkatorio-events", "version": "0.0.7", "private": true, "scripts": { diff --git a/modules/events-mod/src/main/typescript/model/data-model.ts b/modules/events-mod/src/main/typescript/schema/kafkatorio-events.ts similarity index 100% rename from modules/events-mod/src/main/typescript/model/data-model.ts rename to modules/events-mod/src/main/typescript/schema/kafkatorio-events.ts diff --git a/modules/events-processor/build.gradle.kts b/modules/events-processor/build.gradle.kts index 9b30683..2066d02 100644 --- a/modules/events-processor/build.gradle.kts +++ b/modules/events-processor/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("dev.adamko.factoriowebmap.archetype.kotlin-jvm") + id("dev.adamko.kafkatorio.lang.kotlin-jvm") kotlin("plugin.serialization") application } diff --git a/modules/events-processor/src/main/kotlin/dev/adamko/factorioevents/processor/FactorioEventLogConsumer.kt b/modules/events-processor/src/main/kotlin/dev/adamko/kafkatorio/processor/FactorioEventLogConsumer.kt similarity index 66% rename from modules/events-processor/src/main/kotlin/dev/adamko/factorioevents/processor/FactorioEventLogConsumer.kt rename to modules/events-processor/src/main/kotlin/dev/adamko/kafkatorio/processor/FactorioEventLogConsumer.kt index 091f084..5ced240 100644 --- a/modules/events-processor/src/main/kotlin/dev/adamko/factorioevents/processor/FactorioEventLogConsumer.kt +++ b/modules/events-processor/src/main/kotlin/dev/adamko/kafkatorio/processor/FactorioEventLogConsumer.kt @@ -1,4 +1,4 @@ -package dev.adamko.factorioevents.processor +package dev.adamko.kafkatorio.processor /** * Process the raw messages from a server. diff --git a/modules/events-processor/src/main/kotlin/dev/adamko/factorioevents/processor/FactorioEventsTopology.kt b/modules/events-processor/src/main/kotlin/dev/adamko/kafkatorio/processor/FactorioEventsTopology.kt similarity index 87% rename from modules/events-processor/src/main/kotlin/dev/adamko/factorioevents/processor/FactorioEventsTopology.kt rename to modules/events-processor/src/main/kotlin/dev/adamko/kafkatorio/processor/FactorioEventsTopology.kt index 83924d9..4bd53cb 100644 --- a/modules/events-processor/src/main/kotlin/dev/adamko/factorioevents/processor/FactorioEventsTopology.kt +++ b/modules/events-processor/src/main/kotlin/dev/adamko/kafkatorio/processor/FactorioEventsTopology.kt @@ -1,4 +1,4 @@ -package dev.adamko.factorioevents.processor +package dev.adamko.kafkatorio.processor import java.util.Properties import org.apache.kafka.streams.KafkaStreams diff --git a/modules/events-processor/src/main/kotlin/dev/adamko/factorioevents/processor/StreamsExceptionHandler.kt b/modules/events-processor/src/main/kotlin/dev/adamko/kafkatorio/processor/StreamsExceptionHandler.kt similarity index 91% rename from modules/events-processor/src/main/kotlin/dev/adamko/factorioevents/processor/StreamsExceptionHandler.kt rename to modules/events-processor/src/main/kotlin/dev/adamko/kafkatorio/processor/StreamsExceptionHandler.kt index 107e6e5..78009c3 100644 --- a/modules/events-processor/src/main/kotlin/dev/adamko/factorioevents/processor/StreamsExceptionHandler.kt +++ b/modules/events-processor/src/main/kotlin/dev/adamko/kafkatorio/processor/StreamsExceptionHandler.kt @@ -1,4 +1,4 @@ -package dev.adamko.factorioevents.processor +package dev.adamko.kafkatorio.processor import org.apache.kafka.streams.errors.StreamsUncaughtExceptionHandler import org.apache.kafka.streams.errors.StreamsUncaughtExceptionHandler.StreamThreadExceptionResponse diff --git a/modules/events-processor/src/main/kotlin/dev/adamko/factorioevents/processor/config/ApplicationProperties.kt b/modules/events-processor/src/main/kotlin/dev/adamko/kafkatorio/processor/config/ApplicationProperties.kt similarity index 92% rename from modules/events-processor/src/main/kotlin/dev/adamko/factorioevents/processor/config/ApplicationProperties.kt rename to modules/events-processor/src/main/kotlin/dev/adamko/kafkatorio/processor/config/ApplicationProperties.kt index 51c5ed6..c3fe7ec 100644 --- a/modules/events-processor/src/main/kotlin/dev/adamko/factorioevents/processor/config/ApplicationProperties.kt +++ b/modules/events-processor/src/main/kotlin/dev/adamko/kafkatorio/processor/config/ApplicationProperties.kt @@ -1,7 +1,7 @@ -package dev.adamko.factorioevents.processor.config +package dev.adamko.kafkatorio.processor.config import com.fasterxml.jackson.databind.JsonNode -import dev.adamko.factorioevents.processor.config.PortVal.Companion.portVal +import dev.adamko.kafkatorio.processor.config.PortVal.Companion.portVal import java.io.StringReader import java.time.Clock import java.util.Properties diff --git a/modules/events-processor/src/main/kotlin/dev/adamko/factorioevents/processor/config/Lenses.kt b/modules/events-processor/src/main/kotlin/dev/adamko/kafkatorio/processor/config/Lenses.kt similarity index 95% rename from modules/events-processor/src/main/kotlin/dev/adamko/factorioevents/processor/config/Lenses.kt rename to modules/events-processor/src/main/kotlin/dev/adamko/kafkatorio/processor/config/Lenses.kt index 26e5109..fec46a8 100644 --- a/modules/events-processor/src/main/kotlin/dev/adamko/factorioevents/processor/config/Lenses.kt +++ b/modules/events-processor/src/main/kotlin/dev/adamko/kafkatorio/processor/config/Lenses.kt @@ -1,4 +1,4 @@ -package dev.adamko.factorioevents.processor.config +package dev.adamko.kafkatorio.processor.config import java.io.File import org.http4k.cloudnative.env.Environment diff --git a/modules/events-processor/src/main/kotlin/dev/adamko/factorioevents/processor/config/PortVal.kt b/modules/events-processor/src/main/kotlin/dev/adamko/kafkatorio/processor/config/PortVal.kt similarity index 92% rename from modules/events-processor/src/main/kotlin/dev/adamko/factorioevents/processor/config/PortVal.kt rename to modules/events-processor/src/main/kotlin/dev/adamko/kafkatorio/processor/config/PortVal.kt index 498dc77..de0f49a 100644 --- a/modules/events-processor/src/main/kotlin/dev/adamko/factorioevents/processor/config/PortVal.kt +++ b/modules/events-processor/src/main/kotlin/dev/adamko/kafkatorio/processor/config/PortVal.kt @@ -1,4 +1,4 @@ -package dev.adamko.factorioevents.processor.config +package dev.adamko.kafkatorio.processor.config import org.http4k.cloudnative.env.Port import org.http4k.lens.BiDiLensSpec diff --git a/modules/events-processor/src/main/kotlin/dev/adamko/factorioevents/processor/config/environmentExt.kt b/modules/events-processor/src/main/kotlin/dev/adamko/kafkatorio/processor/config/environmentExt.kt similarity index 97% rename from modules/events-processor/src/main/kotlin/dev/adamko/factorioevents/processor/config/environmentExt.kt rename to modules/events-processor/src/main/kotlin/dev/adamko/kafkatorio/processor/config/environmentExt.kt index d0a837f..58d592e 100644 --- a/modules/events-processor/src/main/kotlin/dev/adamko/factorioevents/processor/config/environmentExt.kt +++ b/modules/events-processor/src/main/kotlin/dev/adamko/kafkatorio/processor/config/environmentExt.kt @@ -1,4 +1,4 @@ -package dev.adamko.factorioevents.processor.config +package dev.adamko.kafkatorio.processor.config import java.io.File import java.io.FileNotFoundException diff --git a/modules/events-processor/src/main/kotlin/dev/adamko/factorioevents/processor/main.kt b/modules/events-processor/src/main/kotlin/dev/adamko/kafkatorio/processor/main.kt similarity index 85% rename from modules/events-processor/src/main/kotlin/dev/adamko/factorioevents/processor/main.kt rename to modules/events-processor/src/main/kotlin/dev/adamko/kafkatorio/processor/main.kt index 23bbdde..ecc2789 100644 --- a/modules/events-processor/src/main/kotlin/dev/adamko/factorioevents/processor/main.kt +++ b/modules/events-processor/src/main/kotlin/dev/adamko/kafkatorio/processor/main.kt @@ -1,8 +1,8 @@ -package dev.adamko.factorioevents.processor +package dev.adamko.kafkatorio.processor -import dev.adamko.factorioevents.model.FactorioEvent -import dev.adamko.factorioevents.model.jsonMapper -import dev.adamko.factorioevents.processor.config.ApplicationProperties +import dev.adamko.kafkatorio.events.schema.FactorioEvent +import dev.adamko.kafkatorio.events.schema.jsonMapper +import dev.adamko.kafkatorio.processor.config.ApplicationProperties import java.time.Duration import org.apache.kafka.common.serialization.Serdes import org.apache.kafka.streams.KafkaStreams diff --git a/modules/events-schema/build.gradle.kts b/modules/events-schema/build.gradle.kts index c2a9332..0b83b2a 100644 --- a/modules/events-schema/build.gradle.kts +++ b/modules/events-schema/build.gradle.kts @@ -1,8 +1,8 @@ -import dev.adamko.factoriowebmap.configurations.asProvider -import dev.adamko.factoriowebmap.configurations.typescriptAttributes +import dev.adamko.kafkatorio.gradle.asProvider +import dev.adamko.kafkatorio.gradle.typescriptAttributes plugins { - id("dev.adamko.factoriowebmap.archetype.kotlin-jvm") + id("dev.adamko.kafkatorio.lang.kotlin-jvm") kotlin("plugin.serialization") } diff --git a/modules/events-schema/src/main/kotlin/dev/adamko/factorioevents/model/builtinTypes.kt b/modules/events-schema/src/main/kotlin/dev/adamko/kafkatorio/events/schema/builtinTypes.kt similarity index 98% rename from modules/events-schema/src/main/kotlin/dev/adamko/factorioevents/model/builtinTypes.kt rename to modules/events-schema/src/main/kotlin/dev/adamko/kafkatorio/events/schema/builtinTypes.kt index 162eed3..a4d3b7a 100644 --- a/modules/events-schema/src/main/kotlin/dev/adamko/factorioevents/model/builtinTypes.kt +++ b/modules/events-schema/src/main/kotlin/dev/adamko/kafkatorio/events/schema/builtinTypes.kt @@ -1,6 +1,6 @@ @file:Suppress("ClassName") -package dev.adamko.factorioevents.model +package dev.adamko.kafkatorio.events.schema import kotlinx.serialization.Serializable diff --git a/modules/events-schema/src/main/kotlin/dev/adamko/factorioevents/model/factorioEvents.kt b/modules/events-schema/src/main/kotlin/dev/adamko/kafkatorio/events/schema/factorioEvents.kt similarity index 98% rename from modules/events-schema/src/main/kotlin/dev/adamko/factorioevents/model/factorioEvents.kt rename to modules/events-schema/src/main/kotlin/dev/adamko/kafkatorio/events/schema/factorioEvents.kt index 0d30420..b95e171 100644 --- a/modules/events-schema/src/main/kotlin/dev/adamko/factorioevents/model/factorioEvents.kt +++ b/modules/events-schema/src/main/kotlin/dev/adamko/kafkatorio/events/schema/factorioEvents.kt @@ -1,4 +1,4 @@ -package dev.adamko.factorioevents.model +package dev.adamko.kafkatorio.events.schema import kotlinx.serialization.SerialName diff --git a/modules/events-schema/src/main/kotlin/dev/adamko/factorioevents/model/json.kt b/modules/events-schema/src/main/kotlin/dev/adamko/kafkatorio/events/schema/json.kt similarity index 96% rename from modules/events-schema/src/main/kotlin/dev/adamko/factorioevents/model/json.kt rename to modules/events-schema/src/main/kotlin/dev/adamko/kafkatorio/events/schema/json.kt index 8e98573..3723e74 100644 --- a/modules/events-schema/src/main/kotlin/dev/adamko/factorioevents/model/json.kt +++ b/modules/events-schema/src/main/kotlin/dev/adamko/kafkatorio/events/schema/json.kt @@ -1,4 +1,4 @@ -package dev.adamko.factorioevents.model +package dev.adamko.kafkatorio.events.schema import kotlinx.serialization.KSerializer import kotlinx.serialization.builtins.ListSerializer diff --git a/modules/events-schema/src/main/kotlin/dev/adamko/factorioevents/model/kt2ts.kt b/modules/events-schema/src/main/kotlin/dev/adamko/kafkatorio/events/schema/kt2ts.kt similarity index 97% rename from modules/events-schema/src/main/kotlin/dev/adamko/factorioevents/model/kt2ts.kt rename to modules/events-schema/src/main/kotlin/dev/adamko/kafkatorio/events/schema/kt2ts.kt index e6fe4e9..c650bf6 100644 --- a/modules/events-schema/src/main/kotlin/dev/adamko/factorioevents/model/kt2ts.kt +++ b/modules/events-schema/src/main/kotlin/dev/adamko/kafkatorio/events/schema/kt2ts.kt @@ -1,4 +1,4 @@ -package dev.adamko.factorioevents.model +package dev.adamko.kafkatorio.events.schema import java.io.File import kotlin.reflect.KClass diff --git a/modules/events-schema/src/test/kotlin/dev/adamko/factorioevents/model/FactorioEventTest.kt b/modules/events-schema/src/test/kotlin/dev/adamko/kafkatorio/events/schema/FactorioEventTest.kt similarity index 89% rename from modules/events-schema/src/test/kotlin/dev/adamko/factorioevents/model/FactorioEventTest.kt rename to modules/events-schema/src/test/kotlin/dev/adamko/kafkatorio/events/schema/FactorioEventTest.kt index 0f7386d..e41fb27 100644 --- a/modules/events-schema/src/test/kotlin/dev/adamko/factorioevents/model/FactorioEventTest.kt +++ b/modules/events-schema/src/test/kotlin/dev/adamko/kafkatorio/events/schema/FactorioEventTest.kt @@ -1,5 +1,12 @@ -package dev.adamko.factorioevents.model +package dev.adamko.kafkatorio.events.schema +import dev.adamko.kafkatorio.events.schema.EntityData +import dev.adamko.kafkatorio.events.schema.FactorioEvent +import dev.adamko.kafkatorio.events.schema.FactorioObjectData +import dev.adamko.kafkatorio.events.schema.PlayerData +import dev.adamko.kafkatorio.events.schema.PositionData +import dev.adamko.kafkatorio.events.schema.SurfaceData +import dev.adamko.kafkatorio.events.schema.jsonMapper import io.kotest.core.spec.style.BehaviorSpec import io.kotest.matchers.equality.shouldBeEqualToComparingFields import kotlinx.serialization.decodeFromString diff --git a/modules/infra-factorio-client/build.gradle.kts b/modules/infra-factorio-client/build.gradle.kts index a4415f5..011b29a 100644 --- a/modules/infra-factorio-client/build.gradle.kts +++ b/modules/infra-factorio-client/build.gradle.kts @@ -1,11 +1,11 @@ -import dev.adamko.factoriowebmap.configurations.asConsumer -import dev.adamko.factoriowebmap.configurations.factorioModAttributes +import dev.adamko.kafkatorio.gradle.asConsumer +import dev.adamko.kafkatorio.gradle.factorioModAttributes import dev.adamko.isProcessRunning import dev.adamko.not import org.jetbrains.kotlin.util.parseSpaceSeparatedArgs plugins { - id("dev.adamko.factoriowebmap.archetype.process-runner") + id("dev.adamko.kafkatorio.process-runner") } val tokens: Map by project.extra @@ -78,4 +78,3 @@ tasks.processRun { tasks.processKill { dependsOn(clientKill) } - diff --git a/modules/infra-factorio-server/build.gradle.kts b/modules/infra-factorio-server/build.gradle.kts index 9489d07..c41e6c9 100644 --- a/modules/infra-factorio-server/build.gradle.kts +++ b/modules/infra-factorio-server/build.gradle.kts @@ -1,9 +1,9 @@ -import dev.adamko.factoriowebmap.configurations.asConsumer -import dev.adamko.factoriowebmap.configurations.factorioModAttributes +import dev.adamko.kafkatorio.gradle.asConsumer +import dev.adamko.kafkatorio.gradle.factorioModAttributes import org.jetbrains.kotlin.util.parseSpaceSeparatedArgs plugins { - id("dev.adamko.factoriowebmap.archetype.process-runner") + id("dev.adamko.kafkatorio.process-runner") } val tokens: Map by project.extra diff --git a/modules/infra-kafka-pipe/build.gradle.kts b/modules/infra-kafka-pipe/build.gradle.kts index 2744f98..96ba268 100644 --- a/modules/infra-kafka-pipe/build.gradle.kts +++ b/modules/infra-kafka-pipe/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("dev.adamko.factoriowebmap.archetype.process-runner") + id("dev.adamko.kafkatorio.process-runner") } description = "Send events from a Factorio server to a Kafka topic " diff --git a/modules/kt-rcon/build.gradle.kts b/modules/kt-rcon/build.gradle.kts index 6d1d75e..236d9f6 100644 --- a/modules/kt-rcon/build.gradle.kts +++ b/modules/kt-rcon/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("dev.adamko.factoriowebmap.archetype.kotlin-jvm") + id("dev.adamko.kafkatorio.lang.kotlin-jvm") } //group = "${rootProject.group}.server" diff --git a/modules/kt-rcon/src/main/kotlin/dev/adamko/ktrcon/main.kt b/modules/kt-rcon/src/main/kotlin/dev/adamko/ktrcon/main.kt index 946446c..5486877 100644 --- a/modules/kt-rcon/src/main/kotlin/dev/adamko/ktrcon/main.kt +++ b/modules/kt-rcon/src/main/kotlin/dev/adamko/ktrcon/main.kt @@ -1,25 +1,22 @@ package dev.adamko.ktrcon -import kotlin.time.Duration +import kotlin.time.Duration.Companion.seconds import kotlinx.coroutines.delay import kotlinx.coroutines.runBlocking fun main(): Unit = runBlocking { KtRconClient3( - "localhost", - 27715, - Password("coh9oongoojahX4") + "localhost", + 27715, + Password("coh9oongoojahX4") ).use { client -> - // client.send(PacketType.AUTH_REQUEST, "passwrd") client.send(PacketType.AUTH_REQUEST, "coh9oongoojahX4") - delay(Duration.seconds(10)) + delay(10.seconds) client.send(PacketType.EXEC_COMMAND, "/help") - - delay(Duration.seconds(10)) - + delay(10.seconds) } }