Skip to content

Commit 57be84f

Browse files
committed
Use FileSignature to cache changes
1 parent 773d59c commit 57be84f

File tree

5 files changed

+43
-28
lines changed

5 files changed

+43
-28
lines changed

lib/src/ktlint/java/com/diffplug/spotless/glue/ktlint/KtlintFormatterFunc.java

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -15,20 +15,14 @@
1515
*/
1616
package com.diffplug.spotless.glue.ktlint;
1717

18-
import java.io.File;
19-
import java.util.Map;
18+
import com.diffplug.spotless.FileSignature;
19+
import com.diffplug.spotless.FormatterFunc;
20+
import com.diffplug.spotless.glue.ktlint.compat.*;
2021

2122
import org.jetbrains.annotations.NotNull;
2223

23-
import com.diffplug.spotless.FormatterFunc;
24-
import com.diffplug.spotless.glue.ktlint.compat.KtLintCompat0Dot31Dot0Adapter;
25-
import com.diffplug.spotless.glue.ktlint.compat.KtLintCompat0Dot32Dot0Adapter;
26-
import com.diffplug.spotless.glue.ktlint.compat.KtLintCompat0Dot34Dot2Adapter;
27-
import com.diffplug.spotless.glue.ktlint.compat.KtLintCompat0Dot45Dot2Adapter;
28-
import com.diffplug.spotless.glue.ktlint.compat.KtLintCompat0Dot46Dot0Adapter;
29-
import com.diffplug.spotless.glue.ktlint.compat.KtLintCompat0Dot47Dot0Adapter;
30-
import com.diffplug.spotless.glue.ktlint.compat.KtLintCompat0Dot48Dot0Adapter;
31-
import com.diffplug.spotless.glue.ktlint.compat.KtLintCompatAdapter;
24+
import java.io.File;
25+
import java.util.Map;
3226

