mirror of
https://github.com/SquidDev-CC/CC-Tweaked
synced 2024-11-17 15:24:52 +00:00
d8e2161f15
Mostly useful as it moves some of our build logic out of the main project, as that's already pretty noisy!
92 lines
3.1 KiB
Plaintext
92 lines
3.1 KiB
Plaintext
plugins {
|
|
`lifecycle-base`
|
|
id("cc-tweaked.node")
|
|
id("cc-tweaked.illuaminate")
|
|
}
|
|
|
|
node {
|
|
projectRoot.set(rootProject.projectDir)
|
|
}
|
|
|
|
illuaminate {
|
|
version.set(libs.versions.illuaminate)
|
|
}
|
|
|
|
val rollup by tasks.registering(cc.tweaked.gradle.NpxExecToDir::class) {
|
|
group = LifecycleBasePlugin.BUILD_GROUP
|
|
description = "Bundles JS into rollup"
|
|
|
|
// Sources
|
|
inputs.files(fileTree("src")).withPropertyName("sources")
|
|
// Config files
|
|
inputs.file("tsconfig.json").withPropertyName("Typescript config")
|
|
inputs.file("rollup.config.js").withPropertyName("Rollup config")
|
|
|
|
// Output directory. Also defined in illuaminate.sexp and rollup.config.js
|
|
output.set(buildDir.resolve("rollup"))
|
|
|
|
args = listOf("rollup", "--config", "rollup.config.js")
|
|
}
|
|
|
|
val illuaminateDocs by tasks.registering(cc.tweaked.gradle.IlluaminateExecToDir::class) {
|
|
group = JavaBasePlugin.DOCUMENTATION_GROUP
|
|
description = "Generates docs using Illuaminate"
|
|
|
|
// Config files
|
|
inputs.file(rootProject.file("illuaminate.sexp")).withPropertyName("illuaminate config")
|
|
// Sources
|
|
inputs.files(fileTree("doc")).withPropertyName("docs")
|
|
inputs.files(fileTree("src/main/resources/data/computercraft/lua")).withPropertyName("lua rom")
|
|
inputs.files(rootProject.tasks.named("luaJavadoc"))
|
|
// Additional assets
|
|
inputs.files(rollup)
|
|
inputs.file("src/styles.css").withPropertyName("styles")
|
|
|
|
// Output directory. Also defined in illuaminate.sexp and transform.tsx
|
|
output.set(buildDir.resolve("illuaminate"))
|
|
|
|
args = listOf("doc-gen")
|
|
workingDir = rootProject.projectDir
|
|
}
|
|
|
|
val jsxDocs by tasks.registering(cc.tweaked.gradle.NpxExecToDir::class) {
|
|
group = JavaBasePlugin.DOCUMENTATION_GROUP
|
|
description = "Post-processes documentation to statically render some dynamic content."
|
|
|
|
// Config files
|
|
inputs.file("tsconfig.json").withPropertyName("Typescript config")
|
|
// Sources
|
|
inputs.files(fileTree("src")).withPropertyName("sources")
|
|
inputs.file(rootProject.file("src/generated/export/index.json")).withPropertyName("export")
|
|
inputs.files(illuaminateDocs)
|
|
|
|
// Output directory. Also defined in src/transform.tsx
|
|
output.set(buildDir.resolve("jsxDocs"))
|
|
|
|
args = listOf("ts-node", "-T", "--esm", "src/transform.tsx")
|
|
}
|
|
|
|
val docWebsite by tasks.registering(Copy::class) {
|
|
group = JavaBasePlugin.DOCUMENTATION_GROUP
|
|
description = "Assemble docs and assets together into the documentation website."
|
|
duplicatesStrategy = DuplicatesStrategy.FAIL
|
|
|
|
from(jsxDocs)
|
|
|
|
// Pick up assets from the /docs folder
|
|
from(rootProject.file("doc")) {
|
|
include("logo.png")
|
|
include("images/**")
|
|
}
|
|
// index.js is provided by illuaminate, but rollup outputs some other chunks
|
|
from(rollup) { exclude("index.js") }
|
|
// Grab illuaminate's assets. HTML files are provided by jsxDocs
|
|
from(illuaminateDocs) { exclude("**/*.html") }
|
|
// And item/block images from the data export
|
|
from(rootProject.file("src/generated/export/items")) { into("images/items") }
|
|
|
|
into(buildDir.resolve("site"))
|
|
}
|
|
|
|
tasks.assemble { dependsOn(docWebsite) }
|