more re-organisation to new name

This commit is contained in:
Adam 2021-12-01 18:12:34 +01:00
parent 633e898f3c
commit 8c75b47a96
37 changed files with 219 additions and 197 deletions

View file

@ -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<KotlinJsPlugin>()
project.plugins.withType<KotlinMultiplatformPlugin>()

View file

@ -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))
}

View file

@ -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
}

View file

@ -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))
}

View file

@ -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 { plugins {
idea idea

View file

@ -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))
}

View file

@ -1,8 +1,11 @@
package dev.adamko.factoriowebmap.archetype package dev.adamko.kafkatorio.lang
import org.gradle.kotlin.dsl.kotlin import org.gradle.kotlin.dsl.kotlin
import com.github.gradle.node.npm.task.NpmTask import com.github.gradle.node.npm.task.NpmTask
import com.github.gradle.node.task.NodeTask 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.dukat.DtsResolver
import org.jetbrains.kotlin.gradle.targets.js.npm.tasks.RootPackageJsonTask import org.jetbrains.kotlin.gradle.targets.js.npm.tasks.RootPackageJsonTask
import org.jetbrains.kotlin.gradle.targets.js.npm.tasks.KotlinPackageJsonTask import org.jetbrains.kotlin.gradle.targets.js.npm.tasks.KotlinPackageJsonTask
@ -12,8 +15,8 @@ import org.jetbrains.kotlin.gradle.targets.js.npm.NpmProject
plugins { plugins {
kotlin("js") kotlin("js")
id("dev.adamko.factoriowebmap.archetype.base") id("dev.adamko.kafkatorio.base")
id("dev.adamko.factoriowebmap.archetype.node") id("dev.adamko.kafkatorio.lang.node")
} }
kotlin { kotlin {

View file

@ -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 import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins { plugins {
id("dev.adamko.factoriowebmap.archetype.base") id("dev.adamko.kafkatorio.base")
kotlin("jvm") kotlin("jvm")
} }

View file

@ -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 import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension
plugins { plugins {
id("dev.adamko.factoriowebmap.archetype.base") id("dev.adamko.kafkatorio.base")
id("dev.adamko.factoriowebmap.archetype.node") id("dev.adamko.kafkatorio.lang.node")
kotlin("multiplatform") kotlin("multiplatform")
} }

View file

@ -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<KotlinJsPlugin>()
project.plugins.withType<KotlinMultiplatformPlugin>()
val jsonMapper = Json {
prettyPrint = true
prettyPrintIndent = " "
}
val packageJsonFile: RegularFile = layout.projectDirectory.file("src/main/typescript/package.json")
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
}
}
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)
}
}
}

View file

@ -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 { plugins {
id("dev.adamko.factoriowebmap.archetype.base") id("dev.adamko.kafkatorio.base")
} }
val processRunnerTaskGroup: String by extra("processes") val processRunnerTaskGroup: String by extra("processes")

View file

@ -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<String, String> = mutableMapOf()
}

View file