3327
public class KtlintFormatterFunc implements FormatterFunc.NeedsFile {
3428

@@ -37,11 +31,11 @@ public class KtlintFormatterFunc implements FormatterFunc.NeedsFile {
3731
@NotNull
3832
private final KtLintCompatAdapter adapter;
3933
private final boolean useExperimental;
40-
private final String editorConfigPath;
34+
private final FileSignature editorConfigPath;
4135
private final Map<String, Object> editorConfigOverrideMap;
4236

43-
public KtlintFormatterFunc(String version, boolean isScript, boolean useExperimental, String editorConfigPath, Map<String, String> userData,
44-
Map<String, Object> editorConfigOverrideMap) {
37+
public KtlintFormatterFunc(String version, boolean isScript, boolean useExperimental, FileSignature editorConfigPath, Map<String, String> userData,
38+
Map<String, Object> editorConfigOverrideMap) {
4539
int minorVersion = Integer.parseInt(version.split("\\.")[1]);
4640
if (minorVersion >= 48) {
4741
// ExperimentalParams lost two constructor arguments, EditorConfigProperty moved to its own class
@@ -73,7 +67,7 @@ public KtlintFormatterFunc(String version, boolean isScript, boolean useExperime
7367
}
7468

7569
@Override
76-
public String applyWithFile(String unix, File file) throws Exception {
77-
return adapter.format(unix, file.getName(), isScript, useExperimental, editorConfigPath, userData, editorConfigOverrideMap);
70+
public String applyWithFile(String unix, File file) {
71+
return adapter.format(unix, file.getName(), isScript, useExperimental, editorConfigPath.getOnlyFile().getAbsolutePath(), userData, editorConfigOverrideMap);
7872
}
7973
}

lib/src/main/java/com/diffplug/spotless/kotlin/KtLintStep.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import java.util.Objects;
2424
import java.util.TreeMap;
2525

26+
import com.diffplug.spotless.FileSignature;
2627
import com.diffplug.spotless.FormatterFunc;
2728
import com.diffplug.spotless.FormatterStep;
2829
import com.diffplug.spotless.JarState;
@@ -68,7 +69,7 @@ private static FormatterStep create(String version, Provisioner provisioner, boo
6869
}
6970

7071
public static FormatterStep create(String version, Provisioner provisioner, boolean isScript, boolean useExperimental,
71-
String editorConfig, Map<String, String> userData, Map<String, Object> editorConfigOverride) {
72+
FileSignature editorConfig, Map<String, String> userData, Map<String, Object> editorConfigOverride) {
7273
Objects.requireNonNull(version, "version");
7374
Objects.requireNonNull(provisioner, "provisioner");
7475
return FormatterStep.createLazy(NAME,
@@ -91,10 +92,10 @@ static final class State implements Serializable {
9192
private final TreeMap<String, String> userData;
9293
private final TreeMap<String, Object> editorConfigOverride;
9394
private final String version;
94-
private final String editorConfigPath;
95+
private final FileSignature editorConfigPath;
9596

9697
State(String version, Provisioner provisioner, boolean isScript, boolean useExperimental,
97-
String editorConfigPath, Map<String, String> userData, Map<String, Object> editorConfigOverride) throws IOException {
98+
FileSignature editorConfigPath, Map<String, String> userData, Map<String, Object> editorConfigOverride) throws IOException {
9899
this.version = version;
99100

100101
String coordinate;

plugin-gradle/src/main/java/com/diffplug/gradle/spotless/KotlinExtension.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,11 +71,11 @@ public class KotlinFormatExtension {
7171

7272
private final String version;
7373
private boolean useExperimental;
74-
private String editorConfigPath;
74+
private FileSignature editorConfigPath;
7575
private Map<String, String> userData;
7676
private Map<String, Object> editorConfigOverride;
7777

78-
KotlinFormatExtension(String version, boolean useExperimental, String editorConfigPath, Map<String, String> config,
78+
KotlinFormatExtension(String version, boolean useExperimental, FileSignature editorConfigPath, Map<String, String> config,
7979
Map<String, Object> editorConfigOverride) {
8080
this.version = version;
8181
this.useExperimental = useExperimental;
@@ -91,6 +91,16 @@ public KotlinFormatExtension setUseExperimental(boolean useExperimental) {
9191
return this;
9292
}
9393

94+
public KotlinFormatExtension setEditorConfigPath(Object editorConfigFile) throws IOException {
95+
if (editorConfigFile == null) {
96+
this.editorConfigPath = null;
97+
} else {
98+
this.editorConfigPath = FileSignature.signAsList(getProject().file(editorConfigFile));
99+
}
100+
replaceStep(createStep());
101+
return this;
102+
}
103+
94104
public KotlinFormatExtension userData(Map<String, String> userData) {
95105
// Copy the map to a sorted map because up-to-date checking is based on binary-equals of the serialized
96106
// representation.

plugin-gradle/src/main/java/com/diffplug/gradle/spotless/KotlinGradleExtension.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,11 @@ public class KotlinFormatExtension {
5656

5757
private final String version;
5858
private boolean useExperimental;
59-
private String editorConfigPath;
59+
private FileSignature editorConfigPath;
6060
private Map<String, String> userData;
6161
private Map<String, Object> editorConfigOverride;
6262

63-
KotlinFormatExtension(String version, boolean useExperimental, String editorConfigPath, Map<String, String> config,
63+
KotlinFormatExtension(String version, boolean useExperimental, FileSignature editorConfigPath, Map<String, String> config,
6464
Map<String, Object> editorConfigOverride) {
6565
this.version = version;
6666
this.useExperimental = useExperimental;
@@ -70,8 +70,13 @@ public class KotlinFormatExtension {
7070
addStep(createStep());
7171
}
7272

73-
public KotlinFormatExtension setEditorConfigPath(String editorConfigPath) {
74-
this.editorConfigPath = editorConfigPath;
73+
public KotlinFormatExtension setEditorConfigPath(Object editorConfigPath) throws IOException {
74+
75+
if (editorConfigPath == null) {
76+
this.editorConfigPath = null;
77+
} else {
78+
this.editorConfigPath = FileSignature.signAsList(getProject().file(editorConfigPath));
79+
}
7580
replaceStep(createStep());
7681
return this;
7782
}

plugin-maven/src/main/java/com/diffplug/spotless/maven/kotlin/Ktlint.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@
2121

2222
import org.apache.maven.plugins.annotations.Parameter;
2323

24+
import com.diffplug.spotless.FileSignature;
2425
import com.diffplug.spotless.FormatterStep;
26+
import com.diffplug.spotless.ThrowingEx;
2527
import com.diffplug.spotless.kotlin.KtLintStep;
2628
import com.diffplug.spotless.maven.FormatterStepConfig;
2729
import com.diffplug.spotless.maven.FormatterStepFactory;
@@ -36,13 +38,16 @@ public class Ktlint implements FormatterStepFactory {
3638
private Map<String, Object> editorConfigOverride;
3739

3840
@Override
39-
public FormatterStep newFormatterStep(FormatterStepConfig config) {
41+
public FormatterStep newFormatterStep(final FormatterStepConfig stepConfig) {
4042
String ktlintVersion = version != null ? version : KtLintStep.defaultVersion();
41-
43+
FileSignature configPath = null;
44+
if (editorConfigPath != null) {
45+
configPath = ThrowingEx.get(() -> FileSignature.signAsList(stepConfig.getFileLocator().locateFile(editorConfigPath)));
46+
}
4247
if (editorConfigOverride == null) {
4348
editorConfigOverride = new HashMap<>();
4449
}
4550

46-
return KtLintStep.create(ktlintVersion, config.getProvisioner(), false, false, editorConfigPath, Collections.emptyMap(), editorConfigOverride);
51+
return KtLintStep.create(ktlintVersion, stepConfig.getProvisioner(), false, false, configPath, Collections.emptyMap(), editorConfigOverride);
4752
}
4853
}

0 commit comments

Comments
 (0)