Skip to content

Commit 9956473

Browse files
committed
Switched maven plugin over to Formatter.
1 parent 5ff5581 commit 9956473

File tree

1 file changed

+30
-12
lines changed

1 file changed

+30
-12
lines changed

plugin-maven/src/main/java/com/diffplug/gradle/spotless/SpotlessMojo.java

+30-12
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,16 @@
1515
*/
1616
package com.diffplug.gradle.spotless;
1717

18-
import static java.nio.charset.StandardCharsets.UTF_8;
1918
import static java.util.Collections.singleton;
2019

2120
import java.io.File;
21+
import java.io.IOException;
22+
import java.nio.charset.StandardCharsets;
2223
import java.nio.file.Files;
2324
import java.nio.file.Path;
2425
import java.nio.file.Paths;
26+
import java.util.ArrayList;
27+
import java.util.Collections;
2528
import java.util.List;
2629
import java.util.Set;
2730
import java.util.stream.Stream;
@@ -37,8 +40,11 @@
3740
import org.eclipse.aether.RepositorySystemSession;
3841
import org.eclipse.aether.repository.RemoteRepository;
3942

43+
import com.diffplug.spotless.Formatter;
4044
import com.diffplug.spotless.FormatterStep;
45+
import com.diffplug.spotless.LineEnding;
4146
import com.diffplug.spotless.Provisioner;
47+
import com.diffplug.spotless.ThrowingEx;
4248
import com.diffplug.spotless.extra.java.EclipseFormatterStep;
4349

4450
@Mojo(name = "spotless")
@@ -62,31 +68,43 @@ public class SpotlessMojo extends AbstractMojo {
6268
@Override
6369
public void execute() throws MojoExecutionException, MojoFailureException {
6470
ArtifactResolver resolver = new ArtifactResolver(repositorySystem, repositorySystemSession, repositories);
65-
6671
Provisioner provisioner = MavenProvisioner.create(resolver);
72+
73+
// create the eclipse step
6774
Set<File> settingFiles = singleton(new File(eclipseFormatFile));
68-
FormatterStep step = EclipseFormatterStep.create(settingFiles, provisioner);
75+
FormatterStep step = EclipseFormatterStep.create(EclipseFormatterStep.defaultVersion(),
76+
settingFiles, provisioner);
6977

78+
// collect all the files that are going to be formatted
79+
File rootDir = project.getFile();
80+
List<File> toFormat = new ArrayList<>();
7081
for (String compileSourceRoot : project.getCompileSourceRoots()) {
7182
Path root = Paths.get(compileSourceRoot);
7283
try (Stream<Path> entries = Files.walk(root)) {
7384
entries.filter(Files::isRegularFile)
7485
.filter(file -> file.getFileName().toString().endsWith(".java"))
75-
.forEach(file -> format(file, step));
86+
.map(Path::toFile)
87+
.forEach(toFormat::add);
7688
} catch (Exception e) {
7789
throw new MojoExecutionException("Unable to walk the file tree", e);
7890
}
7991
}
80-
}
8192

82-
private void format(Path file, FormatterStep step) {
93+
// create a formatter
94+
Formatter formatter = Formatter.builder()
95+
.lineEndingsPolicy(LineEnding.GIT_ATTRIBUTES.createPolicy(rootDir, () -> toFormat))
96+
.encoding(StandardCharsets.UTF_8)
97+
.rootDir(rootDir.toPath())
98+
.steps(Collections.singletonList(step))
99+
.build();
100+
101+
// use the formatter to format all the files
83102
try {
84-
getLog().info("Formatting " + file);
85-
String contents = new String(Files.readAllBytes(file), UTF_8);
86-
String formatted = step.format(contents, file.toFile());
87-
Files.write(file, formatted.getBytes(UTF_8));
88-
} catch (Exception e) {
89-
throw new RuntimeException("Unable to format " + file, e);
103+
for (File file : toFormat) {
104+
formatter.applyTo(file);
105+
}
106+
} catch (IOException e) {
107+
throw ThrowingEx.asRuntime(e);
90108
}
91109
}
92110
}

0 commit comments

Comments
 (0)