/* * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors * * SPDX-License-Identifier: EPL-2.0 */ import org.siouan.frontendgradleplugin.infrastructure.gradle.RunYarn plugins { alias(libs.plugins.versions) id("tools.refinery.gradle.eclipse") id("tools.refinery.gradle.frontend-worktree") id("tools.refinery.gradle.sonarqube") } val frontendFiles: FileCollection = files( "yarn.lock", "package.json", "tsconfig.json", "tsconfig.base.json", "eslintrc.cjs", "prettier.config.cjs", "vite.config.ts", ) + fileTree("scripts") { include("**/*.cjs") } tasks { val typeCheckFrontend by registering(RunYarn::class) { dependsOn(installFrontend) inputs.files(frontendFiles) 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.files(frontendFiles) 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.files(frontendFiles) script.set("run lint:fix") group = "verification" description = "Fix TypeScript lint errors and warnings." } check { dependsOn(typeCheckFrontend) dependsOn(lintFrontend) } } sonarqube.properties { property("sonar.nodejs.executable", "${frontend.nodeInstallDirectory.get()}/bin/node") property("sonar.eslint.reportPaths", "${layout.buildDirectory.get()}/eslint.json") }