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 {
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 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 {

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
plugins {
id("dev.adamko.factoriowebmap.archetype.base")
id("dev.adamko.kafkatorio.base")
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
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")
}

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 {
id("dev.adamko.factoriowebmap.archetype.base")
id("dev.adamko.kafkatorio.base")
}
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()
}