Skip to content

Commit a662f48

Browse files
committed
fixes for running on windows
1 parent 6e07578 commit a662f48

File tree

4 files changed

+26
-10
lines changed

4 files changed

+26
-10
lines changed

lib/src/main/java/com/diffplug/spotless/npm/NodeJSWrapper.java

+10-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import java.io.File;
1919
import java.util.Map;
2020
import java.util.Objects;
21+
import java.util.concurrent.atomic.AtomicBoolean;
2122

2223
class NodeJSWrapper extends ReflectiveObjectWrapper {
2324

@@ -26,9 +27,17 @@ class NodeJSWrapper extends ReflectiveObjectWrapper {
2627

2728
public static final String WRAPPED_CLASS = "com.eclipsesource.v8.NodeJS";
2829

30+
private static final AtomicBoolean flagsSet = new AtomicBoolean(false);
31+
2932
public NodeJSWrapper(ClassLoader classLoader) {
3033
super(Reflective.withClassLoader(classLoader),
31-
reflective -> reflective.invokeStaticMethod(WRAPPED_CLASS, "createNodeJS"));
34+
reflective -> {
35+
final boolean firstRun = flagsSet.compareAndSet(false, true);
36+
if (firstRun) {
37+
reflective.invokeStaticMethod(V8_RUNTIME_CLASS, "setFlags", "--color=false"); // required to run prettier on windows
38+
}
39+
return reflective.invokeStaticMethod(WRAPPED_CLASS, "createNodeJS");
40+
});
3241
}
3342

3443
public V8ObjectWrapper require(File npmModulePath) {

lib/src/main/java/com/diffplug/spotless/npm/NpmExecutableResolver.java

+12-3
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
* <li>from Environment-Properties in the following order:</li>
3232
* <ol>
3333
* <li> from NVM_BIN environment variable, if available </li>
34+
* <li> from NVM_SYMLINK environment variable, if available </li>
3435
* <li> from NODE_PATH environment variable, if available </li>
3536
* <li>fallback: PATH environment variable</li>
3637
* </ol>
@@ -45,7 +46,7 @@ private NpmExecutableResolver() {
4546
static String npmExecutableName() {
4647
String npmName = "npm";
4748
if (PlatformInfo.normalizedOS() == WINDOWS) {
48-
npmName += ".exe";
49+
npmName += ".cmd";
4950
}
5051
return npmName;
5152
}
@@ -55,14 +56,18 @@ static Supplier<Optional<File>> systemProperty() {
5556
.map(File::new);
5657
}
5758

58-
static Supplier<Optional<File>> environmentNvm() {
59+
static Supplier<Optional<File>> environmentNvmBin() {
5960
return () -> Optional.ofNullable(System.getenv("NVM_BIN"))
6061
.map(File::new)
6162
.map(binDir -> new File(binDir, npmExecutableName()))
6263
.filter(File::exists)
6364
.filter(File::canExecute);
6465
}
6566

67+
static Supplier<Optional<File>> environmentNvmSymlink() {
68+
return pathListFromEnvironment("NVM_SYMLINK");
69+
}
70+
6671
static Supplier<Optional<File>> environmentNodepath() {
6772
return pathListFromEnvironment("NODE_PATH");
6873
}
@@ -72,7 +77,11 @@ static Supplier<Optional<File>> environmentPath() {
7277
}
7378

7479
static Optional<File> tryFind() {
75-
return Stream.of(systemProperty(), environmentNvm(), environmentNodepath(), environmentPath())
80+
return Stream.of(systemProperty(),
81+
environmentNvmBin(),
82+
environmentNvmSymlink(),
83+
environmentNodepath(),
84+
environmentPath())
7685
.map(Supplier::get)
7786
.filter(Optional::isPresent)
7887
.map(Optional::get)

plugin-gradle/src/test/java/com/diffplug/gradle/spotless/PrettierIntegrationTest.java

+2-3
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
*/
1616
package com.diffplug.gradle.spotless;
1717

18-
import java.io.File;
1918
import java.io.IOException;
2019

2120
import org.junit.Test;
@@ -48,7 +47,7 @@ public void useInlineConfig() throws IOException {
4847

4948
@Test
5049
public void useFileConfig() throws IOException {
51-
File formattingFile = setFile(".prettierrc.yml").toResource("npm/prettier/config/.prettierrc.yml");
50+
setFile(".prettierrc.yml").toResource("npm/prettier/config/.prettierrc.yml");
5251
setFile("build.gradle").toLines(
5352
"buildscript { repositories { mavenCentral() } }",
5453
"plugins {",
@@ -57,7 +56,7 @@ public void useFileConfig() throws IOException {
5756
"spotless {",
5857
" format 'mytypescript', {",
5958
" target 'test.ts'",
60-
" prettier().configFile('" + formattingFile.getAbsolutePath() + "')",
59+
" prettier().configFile('.prettierrc.yml')",
6160
" }",
6261
"}");
6362
setFile("test.ts").toResource("npm/prettier/config/typescript.dirty");

plugin-gradle/src/test/java/com/diffplug/gradle/spotless/TypescriptExtensionTest.java

+2-3
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
*/
1616
package com.diffplug.gradle.spotless;
1717

18-
import java.io.File;
1918
import java.io.IOException;
2019

2120
import org.junit.Test;
@@ -48,7 +47,7 @@ public void useTsfmtInlineConfig() throws IOException {
4847

4948
@Test
5049
public void useTsfmtFileConfig() throws IOException {
51-
File formattingFile = setFile("tsfmt.json").toLines(
50+
setFile("tsfmt.json").toLines(
5251
"{",
5352
" \"indentSize\": 1,",
5453
" \"convertTabsToSpaces\": true",
@@ -61,7 +60,7 @@ public void useTsfmtFileConfig() throws IOException {
6160
"spotless {",
6261
" typescript {",
6362
" target 'test.ts'",
64-
" tsfmt().tsfmtFile('" + formattingFile.getAbsolutePath() + "')",
63+
" tsfmt().tsfmtFile('tsfmt.json')",
6564
" }",
6665
"}");
6766
setFile("test.ts").toResource("npm/tsfmt/tsfmt/tsfmt.dirty");

0 commit comments

Comments
 (0)