Skip to content

Commit b4f76b4

Browse files
committed
eslint: adapt maven code to match documentation
1 parent 3a1d43b commit b4f76b4

File tree

4 files changed

+39
-17
lines changed

4 files changed

+39
-17
lines changed

plugin-maven/src/main/java/com/diffplug/spotless/maven/generic/Prettier.java

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ public FormatterStep newFormatterStep(FormatterStepConfig stepConfig) {
6161
if (prettierVersion != null && !prettierVersion.isEmpty()) {
6262
this.devDependencies = PrettierFormatterStep.defaultDevDependenciesWithPrettier(prettierVersion);
6363
} else if (devDependencyProperties != null) {
64-
this.devDependencies = dependencyPropertiesAsMap();
64+
this.devDependencies = propertiesAsMap(this.devDependencyProperties);
6565
}
6666

6767
// process config file or inline config
@@ -100,20 +100,6 @@ public FormatterStep newFormatterStep(FormatterStepConfig stepConfig) {
100100
return PrettierFormatterStep.create(devDependencies, stepConfig.getProvisioner(), baseDir, buildDir, npmPathResolver, prettierConfig);
101101
}
102102

103-
private boolean moreThanOneNonNull(Object... objects) {
104-
return Arrays.stream(objects)
105-
.filter(Objects::nonNull)
106-
.filter(o -> !(o instanceof String) || !((String) o).isEmpty()) // if it is a string, it should not be empty
107-
.count() > 1;
108-
}
109-
110-
private Map<String, String> dependencyPropertiesAsMap() {
111-
return this.devDependencyProperties.stringPropertyNames()
112-
.stream()
113-
.map(name -> new AbstractMap.SimpleEntry<>(name, this.devDependencyProperties.getProperty(name)))
114-
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
115-
}
116-
117103
private static IllegalArgumentException onlyOneConfig() {
118104
return new IllegalArgumentException(ERROR_MESSAGE_ONLY_ONE_CONFIG);
119105
}

plugin-maven/src/main/java/com/diffplug/spotless/maven/javascript/AbstractEslint.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import java.io.File;
1919
import java.util.Map;
20+
import java.util.Properties;
2021
import java.util.TreeMap;
2122

2223
import org.apache.maven.plugins.annotations.Parameter;
@@ -30,6 +31,8 @@
3031

3132
public abstract class AbstractEslint extends AbstractNpmFormatterStepFactory {
3233

34+
public static final String ERROR_MESSAGE_ONLY_ONE_CONFIG = "must specify exactly one eslintVersion, devDependencies or devDependencyProperties";
35+
3336
@Parameter
3437
protected String configFile;
3538

@@ -45,11 +48,21 @@ public abstract class AbstractEslint extends AbstractNpmFormatterStepFactory {
4548
@Parameter
4649
protected Map<String, String> devDependencies;
4750

51+
@Parameter
52+
protected Properties devDependencyProperties;
53+
4854
@Override
4955
public FormatterStep newFormatterStep(FormatterStepConfig stepConfig) {
56+
// check if config is only setup in one way
57+
if (moreThanOneNonNull(this.eslintVersion, this.devDependencies, this.devDependencyProperties)) {
58+
throw onlyOneConfig();
59+
}
60+
5061
Map<String, String> devDependencies = new TreeMap<>();
5162
if (this.devDependencies != null) {
5263
devDependencies.putAll(this.devDependencies);
64+
} else if (this.devDependencyProperties != null) {
65+
devDependencies.putAll(propertiesAsMap(this.devDependencyProperties));
5366
} else {
5467
Map<String, String> defaultDependencies = createDefaultDependencies();
5568
devDependencies.putAll(defaultDependencies);
@@ -63,6 +76,10 @@ public FormatterStep newFormatterStep(FormatterStepConfig stepConfig) {
6376
return EslintFormatterStep.create(devDependencies, stepConfig.getProvisioner(), baseDir, buildDir, npmPathResolver, eslintConfig(stepConfig));
6477
}
6578

79+
private static IllegalArgumentException onlyOneConfig() {
80+
return new IllegalArgumentException(ERROR_MESSAGE_ONLY_ONE_CONFIG);
81+
}
82+
6683
protected abstract EslintConfig eslintConfig(FormatterStepConfig stepConfig);
6784

6885
private void addStyleGuideDevDependencies(Map<String, String> devDependencies) {

plugin-maven/src/main/java/com/diffplug/spotless/maven/npm/AbstractNpmFormatterStepFactory.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,12 @@
1616
package com.diffplug.spotless.maven.npm;
1717

1818
import java.io.File;
19+
import java.util.AbstractMap;
20+
import java.util.Arrays;
21+
import java.util.Map;
22+
import java.util.Objects;
23+
import java.util.Properties;
24+
import java.util.stream.Collectors;
1925

2026
import org.apache.maven.plugins.annotations.Parameter;
2127

@@ -52,4 +58,18 @@ protected File baseDir(FormatterStepConfig stepConfig) {
5258
protected NpmPathResolver npmPathResolver(FormatterStepConfig stepConfig) {
5359
return new NpmPathResolver(npm(stepConfig), npmrc(stepConfig), baseDir(stepConfig));
5460
}
61+
62+
protected boolean moreThanOneNonNull(Object... objects) {
63+
return Arrays.stream(objects)
64+
.filter(Objects::nonNull)
65+
.filter(o -> !(o instanceof String) || !((String) o).isEmpty()) // if it is a string, it should not be empty
66+
.count() > 1;
67+
}
68+
69+
protected Map<String, String> propertiesAsMap(Properties devDependencyProperties) {
70+
return devDependencyProperties.stringPropertyNames()
71+
.stream()
72+
.map(name -> new AbstractMap.SimpleEntry<>(name, devDependencyProperties.getProperty(name)))
73+
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
74+
}
5575
}

testlib/src/test/java/com/diffplug/spotless/npm/EslintFormatterStepTest.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,14 @@
1919
import java.util.Map;
2020
import java.util.TreeMap;
2121

22-
import com.diffplug.spotless.ResourceHarness;
23-
2422
import org.junit.jupiter.api.Nested;
2523
import org.junit.jupiter.api.Test;
2624
import org.junit.jupiter.params.ParameterizedTest;
2725
import org.junit.jupiter.params.provider.ValueSource;
2826

2927
import com.diffplug.common.collect.ImmutableMap;
3028
import com.diffplug.spotless.FormatterStep;
29+
import com.diffplug.spotless.ResourceHarness;
3130
import com.diffplug.spotless.StepHarnessWithFile;
3231
import com.diffplug.spotless.TestProvisioner;
3332
import com.diffplug.spotless.tag.NpmTest;

0 commit comments

Comments
 (0)