/* * SPDX-FileCopyrightText: 2024 The Refinery Authors * * SPDX-License-Identifier: EPL-2.0 */ import org.siouan.frontendgradleplugin.infrastructure.gradle.RunYarn import tools.refinery.gradle.utils.SonarPropertiesUtils plugins { id("tools.refinery.gradle.frontend-workspace") id("tools.refinery.gradle.sonarqube") } frontend { assembleScript.set("run build") } val srcDir = "src" val docusaurusOutputDir = layout.buildDirectory.dir("docusaurus") val configFiles: FileCollection = files( rootProject.file("yarn.lock"), rootProject.file("package.json"), "package.json", rootProject.file("tsconfig.base.json"), "tsconfig.json", "babel.config.config.ts", "docusaurus.config.ts", ) val lintConfigFiles: FileCollection = configFiles + files( rootProject.file(".eslintrc.cjs"), rootProject.file("prettier.config.cjs") ) tasks { assembleFrontend { inputs.dir("src") inputs.files(configFiles) outputs.dir(docusaurusOutputDir) } val typeCheckFrontend by registering(RunYarn::class) { dependsOn(installFrontend) inputs.dir(srcDir) inputs.files(configFiles) outputs.dir(layout.buildDirectory.dir("typescript")) script.set("run typecheck") group = "verification" description = "Check for TypeScript type errors." } val lintFrontend by registering(RunYarn::class) { dependsOn(installFrontend) dependsOn(typeCheckFrontend) inputs.dir(srcDir) inputs.files(lintConfigFiles) outputs.file(layout.buildDirectory.file("eslint.json")) script.set("run lint") group = "verification" description = "Check for TypeScript lint errors and warnings." } register("fixFrontend") { dependsOn(installFrontend) dependsOn(typeCheckFrontend) inputs.dir(srcDir) inputs.files(lintConfigFiles) script.set("run lint:fix") group = "verification" description = "Check for TypeScript lint errors and warnings." } check { dependsOn(typeCheckFrontend) dependsOn(lintFrontend) } clean { delete(".docusaurus") delete(".yarn") } } sonarqube.properties { SonarPropertiesUtils.addToList(properties, "sonar.sources", srcDir) property("sonar.nodejs.executable", "${frontend.nodeInstallDirectory.get()}/bin/node") property("sonar.eslint.reportPaths", "${layout.buildDirectory.get()}/eslint.json") }