enable gradle build cache, and improve tasks

This commit is contained in:
Adam 2022-04-23 17:59:37 +02:00
parent f339333f76
commit b81e62e2fd
17 changed files with 330 additions and 200 deletions

View file

@ -39,6 +39,7 @@ projectTokens += mapOf(
val tsSrcDir: Directory = layout.projectDirectory.dir("src/main/typescript")
node {
nodeProjectDir.set(tsSrcDir)
}
@ -49,28 +50,20 @@ val typescriptEventsSchema: Configuration by configurations.creating {
typescriptAttributes(objects)
}
dependencies {
typescriptEventsSchema(projects.modules.eventsSchema)
}
val typescriptToLua by tasks.registering(TypescriptToLuaTask::class) {
dependsOn(tasks.npmInstall, installEventsTsSchema, tasks.updatePackageJson)
sourceFiles.set(tsSrcDir)
outputDirectory.set(layout.buildDirectory.dir("typescriptToLua"))
doFirst("cleanTemporaryDir") {
delete(temporaryDir)
mkdir(temporaryDir)
}
doLast("syncTstlOutput") {
sync {
from(temporaryDir)
into(outputDirectory)
}
}
}
val installEventsTsSchema by tasks.registering(Sync::class) {
description = "Fetch the latest shared data-model"
group = project.name
@ -100,10 +93,13 @@ val installEventsTsSchema by tasks.registering(Sync::class) {
into(outputDir)
}
tasks.distZip {
archiveFileName.set(distributionZipName)
archiveFileName.set(provider { distributionZipName })
}
distributions {
main {
@ -165,11 +161,13 @@ val factorioModProvider by configurations.registering {
outgoing.artifact(tasks.distZip.flatMap { it.archiveFile })
}
tasks.updatePackageJson {
propertiesToCheck.put("name", "${rootProject.name}-${project.name}")
propertiesToCheck.put("name", providers.provider { "${rootProject.name}-${project.name}" })
packageJsonFile.set(layout.projectDirectory.file("src/main/typescript/package.json"))
}
tasks.assemble { dependsOn(installEventsTsSchema, tasks.updatePackageJson) }

View file

@ -9,8 +9,7 @@
"engines": {
"node": "~14.19.1"
},
"devDependencies": {
},
"devDependencies": {},
"dependencies": {
"lua-types": "^2.11.0",
"typescript-to-lua": "1.4.3",
@ -19,10 +18,7 @@
},
"// @types/node": "^12.0.8",
"license": "UNLICENSED",
"peerDependencies": {
},
"optionalDependencies": {
},
"bundledDependencies": [
]
"peerDependencies": {},
"optionalDependencies": {},
"bundledDependencies": []
}

View file

@ -1,6 +1,5 @@
import dev.adamko.kafkatorio.gradle.asProvider
import dev.adamko.kafkatorio.gradle.typescriptAttributes
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
@ -111,11 +110,16 @@ kotlin {
val generateTypescript by tasks.registering(JavaExec::class) {
group = "kt2ts"
val jvmJar by tasks.getting(Jar::class)
val main by kotlin.jvm().compilations.getting
val jvmJar = tasks.named<Jar>(kotlin.jvm().artifactsTaskName)
dependsOn(jvmJar)
val mainCompilation = kotlin.jvm().compilations.named("main").map { it.runtimeDependencyFiles }
// dependsOn(mainCompilation)
inputs.files(mainCompilation)
classpath(
jvmJar,
main.runtimeDependencyFiles
mainCompilation
)
// mainClass.set("dev.adamko.kafkatorio.events.schema.Kt2tsKt")

View file

@ -13,6 +13,7 @@ import dev.adamko.kafkatorio.schema.common.toMapChunkPosition
import dev.adamko.kafkatorio.schema.packets.MapChunkUpdate
import dev.adamko.kafkatorio.schema.packets.PrototypesUpdate
import dev.adamko.kotka.extensions.groupedAs
import dev.adamko.kotka.extensions.materializedAs
import dev.adamko.kotka.extensions.materializedWith
import dev.adamko.kotka.extensions.producedAs
import dev.adamko.kotka.extensions.streams.filter
@ -158,74 +159,15 @@ private fun groupTilesIntoChunksWithColours(
kxsBinary.serde<ServerMapChunkTiles<TileProtoHashCode>>(),
)
) { chunkTiles, other -> chunkTiles + other }
// .toStream("server-map-data.tiles.repartition.to-stream")
// .repartition(
// repartitionedAs(
// "server-map-data.tiles.repartition.config",
// kxsBinary.serde<ServerMapChunkId>(),
// kxsBinary.serde<ServerMapChunkTiles<TileProtoHashCode>?>(),
// 3,
// )
// ).toTable(
// "server-map-data.tiles.repartition.to-table",
// materializedWith(
// kxsBinary.serde<ServerMapChunkId>(),
// kxsBinary.serde<ServerMapChunkTiles<TileProtoHashCode>?>(),
// )
// )
// .filter("server-map-data.tiles.repartition.filter-not-null") { _: ServerMapChunkId, v: ServerMapChunkTiles<TileProtoHashCode>? ->
// v != null
// }
// .mapValues(
// "server-map-data.tiles.repartition.map-not-null",
// materializedWith(
// kxsBinary.serde<ServerMapChunkId>(),
// kxsBinary.serde<ServerMapChunkTiles<TileProtoHashCode>>(),
// )
// ) { _: ServerMapChunkId, v: ServerMapChunkTiles<TileProtoHashCode>? ->
// v as ServerMapChunkTiles<TileProtoHashCode>
// }
// repartition to try and fix KTable-KTable joining skipping records
val tileProtoColourDictRepartitioned =
tileProtoColourDict
// .toStream("tileProtoColourDict.repartition.to-stream")
// .repartition(
// repartitionedAs(
// "tileProtoColourDict.repartition.config",
// kxsBinary.serde<FactorioServerId>(),
// kxsBinary.serde<TileColourDict?>(),
// 3,
// )
// ).toTable(
// "tileProtoColourDict.repartition.to-table",
// materializedWith(
// kxsBinary.serde<FactorioServerId>(),
// kxsBinary.serde<TileColourDict?>(),
// )
// )
// .filter("tileProtoColourDict.repartition.filter-not-null") { _: FactorioServerId, v: TileColourDict? ->
// v != null
// }
// .mapValues(
// "tileProtoColourDict.repartition.map-not-null",
// materializedWith(
// kxsBinary.serde<FactorioServerId>(),
// kxsBinary.serde<TileColourDict>(),
// )
// ) { _: FactorioServerId, v: TileColourDict? ->
// v as TileColourDict
// }
val colourisedChunkTable: KTable<ServerMapChunkId, ServerMapChunkTiles<ColourHex>> =
chunkedTilesTable
.join(
other = tileProtoColourDictRepartitioned,
other = tileProtoColourDict,
tableJoined = tableJoined("server-map-data.join-tiles-with-prototypes"),
materialized = materializedWith(
// "server-map-data.join-tiles-with-prototypes.store",
materialized = materializedAs(
"server-map-data.join-tiles-with-prototypes.store",
kxsBinary.serde<ServerMapChunkId>(),
kxsBinary.serde<ServerMapChunkTiles<ColourHex>>(),
),

View file

@ -1,7 +1,7 @@
import dev.adamko.kafkatorio.gradle.asConsumer
import dev.adamko.kafkatorio.gradle.factorioModAttributes
import dev.adamko.kafkatorio.gradle.isProcessRunning
import dev.adamko.kafkatorio.gradle.not
import dev.adamko.kafkatorio.task.ProcessRunningSpec
import org.jetbrains.kotlin.util.parseSpaceSeparatedArgs
plugins {
@ -38,7 +38,7 @@ val deployModToClient by tasks.registering(Copy::class) {
//</editor-fold>
//<editor-fold desc="Factorio client lifecycle tasks">
fun isFactorioRunning(): Spec<Task> = isProcessRunning("factorio.exe")
fun isFactorioRunning(): Spec<Task> = ProcessRunningSpec("factorio.exe")
val clientLaunch by tasks.registering(Exec::class) {
description = "Run Factorio Steam game client"

View file

@ -1,4 +1,3 @@
import org.jetbrains.kotlin.incremental.md5
import org.jetbrains.kotlin.util.parseSpaceSeparatedArgs
plugins {
@ -9,35 +8,32 @@ description = "Send events from a Factorio server to a Kafka topic "
val dockerSrcDir: Directory by extra
fun Directory.filesChecksum() = asFileTree
.files
.map { it.readBytes() + it.absolutePath.toByteArray() }
.fold(byteArrayOf()) { acc, bytes -> acc + bytes }
.md5()
tasks.dockerUp {
dependsOn(":modules:infra-kafka-cluster:dockerUp")
}
val dockerBuildKafkaPipe by tasks.registering(Exec::class) {
group = "docker-compose"
logging.captureStandardOutput(LogLevel.LIFECYCLE)
@Suppress("UnstableApiUsage") // normalizeLineEndings is incubating
val dockerBuildKafkaPipe by tasks.registering(dev.adamko.kafkatorio.task.DockerComposeExec::class) {
dependsOn(tasks.dockerEnv)
inputs.dir(dockerSrcDir)
inputs.property("dockerSrcDirChecksum") { dockerSrcDir.filesChecksum() }
dockerComposeDir.set(dockerSrcDir)
command.set("docker-compose build kafka-pipe")
outputs.upToDateWhen {
it.inputs.properties["dockerSrcDirChecksum"] as? Long? == dockerSrcDir.filesChecksum()
}
// inputs.property("dockerSrcDirChecksum") { dockerSrcDir.filesChecksum() }
//
// outputs.upToDateWhen {
// it.inputs.properties["dockerSrcDirChecksum"] as? Long? == dockerSrcDir.filesChecksum()
// }
// val imageIdFile = file("$temporaryDir/docker-image-id.txt")
// outputs.file(imageIdFile)
workingDir = dockerSrcDir.asFile
commandLine = parseSpaceSeparatedArgs(""" docker-compose build kafka-pipe """)
// workingDir = dockerSrcDir.asFile
// commandLine = parseSpaceSeparatedArgs(""" docker-compose build kafka-pipe """)
// doLast {
// sync {
@ -53,4 +49,5 @@ val dockerBuildKafkaPipe by tasks.registering(Exec::class) {
// }
//}
}
tasks.assemble { dependsOn(dockerBuildKafkaPipe) }