aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/docs/build.gradle.kts
diff options
context:
space:
mode:
Diffstat (limited to 'subprojects/docs/build.gradle.kts')
-rw-r--r--subprojects/docs/build.gradle.kts142
1 files changed, 142 insertions, 0 deletions
diff --git a/subprojects/docs/build.gradle.kts b/subprojects/docs/build.gradle.kts
new file mode 100644
index 00000000..e559ed3e
--- /dev/null
+++ b/subprojects/docs/build.gradle.kts
@@ -0,0 +1,142 @@
1/*
2 * SPDX-FileCopyrightText: 2024 The Refinery Authors <https://refinery.tools/>
3 *
4 * SPDX-License-Identifier: EPL-2.0
5 */
6
7import org.siouan.frontendgradleplugin.infrastructure.gradle.RunYarn
8import tools.refinery.gradle.utils.SonarPropertiesUtils
9
10plugins {
11 id("tools.refinery.gradle.frontend-workspace")
12 id("tools.refinery.gradle.sonarqube")
13}
14
15frontend {
16 assembleScript.set("run build")
17}
18
19val javadocs: Configuration by configurations.creating {
20 isCanBeConsumed = false
21 isCanBeResolved = true
22}
23
24dependencies {
25 javadocs(project(":refinery-generator", "javadocElements"))
26 javadocs(project(":refinery-generator-cli", "javadocElements"))
27 javadocs(project(":refinery-interpreter", "javadocElements"))
28 javadocs(project(":refinery-interpreter-localsearch", "javadocElements"))
29 javadocs(project(":refinery-interpreter-rete", "javadocElements"))
30 javadocs(project(":refinery-interpreter-rete-recipes", "javadocElements"))
31 javadocs(project(":refinery-language", "javadocElements"))
32 javadocs(project(":refinery-language-ide", "javadocElements"))
33 javadocs(project(":refinery-language-model", "javadocElements"))
34 javadocs(project(":refinery-language-semantics", "javadocElements"))
35 javadocs(project(":refinery-language-web", "javadocElements"))
36 javadocs(project(":refinery-logic", "javadocElements"))
37 javadocs(project(":refinery-store", "javadocElements"))
38 javadocs(project(":refinery-store-dse", "javadocElements"))
39 javadocs(project(":refinery-store-dse-visualization", "javadocElements"))
40 javadocs(project(":refinery-store-query", "javadocElements"))
41 javadocs(project(":refinery-store-query-interpreter", "javadocElements"))
42 javadocs(project(":refinery-store-reasoning", "javadocElements"))
43 javadocs(project(":refinery-store-reasoning-scope", "javadocElements"))
44 javadocs(project(":refinery-store-reasoning-smt", "javadocElements"))
45}
46
47val srcDir = "src"
48
49val docusaurusOutputDir = layout.buildDirectory.dir("docusaurus")
50
51val javadocsDir = layout.buildDirectory.dir("javadocs")
52
53val javadocsDocsDir = javadocsDir.map { root -> root.dir("develop/javadoc") }
54
55val configFiles: FileCollection = files(
56 rootProject.file("yarn.lock"),
57 rootProject.file("package.json"),
58 "package.json",
59 rootProject.file("tsconfig.base.json"),
60 "tsconfig.json",
61 "babel.config.config.ts",
62 "docusaurus.config.ts",
63)
64
65val lintConfigFiles: FileCollection = configFiles + files(
66 rootProject.file(".eslintrc.cjs"),
67 rootProject.file("prettier.config.cjs")
68)
69
70tasks {
71 val extractJavadocs by registering {
72 dependsOn(javadocs)
73 outputs.dir(javadocsDir)
74 doFirst {
75 delete(javadocsDir)
76 }
77 doLast {
78 javadocs.resolvedConfiguration.resolvedArtifacts.forEach { artifact ->
79 copy {
80 from(zipTree(artifact.file))
81 into(javadocsDocsDir.map { root -> root.dir(artifact.moduleVersion.id.name) })
82 }
83 }
84 }
85 }
86
87 assembleFrontend {
88 dependsOn(extractJavadocs)
89 inputs.dir(srcDir)
90 inputs.dir("static")
91 inputs.dir(javadocsDir)
92 inputs.files(configFiles)
93 outputs.dir(docusaurusOutputDir)
94 }
95
96 val typeCheckFrontend by registering(RunYarn::class) {
97 dependsOn(installFrontend)
98 inputs.dir(srcDir)
99 inputs.files(configFiles)
100 outputs.dir(layout.buildDirectory.dir("typescript"))
101 script.set("run typecheck")
102 group = "verification"
103 description = "Check for TypeScript type errors."
104 }
105
106 val lintFrontend by registering(RunYarn::class) {
107 dependsOn(installFrontend)
108 dependsOn(typeCheckFrontend)
109 inputs.dir(srcDir)
110 inputs.files(lintConfigFiles)
111 outputs.file(layout.buildDirectory.file("eslint.json"))
112 script.set("run lint")
113 group = "verification"
114 description = "Check for TypeScript lint errors and warnings."
115 }
116
117 register<RunYarn>("fixFrontend") {
118 dependsOn(installFrontend)
119 dependsOn(typeCheckFrontend)
120 inputs.dir(srcDir)
121 inputs.files(lintConfigFiles)
122 script.set("run lint:fix")
123 group = "verification"
124 description = "Check for TypeScript lint errors and warnings."
125 }
126
127 check {
128 dependsOn(typeCheckFrontend)
129 dependsOn(lintFrontend)
130 }
131
132 clean {
133 delete(".docusaurus")
134 delete(".yarn")
135 }
136}
137
138sonarqube.properties {
139 SonarPropertiesUtils.addToList(properties, "sonar.sources", srcDir)
140 property("sonar.nodejs.executable", "${frontend.nodeInstallDirectory.get()}/bin/node")
141 property("sonar.eslint.reportPaths", "${layout.buildDirectory.get()}/eslint.json")
142}