@ -1,23 +1,15 @@
import com.github.gradle.node.npm.task.NpmTask import com.github.gradle.node.npm.task.NpmTask
import dev.adamko.factoriowebmap.configurations.asConsumer import dev.adamko.kafkatorio.gradle.asConsumer
import dev.adamko.factoriowebmap.configurations.asProvider import dev.adamko.kafkatorio.gradle.asProvider
import dev.adamko.factoriowebmap.configurations.factorioModAttributes import dev.adamko.kafkatorio.gradle.factorioModAttributes
import dev.adamko.factoriowebmap.configurations.typescriptAttributes import dev.adamko.kafkatorio.gradle.typescriptAttributes
import groovy.json.JsonOutput 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.apache.tools.ant.filters.ReplaceTokens
import org.gradle.kotlin.dsl.support.useToRun
import org.jetbrains.kotlin.util.parseSpaceSeparatedArgs import org.jetbrains.kotlin.util.parseSpaceSeparatedArgs
import org.jetbrains.kotlin.util.suffixIfNot
plugins { plugins {
idea idea
id("dev.adamko.factoriowebmap.archetype.node") id("dev.adamko.kafkatorio.lang.node")
} }
val tokens: Map<String, String> by project.extra val tokens: Map<String, String> by project.extra
@ -29,8 +21,7 @@ node {
nodeProjectDir.set(tsSrcDir) nodeProjectDir.set(tsSrcDir)
} }
val typescriptEventsSchema by configurations.registering {
val dataModelTs by configurations.registering {
asConsumer() asConsumer()
typescriptAttributes(objects) typescriptAttributes(objects)
defaultDependencies { defaultDependencies {
@ -38,7 +29,6 @@ val dataModelTs by configurations.registering {
} }
} }
val typescriptToLua by tasks.registering(NpmTask::class) { val typescriptToLua by tasks.registering(NpmTask::class) {
description = "Convert Typescript To Lua" description = "Convert Typescript To Lua"
group = project.name group = project.name
@ -75,56 +65,14 @@ val typescriptToLua by tasks.registering(NpmTask::class) {
} }
val updatePackageJsonVersion by tasks.registering { val fetchEventsSchema by tasks.registering(Sync::class) {
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) {
group = project.name group = project.name
description = "Fetch the latest shared data-model" description = "Fetch the latest shared data-model"
dependsOn(dataModelTs) dependsOn(typescriptEventsSchema)
from( from(
dataModelTs.map { c -> typescriptEventsSchema.map { c ->
c.incoming c.incoming
.artifactView { lenient(true) } .artifactView { lenient(true) }
.artifacts .artifacts
@ -136,7 +84,6 @@ val updateDataModel by tasks.registering(Sync::class) {
into(layout.projectDirectory.dir("src/main/typescript/model")) into(layout.projectDirectory.dir("src/main/typescript/model"))
} }
val packageMod by tasks.registering(Zip::class) { val packageMod by tasks.registering(Zip::class) {
description = "Package mod files into ZIP" description = "Package mod files into ZIP"
group = project.name group = project.name
@ -204,8 +151,11 @@ val factorioModProvider by configurations.registering {
outgoing.artifact(packageMod) 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) } tasks.build { dependsOn(packageMod) }

View file

@ -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 {Serdes} from "./serdes/serdes"
// import {FactorioEvent, JsonTable} from "./model/model";
const MOD_VERSION = script.active_mods["factorio-web-map"] const MOD_VERSION = script.active_mods["factorio-web-map"]

View file

@ -1,5 +1,5 @@
{ {
"name": "factorio-web-map-mod", "name": "kafkatorio-events",
"version": "0.0.7", "version": "0.0.7",
"private": true, "private": true,
"scripts": { "scripts": {

View file

@ -1,5 +1,5 @@
plugins { plugins {
id("dev.adamko.factoriowebmap.archetype.kotlin-jvm") id("dev.adamko.kafkatorio.lang.kotlin-jvm")
kotlin("plugin.serialization") kotlin("plugin.serialization")
application application
} }

View file

@ -1,4 +1,4 @@
package dev.adamko.factorioevents.processor package dev.adamko.kafkatorio.processor
/** /**
* Process the raw messages from a server. * Process the raw messages from a server.

View file

@ -1,4 +1,4 @@
package dev.adamko.factorioevents.processor package dev.adamko.kafkatorio.processor
import java.util.Properties import java.util.Properties
import org.apache.kafka.streams.KafkaStreams import org.apache.kafka.streams.KafkaStreams

View file

@ -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
import org.apache.kafka.streams.errors.StreamsUncaughtExceptionHandler.StreamThreadExceptionResponse import org.apache.kafka.streams.errors.StreamsUncaughtExceptionHandler.StreamThreadExceptionResponse

View file

@ -1,7 +1,7 @@
package dev.adamko.factorioevents.processor.config package dev.adamko.kafkatorio.processor.config
import com.fasterxml.jackson.databind.JsonNode 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.io.StringReader
import java.time.Clock import java.time.Clock
import java.util.Properties import java.util.Properties

View file

@ -1,4 +1,4 @@
package dev.adamko.factorioevents.processor.config package dev.adamko.kafkatorio.processor.config
import java.io.File import java.io.File
import org.http4k.cloudnative.env.Environment import org.http4k.cloudnative.env.Environment

View file

@ -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.cloudnative.env.Port
import org.http4k.lens.BiDiLensSpec import org.http4k.lens.BiDiLensSpec

View file

@ -1,4 +1,4 @@
package dev.adamko.factorioevents.processor.config package dev.adamko.kafkatorio.processor.config
import java.io.File import java.io.File
import java.io.FileNotFoundException import java.io.FileNotFoundException

View file

@ -1,8 +1,8 @@
package dev.adamko.factorioevents.processor package dev.adamko.kafkatorio.processor
import dev.adamko.factorioevents.model.FactorioEvent import dev.adamko.kafkatorio.events.schema.FactorioEvent
import dev.adamko.factorioevents.model.jsonMapper import dev.adamko.kafkatorio.events.schema.jsonMapper
import dev.adamko.factorioevents.processor.config.ApplicationProperties import dev.adamko.kafkatorio.processor.config.ApplicationProperties
import java.time.Duration import java.time.Duration
import org.apache.kafka.common.serialization.Serdes import org.apache.kafka.common.serialization.Serdes
import org.apache.kafka.streams.KafkaStreams import org.apache.kafka.streams.KafkaStreams

View file

@ -1,8 +1,8 @@
import dev.adamko.factoriowebmap.configurations.asProvider import dev.adamko.kafkatorio.gradle.asProvider
import dev.adamko.factoriowebmap.configurations.typescriptAttributes import dev.adamko.kafkatorio.gradle.typescriptAttributes
plugins { plugins {
id("dev.adamko.factoriowebmap.archetype.kotlin-jvm") id("dev.adamko.kafkatorio.lang.kotlin-jvm")
kotlin("plugin.serialization") kotlin("plugin.serialization")
} }

View file

@ -1,6 +1,6 @@
@file:Suppress("ClassName") @file:Suppress("ClassName")
package dev.adamko.factorioevents.model package dev.adamko.kafkatorio.events.schema
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable

View file

@ -1,4 +1,4 @@
package dev.adamko.factorioevents.model package dev.adamko.kafkatorio.events.schema
import kotlinx.serialization.SerialName import kotlinx.serialization.SerialName

View file

@ -1,4 +1,4 @@
package dev.adamko.factorioevents.model package dev.adamko.kafkatorio.events.schema
import kotlinx.serialization.KSerializer import kotlinx.serialization.KSerializer
import kotlinx.serialization.builtins.ListSerializer import kotlinx.serialization.builtins.ListSerializer

View file

@ -1,4 +1,4 @@
package dev.adamko.factorioevents.model package dev.adamko.kafkatorio.events.schema
import java.io.File import java.io.File
import kotlin.reflect.KClass import kotlin.reflect.KClass

View file

@ -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.core.spec.style.BehaviorSpec
import io.kotest.matchers.equality.shouldBeEqualToComparingFields import io.kotest.matchers.equality.shouldBeEqualToComparingFields
import kotlinx.serialization.decodeFromString import kotlinx.serialization.decodeFromString

View file

@ -1,11 +1,11 @@
import dev.adamko.factoriowebmap.configurations.asConsumer import dev.adamko.kafkatorio.gradle.asConsumer
import dev.adamko.factoriowebmap.configurations.factorioModAttributes import dev.adamko.kafkatorio.gradle.factorioModAttributes
import dev.adamko.isProcessRunning import dev.adamko.isProcessRunning
import dev.adamko.not import dev.adamko.not
import org.jetbrains.kotlin.util.parseSpaceSeparatedArgs import org.jetbrains.kotlin.util.parseSpaceSeparatedArgs
plugins { plugins {
id("dev.adamko.factoriowebmap.archetype.process-runner") id("dev.adamko.kafkatorio.process-runner")
} }
val tokens: Map<String, String> by project.extra val tokens: Map<String, String> by project.extra
@ -78,4 +78,3 @@ tasks.processRun {
tasks.processKill { tasks.processKill {
dependsOn(clientKill) dependsOn(clientKill)
} }

View file

@ -1,9 +1,9 @@
import dev.adamko.factoriowebmap.configurations.asConsumer import dev.adamko.kafkatorio.gradle.asConsumer
import dev.adamko.factoriowebmap.configurations.factorioModAttributes import dev.adamko.kafkatorio.gradle.factorioModAttributes
import org.jetbrains.kotlin.util.parseSpaceSeparatedArgs import org.jetbrains.kotlin.util.parseSpaceSeparatedArgs
plugins { plugins {
id("dev.adamko.factoriowebmap.archetype.process-runner") id("dev.adamko.kafkatorio.process-runner")
} }
val tokens: Map<String, String> by project.extra val tokens: Map<String, String> by project.extra

View file

@ -1,5 +1,5 @@
plugins { 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 " description = "Send events from a Factorio server to a Kafka topic "

View file

@ -1,5 +1,5 @@
plugins { plugins {
id("dev.adamko.factoriowebmap.archetype.kotlin-jvm") id("dev.adamko.kafkatorio.lang.kotlin-jvm")
} }
//group = "${rootProject.group}.server" //group = "${rootProject.group}.server"

View file

@ -1,25 +1,22 @@
package dev.adamko.ktrcon package dev.adamko.ktrcon
import kotlin.time.Duration import kotlin.time.Duration.Companion.seconds
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import kotlinx.coroutines.runBlocking import kotlinx.coroutines.runBlocking
fun main(): Unit = runBlocking { fun main(): Unit = runBlocking {
KtRconClient3( KtRconClient3(
"localhost", "localhost",
27715, 27715,
Password("coh9oongoojahX4") Password("coh9oongoojahX4")
).use { client -> ).use { client ->
// client.send(PacketType.AUTH_REQUEST, "passwrd") // client.send(PacketType.AUTH_REQUEST, "passwrd")
client.send(PacketType.AUTH_REQUEST, "coh9oongoojahX4") client.send(PacketType.AUTH_REQUEST, "coh9oongoojahX4")
delay(Duration.seconds(10)) delay(10.seconds)
client.send(PacketType.EXEC_COMMAND, "/help") client.send(PacketType.EXEC_COMMAND, "/help")
delay(10.seconds)
delay(Duration.seconds(10))
} }
} }