- custom generate typed-factorio files

- buildSrc archetype plugins
This commit is contained in:
Adam 2021-10-10 20:20:01 +02:00
parent ec94c68187
commit 877c1cdb98
96 changed files with 24216 additions and 279 deletions

15
buildSrc/build.gradle.kts Normal file
View file

@ -0,0 +1,15 @@
plugins {
`kotlin-dsl`
}
dependencies {
val kotlinVersion = "1.5.31"
implementation(platform("org.jetbrains.kotlin:kotlin-bom:$kotlinVersion"))
implementation("org.jetbrains.kotlin:kotlin-gradle-plugin")
implementation("com.github.node-gradle:gradle-node-plugin:3.1.1")
}

View file

@ -0,0 +1,43 @@
rootProject.name = "buildSrc"
enableFeaturePreview("VERSION_CATALOGS")
enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")
@Suppress("UnstableApiUsage")
dependencyResolutionManagement {
repositories {
mavenCentral()
gradlePluginPortal()
maven("https://maven.pkg.jetbrains.space/kotlin/p/kotlin/dev/")
maven("https://maven.pkg.jetbrains.space/public/p/kotlinx-html/maven")
// Declare the Node.js download repository
ivy {
name = "Node.js"
setUrl("https://nodejs.org/dist/")
patternLayout {
artifact("v[revision]/[artifact](-v[revision]-[classifier]).[ext]")
}
metadataSources {
artifact()
}
content {
includeModule("org.nodejs", "node")
}
}
}
pluginManagement {
repositories {
mavenCentral()
gradlePluginPortal()
maven {
url = uri("https://maven.pkg.jetbrains.space/kotlin/p/kotlin/dev/")
}
}
}
}

View file

@ -0,0 +1,15 @@
package dev.adamko.factoriowebmap.archetype
plugins {
base
}
group = rootProject.group.toString() + "." + project.name
version = rootProject.version
val projectId by extra(rootProject.name + "-" + project.name)
val modBuildDir by extra(layout.buildDirectory.dir(projectId).get())
//group = "dev.adamko.factoriowebmap"
//version = "0.0.1"

View file

@ -0,0 +1,72 @@
package dev.adamko.factoriowebmap.archetype
import org.gradle.kotlin.dsl.kotlin
import com.github.gradle.node.npm.task.NpmTask
import com.github.gradle.node.task.NodeTask
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 {
kotlin("js")
id("com.github.node-gradle.node")
id("dev.adamko.factoriowebmap.archetype.base")
}
kotlin {
js(IR) {
binaries.executable()
useCommonJs()
nodejs()
//
//// compilations.all {
// compilations["main"].apply {
// packageJson {
// customField(
// "scripts",
// mapOf(
// "build" to "tstl",
// "dev" to "tstl --watch",
// )
// )
// }
// }
}
}
val rootPackageJson by rootProject.tasks.getting(RootPackageJsonTask::class)
//fun NpmTask.setNodeModulesPath(path: String): Unit =
// environment.put("NODE_PATH", path)
//
//fun NpmTask.setNodeModulesPath(folder: File): Unit =
// setNodeModulesPath(folder.normalize().absolutePath)
val nodePath: Directory by extra {
val file = rootPackageJson.rootPackageJson.parentFile.normalize()
logger.lifecycle("Found root NODE_PATH: $file")
project.layout.dir(provider { file }).get()
}
val nodeModulesDir: Directory by extra {
val file = nodePath.dir(NpmProject.NODE_MODULES)
logger.lifecycle("Found root NODE_MODULES: $file")
file
}
node {
download.set(true)
version.set("14.18.0")
distBaseUrl.set(null as String?) // set by dependencyResolutionManagement
nodeProjectDir.set(nodePath)
// nodeProjectDir.set(packageJson.packageJson.parentFile.normalize())
}

View file

@ -0,0 +1,13 @@
package dev.adamko.factoriowebmap.archetype
plugins {
id("dev.adamko.factoriowebmap.archetype.base")
kotlin("jvm")
}
kotlin {
}
dependencies {
implementation(platform("org.jetbrains.kotlin:kotlin-bom"))
}