mod: move npm root dir so node_modules isn't in the src dir, and fix the hack for the bug https://github.com/GlassBricks/typed-factorio/issues/13

This commit is contained in:
Adam 2022-05-18 19:36:40 +02:00
parent b6b874d8f7
commit 6d9f303226
4 changed files with 65 additions and 64 deletions

View file

@ -37,7 +37,8 @@ val licenseFile: RegularFile by rootProject.extra
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
val projectTokens: MapProperty<String, String> = val projectTokens: MapProperty<String, String> =
rootProject.extra.get("projectTokens") as? MapProperty<String, String> ?: error("error getting projectTokens") rootProject.extra.get("projectTokens") as? MapProperty<String, String>
?: error("error getting projectTokens")
//val projectTokens: MapProperty<String, String> by rootProject.extra //val projectTokens: MapProperty<String, String> by rootProject.extra
val projectTokensX = projectTokens.apply { val projectTokensX = projectTokens.apply {
@ -50,6 +51,7 @@ val projectTokensX = projectTokens.apply {
val tsSrcDir: Directory = layout.projectDirectory.dir("src/main/typescript") val tsSrcDir: Directory = layout.projectDirectory.dir("src/main/typescript")
node { node {
nodeProjectDir.set(layout.projectDirectory) nodeProjectDir.set(layout.projectDirectory)
} }
@ -80,7 +82,7 @@ val installEventsTsSchema by tasks.registering(Sync::class) {
group = project.name group = project.name
dependsOn(typescriptEventsSchema) dependsOn(typescriptEventsSchema)
dependsOn(fixLink) // dependsOn(fixLink)
val outputDir = layout.projectDirectory.dir("src/main/typescript/generated/kafkatorio-schema") val outputDir = layout.projectDirectory.dir("src/main/typescript/generated/kafkatorio-schema")
outputs.dir(outputDir) outputs.dir(outputDir)
@ -159,59 +161,59 @@ tasks.withType<Zip>().configureEach {
// } // }
} }
tasks.npmInstall { //tasks.npmInstall {
nodeModulesOutputFilter { // nodeModulesOutputFilter {
exclude("**/typed-factorio/generated/classes.d.ts") // exclude("**/typed-factorio/generated/classes.d.ts")
} // }
} //}
interface ServiceProvider { //interface ServiceProvider {
@get:Inject // @get:Inject
val fs: FileSystemOperations // val fs: FileSystemOperations
} //}
//
val fixLink by tasks.registering { //val fixLink by tasks.registering {
dependsOn(tasks.npmInstall) // dependsOn(tasks.npmInstall)
//
//
val badLink = """{@link https://lua-api.factorio.com/latest/Data-Lifecycle.html Data Lifecycle}""" // val badLink = """{@link https://lua-api.factorio.com/latest/Data-Lifecycle.html Data Lifecycle}"""
val goodLink = """https://lua-api.factorio.com/latest/Data-Lifecycle.html""" // val goodLink = """https://lua-api.factorio.com/latest/Data-Lifecycle.html"""
//
val typedFactorioDir = // val typedFactorioDir =
layout.projectDirectory.dir("src/main/typescript/node_modules/typed-factorio") // layout.projectDirectory.dir("src/main/typescript/node_modules/typed-factorio")
val classesDTS = typedFactorioDir.file("generated/classes.d.ts") // val classesDTS = typedFactorioDir.file("generated/classes.d.ts")
//
val services = project.objects.newInstance<ServiceProvider>() // val services = project.objects.newInstance<ServiceProvider>()
//
inputs.file(classesDTS) // inputs.file(classesDTS)
outputs.file(classesDTS) // outputs.file(classesDTS)
//
inputs.property("badLink", badLink) // inputs.property("badLink", badLink)
inputs.property("goodLink", goodLink) // inputs.property("goodLink", goodLink)
//
doLast { // doLast {
logger.lifecycle("fixing link ${classesDTS.asFile.canonicalPath}") // logger.lifecycle("fixing link ${classesDTS.asFile.canonicalPath}")
//
services.fs.sync { // services.fs.sync {
from(classesDTS) // from(classesDTS)
into(temporaryDir) // into(temporaryDir)
filter { line -> // filter { line ->
when { // when {
line.contains(badLink) -> line.replace(badLink, goodLink) // line.contains(badLink) -> line.replace(badLink, goodLink)
else -> line // else -> line
} // }
} // }
} // }
//
services.fs.copy { // services.fs.copy {
from(temporaryDir.resolve("classes.d.ts").canonicalPath) // from(temporaryDir.resolve("classes.d.ts").canonicalPath)
into(classesDTS.asFile.parent) // into(classesDTS.asFile.parent)
duplicatesStrategy = DuplicatesStrategy.WARN // duplicatesStrategy = DuplicatesStrategy.WARN
} // }
} // }
} //}
//
tasks.assemble { dependsOn(fixLink) } //tasks.assemble { dependsOn(fixLink) }
//val downloadFactorioApiDocs by tasks.registering { //val downloadFactorioApiDocs by tasks.registering {
@ -253,9 +255,11 @@ val factorioModProvider by configurations.registering {
val packageJsonName = providers.provider { "${rootProject.name}-${project.name}" } val packageJsonName = providers.provider { "${rootProject.name}-${project.name}" }
tasks.updatePackageJson { tasks.updatePackageJson {
// mustRunAfter(tasks.npmInstall)
inputs.property("packageJsonName", packageJsonName) inputs.property("packageJsonName", packageJsonName)
propertiesToCheck.put("name", packageJsonName) propertiesToCheck.put("name", packageJsonName)
packageJsonFile.set(layout.projectDirectory.file("src/main/typescript/package.json")) val pjProvider = layout.projectDirectory.file(provider { "package.json" })
packageJsonFile2.set(pjProvider)
} }

View file

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

View file

@ -32,7 +32,8 @@
"traceResolution": true, "traceResolution": true,
"noImplicitReturns": true, "noImplicitReturns": true,
"noImplicitOverride": true, "noImplicitOverride": true,
"noFallthroughCasesInSwitch": true "noFallthroughCasesInSwitch": true,
"skipLibCheck": true
}, },
"tstl": { "tstl": {
"luaTarget": "5.2", "luaTarget": "5.2",