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")
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 projectTokensX = projectTokens.apply {
@ -50,6 +51,7 @@ val projectTokensX = projectTokens.apply {
val tsSrcDir: Directory = layout.projectDirectory.dir("src/main/typescript")
node {
nodeProjectDir.set(layout.projectDirectory)
}
@ -80,7 +82,7 @@ val installEventsTsSchema by tasks.registering(Sync::class) {
group = project.name
dependsOn(typescriptEventsSchema)
dependsOn(fixLink)
// dependsOn(fixLink)
val outputDir = layout.projectDirectory.dir("src/main/typescript/generated/kafkatorio-schema")
outputs.dir(outputDir)
@ -159,59 +161,59 @@ tasks.withType<Zip>().configureEach {
// }
}
tasks.npmInstall {
nodeModulesOutputFilter {
exclude("**/typed-factorio/generated/classes.d.ts")
}
}
//tasks.npmInstall {
// nodeModulesOutputFilter {
// exclude("**/typed-factorio/generated/classes.d.ts")
// }
//}
interface ServiceProvider {
@get:Inject
val fs: FileSystemOperations
}
val fixLink by tasks.registering {
dependsOn(tasks.npmInstall)
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 typedFactorioDir =
layout.projectDirectory.dir("src/main/typescript/node_modules/typed-factorio")
val classesDTS = typedFactorioDir.file("generated/classes.d.ts")
val services = project.objects.newInstance<ServiceProvider>()
inputs.file(classesDTS)
outputs.file(classesDTS)
inputs.property("badLink", badLink)
inputs.property("goodLink", goodLink)
doLast {
logger.lifecycle("fixing link ${classesDTS.asFile.canonicalPath}")
services.fs.sync {
from(classesDTS)
into(temporaryDir)
filter { line ->
when {
line.contains(badLink) -> line.replace(badLink, goodLink)
else -> line
}
}
}
services.fs.copy {
from(temporaryDir.resolve("classes.d.ts").canonicalPath)
into(classesDTS.asFile.parent)
duplicatesStrategy = DuplicatesStrategy.WARN
}
}
}
tasks.assemble { dependsOn(fixLink) }
//interface ServiceProvider {
// @get:Inject
// val fs: FileSystemOperations
//}
//
//val fixLink by tasks.registering {
// dependsOn(tasks.npmInstall)
//
//
// 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 typedFactorioDir =
// layout.projectDirectory.dir("src/main/typescript/node_modules/typed-factorio")
// val classesDTS = typedFactorioDir.file("generated/classes.d.ts")
//
// val services = project.objects.newInstance<ServiceProvider>()
//
// inputs.file(classesDTS)
// outputs.file(classesDTS)
//
// inputs.property("badLink", badLink)
// inputs.property("goodLink", goodLink)
//
// doLast {
// logger.lifecycle("fixing link ${classesDTS.asFile.canonicalPath}")
//
// services.fs.sync {
// from(classesDTS)
// into(temporaryDir)
// filter { line ->
// when {
// line.contains(badLink) -> line.replace(badLink, goodLink)
// else -> line
// }
// }
// }
//
// services.fs.copy {
// from(temporaryDir.resolve("classes.d.ts").canonicalPath)
// into(classesDTS.asFile.parent)
// duplicatesStrategy = DuplicatesStrategy.WARN
// }
// }
//}
//
//tasks.assemble { dependsOn(fixLink) }
//val downloadFactorioApiDocs by tasks.registering {
@ -253,9 +255,11 @@ val factorioModProvider by configurations.registering {
val packageJsonName = providers.provider { "${rootProject.name}-${project.name}" }
tasks.updatePackageJson {
// mustRunAfter(tasks.npmInstall)
inputs.property("packageJsonName", 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": {
"node": "~14.19.1"
},
"devDependencies": {
},
"devDependencies": {},
"dependencies": {
"lua-types": "^2.11.0",
"typescript-to-lua": "1.4.4",
@ -18,10 +17,7 @@
"typescript": "4.6.2"
},
"license": "UNLICENSED",
"peerDependencies": {
},
"optionalDependencies": {
},
"bundledDependencies": [
]
"peerDependencies": {},
"optionalDependencies": {},
"bundledDependencies": []
}

View file

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