From 960cbe03021677c186b47d590a77e54ada9a9835 Mon Sep 17 00:00:00 2001 From: Steve Buck Date: Sun, 1 Feb 2026 16:23:22 -0500 Subject: [PATCH 1/4] Adding node plugin support for downloading nodejs in build folder. This will nvm users, or users without nodejs installed to build the project and use spotless without explicit changes to their system. --- build.gradle | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/build.gradle b/build.gradle index 6cd8491..f08711d 100644 --- a/build.gradle +++ b/build.gradle @@ -2,6 +2,7 @@ plugins { id "java" id "edu.wpi.first.GradleRIO" version "2026.2.1" id "com.diffplug.spotless" version "8.1.0" + id 'com.github.node-gradle.node' version '7.1.0' } java { @@ -9,6 +10,12 @@ java { targetCompatibility = JavaVersion.VERSION_17 } +node { + download = true + version = '24.13.0' + workDir = file("${buildDir}/nodejs") +} + def ROBOT_MAIN_CLASS = "org.team340.robot.Main" // Define my targets (RoboRIO) and artifacts (deployable files) @@ -105,6 +112,7 @@ spotless { removeUnusedImports() trimTrailingWhitespace() prettier(['prettier': '3.8.0', 'prettier-plugin-java': '2.8.1']) + .npmExecutable("${tasks.named('npmSetup').get().npmDir.get()}/bin/npm") .config([ parser: 'java', plugins: ['prettier-plugin-java'], @@ -149,3 +157,7 @@ tasks.withType(JavaCompile) { options.compilerArgs.add '-XDstringConcat=inline' dependsOn 'spotlessApply' } + +tasks.named('spotlessJavaApply') { + dependsOn 'nodeSetup', 'npmSetup' +} From df9c7ab0e90a1652495d335a940cd02fd48d9142 Mon Sep 17 00:00:00 2001 From: Steve Buck Date: Sun, 1 Feb 2026 21:32:36 -0500 Subject: [PATCH 2/4] fixing for windows --- build.gradle | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index f08711d..bc89968 100644 --- a/build.gradle +++ b/build.gradle @@ -99,6 +99,11 @@ dependencies { testRuntimeOnly 'org.junit.platform:junit-platform-launcher' } +def npmExec = "npm" +if (!System.properties['os.name'].toLowerCase().contains('windows')) { + npmExec = "/bin/npm" +} + // Code formatting via spotless spotless { java { @@ -112,7 +117,7 @@ spotless { removeUnusedImports() trimTrailingWhitespace() prettier(['prettier': '3.8.0', 'prettier-plugin-java': '2.8.1']) - .npmExecutable("${tasks.named('npmSetup').get().npmDir.get()}/bin/npm") + .npmExecutable("${tasks.named('npmSetup').get().npmDir.get()}/${npmExec}") .config([ parser: 'java', plugins: ['prettier-plugin-java'], From 1bc7ee2ff73646e3f36530e3ce57ce5fabad18da Mon Sep 17 00:00:00 2001 From: Steve Buck Date: Sun, 1 Feb 2026 21:50:51 -0500 Subject: [PATCH 3/4] fixing up for windows...for real this time. --- build.gradle | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/build.gradle b/build.gradle index bc89968..8a327ed 100644 --- a/build.gradle +++ b/build.gradle @@ -99,9 +99,9 @@ dependencies { testRuntimeOnly 'org.junit.platform:junit-platform-launcher' } -def npmExec = "npm" -if (!System.properties['os.name'].toLowerCase().contains('windows')) { - npmExec = "/bin/npm" +def npmExec = "bin/npm" +if (System.properties['os.name'].toLowerCase().contains('windows')) { + npmExec = "npm.cmd" } // Code formatting via spotless @@ -117,7 +117,7 @@ spotless { removeUnusedImports() trimTrailingWhitespace() prettier(['prettier': '3.8.0', 'prettier-plugin-java': '2.8.1']) - .npmExecutable("${tasks.named('npmSetup').get().npmDir.get()}/${npmExec}") + .npmExecutable("${tasks.named('npmSetup').get().npmDir.get()}${File.separator}${npmExec}") .config([ parser: 'java', plugins: ['prettier-plugin-java'], From 8abf8db74a2ef2a85693a486c6b38e437c5d6d5f Mon Sep 17 00:00:00 2001 From: Steve Buck Date: Sun, 8 Feb 2026 21:58:35 -0500 Subject: [PATCH 4/4] fixing gradle matching task names for spotless deps --- build.gradle | 2 +- gradlew | 0 2 files changed, 1 insertion(+), 1 deletion(-) mode change 100644 => 100755 gradlew diff --git a/build.gradle b/build.gradle index 8a327ed..13994b0 100644 --- a/build.gradle +++ b/build.gradle @@ -163,6 +163,6 @@ tasks.withType(JavaCompile) { dependsOn 'spotlessApply' } -tasks.named('spotlessJavaApply') { +tasks.matching { it.name.startsWith("spotless")}.all { dependsOn 'nodeSetup', 'npmSetup' } diff --git a/gradlew b/gradlew old mode 100644 new mode 100755