Skip to content

Commit 3742870

Browse files
committed
Make ScalaFmtStep round-trippable
1 parent 6e6ceaa commit 3742870

File tree

1 file changed

+25
-11
lines changed

1 file changed

+25
-11
lines changed

lib/src/main/java/com/diffplug/spotless/scala/ScalaFmtStep.java

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2016-2023 DiffPlug
2+
* Copyright 2016-2024 DiffPlug
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -28,17 +28,26 @@
2828
import com.diffplug.spotless.FormatterStep;
2929
import com.diffplug.spotless.JarState;
3030
import com.diffplug.spotless.Provisioner;
31+
import com.diffplug.spotless.RoundedStep;
3132

3233
/** Wraps up <a href="https://github.com/scalameta/scalafmt">scalafmt</a> as a FormatterStep. */
33-
public class ScalaFmtStep {
34-
// prevent direct instantiation
35-
private ScalaFmtStep() {}
34+
public class ScalaFmtStep implements RoundedStep {
35+
private static final long serialVersionUID = 1L;
3636

3737
static final String DEFAULT_VERSION = "3.7.3";
3838

3939
private static final String DEFAULT_SCALA_MAJOR_VERSION = "2.13";
40-
static final String NAME = "scalafmt";
41-
static final String MAVEN_COORDINATE = "org.scalameta:scalafmt-core_";
40+
private static final String NAME = "scalafmt";
41+
private static final String MAVEN_COORDINATE = "org.scalameta:scalafmt-core_";
42+
43+
private final JarState.Promised jarState;
44+
@Nullable
45+
private final File configFile;
46+
47+
private ScalaFmtStep(JarState.Promised jarState, @Nullable File configFile) {
48+
this.jarState = jarState;
49+
this.configFile = configFile;
50+
}
4251

4352
public static FormatterStep create(Provisioner provisioner) {
4453
return create(defaultVersion(), defaultScalaMajorVersion(), provisioner, null);
@@ -51,8 +60,9 @@ public static FormatterStep create(String version, Provisioner provisioner, @Nul
5160
public static FormatterStep create(String version, @Nullable String scalaMajorVersion, Provisioner provisioner, @Nullable File configFile) {
5261
String finalScalaMajorVersion = scalaMajorVersion == null ? DEFAULT_SCALA_MAJOR_VERSION : scalaMajorVersion;
5362

54-
return FormatterStep.createLazy(NAME,
55-
() -> new State(JarState.from(MAVEN_COORDINATE + finalScalaMajorVersion + ":" + version, provisioner), configFile),
63+
return FormatterStep.create(NAME,
64+
new ScalaFmtStep(JarState.promise(() -> JarState.from(MAVEN_COORDINATE + finalScalaMajorVersion + ":" + version, provisioner)), configFile),
65+
ScalaFmtStep::equalityState,
5666
State::createFormat);
5767
}
5868

@@ -64,11 +74,15 @@ public static String defaultScalaMajorVersion() {
6474
return DEFAULT_SCALA_MAJOR_VERSION;
6575
}
6676

67-
static final class State implements Serializable {
77+
private State equalityState() throws IOException {
78+
return new State(jarState.get(), configFile);
79+
}
80+
81+
private static final class State implements Serializable {
6882
private static final long serialVersionUID = 1L;
6983

70-
final JarState jarState;
71-
final FileSignature configSignature;
84+
private final JarState jarState;
85+
private final FileSignature configSignature;
7286

7387
State(JarState jarState, @Nullable File configFile) throws IOException {
7488
this.jarState = jarState;

0 commit comments

Comments
 (0)