diff options
Diffstat (limited to 'subprojects/docs/build.gradle.kts')
-rw-r--r-- | subprojects/docs/build.gradle.kts | 142 |
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 | |||
7 | import org.siouan.frontendgradleplugin.infrastructure.gradle.RunYarn | ||
8 | import tools.refinery.gradle.utils.SonarPropertiesUtils | ||
9 | |||
10 | plugins { | ||
11 | id("tools.refinery.gradle.frontend-workspace") | ||
12 | id("tools.refinery.gradle.sonarqube") | ||
13 | } | ||
14 | |||
15 | frontend { | ||
16 | assembleScript.set("run build") | ||
17 | } | ||
18 | |||
19 | val javadocs: Configuration by configurations.creating { | ||
20 | isCanBeConsumed = false | ||
21 | isCanBeResolved = true | ||
22 | } | ||
23 | |||
24 | dependencies { | ||
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 | |||
47 | val srcDir = "src" | ||
48 | |||
49 | val docusaurusOutputDir = layout.buildDirectory.dir("docusaurus") | ||
50 | |||
51 | val javadocsDir = layout.buildDirectory.dir("javadocs") | ||
52 | |||
53 | val javadocsDocsDir = javadocsDir.map { root -> root.dir("develop/javadoc") } | ||
54 | |||
55 | val 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 | |||
65 | val lintConfigFiles: FileCollection = configFiles + files( | ||
66 | rootProject.file(".eslintrc.cjs"), | ||
67 | rootProject.file("prettier.config.cjs") | ||
68 | ) | ||
69 | |||
70 | tasks { | ||
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 | |||
138 | sonarqube.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 | } | ||