Skip to content

Commit b99ec3d

Browse files
authored
Fix Config Cache External Process Issue (#1777 fixes #1644 and #1764)
2 parents 8b1713d + 35be272 commit b99ec3d

File tree

6 files changed

+16
-12
lines changed

6 files changed

+16
-12
lines changed

plugin-gradle/CHANGES.md

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ We adhere to the [keepachangelog](https://keepachangelog.com/en/1.0.0/) format (
88
### Fixed
99
* Add support for `prettier` version `3.0.0` and newer. ([#1760]https://github.com/diffplug/spotless/pull/1760), [#1751](https://github.com/diffplug/spotless/issues/1751))
1010
* Fix npm install calls when npm cache is not up-to-date. ([#1760]https://github.com/diffplug/spotless/pull/1760), [#1750](https://github.com/diffplug/spotless/issues/1750))
11+
* Fix configuration cache failure when using LineEnding.GIT_ATTRIBUTES ([#1644](https://github.com/diffplug/spotless/issues/1644))
1112
### Changes
1213
* Bump default `eslint` version to latest `8.31.0` -> `8.45.0` ([#1761](https://github.com/diffplug/spotless/pull/1761))
1314
* Bump default `prettier` version to latest (v2) `2.8.1` -> `2.8.8`. ([#1760](https://github.com/diffplug/spotless/pull/1760))

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

+3-1
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
import org.gradle.api.GradleException;
4141
import org.gradle.api.Project;
4242
import org.gradle.api.file.ConfigurableFileTree;
43+
import org.gradle.api.file.Directory;
4344
import org.gradle.api.file.FileCollection;
4445
import org.gradle.api.plugins.BasePlugin;
4546
import org.gradle.api.tasks.TaskProvider;
@@ -925,7 +926,8 @@ protected void setupTask(SpotlessTask task) {
925926
steps.replaceAll(formatterStep -> formatterStep.filterByContent(OnMatch.EXCLUDE, targetExcludeContentPattern));
926927
}
927928
task.setSteps(steps);
928-
task.setLineEndingsPolicy(getLineEndings().createPolicy(getProject().getProjectDir(), () -> totalTarget));
929+
Directory projectDir = getProject().getLayout().getProjectDirectory();
930+
task.setLineEndingsPolicy(getProject().provider(() -> getLineEndings().createPolicy(projectDir.getAsFile(), () -> totalTarget)));
929931
spotless.getRegisterDependenciesTask().hookSubprojectTask(task);
930932
task.setupRatchet(getRatchetFrom() != null ? getRatchetFrom() : "");
931933
}

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

+5-4
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import org.gradle.api.file.DirectoryProperty;
2929
import org.gradle.api.file.FileCollection;
3030
import org.gradle.api.provider.Property;
31+
import org.gradle.api.provider.Provider;
3132
import org.gradle.api.tasks.Input;
3233
import org.gradle.api.tasks.InputFiles;
3334
import org.gradle.api.tasks.Internal;
@@ -64,14 +65,14 @@ public void setEncoding(String encoding) {
6465
this.encoding = Objects.requireNonNull(encoding);
6566
}
6667

67-
protected final LiveCache<LineEnding.Policy> lineEndingsPolicy = createLive("lineEndingsPolicy");
68+
protected final LiveCache<Provider<LineEnding.Policy>> lineEndingsPolicy = createLive("lineEndingsPolicy");
6869

6970
@Input
70-
public LineEnding.Policy getLineEndingsPolicy() {
71+
public Provider<LineEnding.Policy> getLineEndingsPolicy() {
7172
return lineEndingsPolicy.get();
7273
}
7374

74-
public void setLineEndingsPolicy(LineEnding.Policy lineEndingsPolicy) {
75+
public void setLineEndingsPolicy(Provider<LineEnding.Policy> lineEndingsPolicy) {
7576
this.lineEndingsPolicy.set(lineEndingsPolicy);
7677
}
7778

@@ -185,7 +186,7 @@ String formatName() {
185186
Formatter buildFormatter() {
186187
return Formatter.builder()
187188
.name(formatName())
188-
.lineEndingsPolicy(lineEndingsPolicy.get())
189+
.lineEndingsPolicy(lineEndingsPolicy.get().get())
189190
.encoding(Charset.forName(encoding))
190191
.rootDir(getProjectDir().get().getAsFile().toPath())
191192
.steps(steps.get())

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

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2016-2022 DiffPlug
2+
* Copyright 2016-2023 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.
@@ -62,7 +62,7 @@ public BuildServiceParameters.None getParameters() {
6262
private SpotlessTaskImpl createFormatTask(String name) {
6363
SpotlessTaskImpl task = project.getTasks().create("spotless" + SpotlessPlugin.capitalize(name), SpotlessTaskImpl.class);
6464
task.init(taskService);
65-
task.setLineEndingsPolicy(LineEnding.UNIX.createPolicy());
65+
task.setLineEndingsPolicy(project.provider(LineEnding.UNIX::createPolicy));
6666
task.setTarget(Collections.singletonList(file));
6767
return task;
6868
}
@@ -100,7 +100,7 @@ private Bundle create(File... files) throws IOException {
100100

101101
private Bundle create(List<File> files) throws IOException {
102102
Bundle bundle = new Bundle("underTest");
103-
bundle.task.setLineEndingsPolicy(LineEnding.UNIX.createPolicy());
103+
bundle.task.setLineEndingsPolicy(bundle.project.provider(LineEnding.UNIX::createPolicy));
104104
bundle.task.setTarget(files);
105105
return bundle;
106106
}

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2016-2021 DiffPlug
2+
* Copyright 2016-2023 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.
@@ -35,7 +35,7 @@ class FormatTaskTest extends ResourceHarness {
3535
void createTask() {
3636
Project project = TestProvisioner.gradleProject(rootFolder());
3737
spotlessTask = project.getTasks().create("spotlessTaskUnderTest", SpotlessTaskImpl.class);
38-
spotlessTask.setLineEndingsPolicy(LineEnding.UNIX.createPolicy());
38+
spotlessTask.setLineEndingsPolicy(project.provider(LineEnding.UNIX::createPolicy));
3939
spotlessTask.init(GradleIntegrationHarness.providerOf(new SpotlessTaskService() {
4040
@Override
4141
public BuildServiceParameters.None getParameters() {

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2016-2021 DiffPlug
2+
* Copyright 2016-2023 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.
@@ -66,7 +66,7 @@ private SpotlessTaskImpl createFormatTask(String name, FormatterStep step) {
6666
SpotlessTaskImpl task = project.getTasks().create("spotless" + SpotlessPlugin.capitalize(name), SpotlessTaskImpl.class);
6767
task.init(taskService);
6868
task.addStep(step);
69-
task.setLineEndingsPolicy(LineEnding.UNIX.createPolicy());
69+
task.setLineEndingsPolicy(project.provider(LineEnding.UNIX::createPolicy));
7070
task.setTarget(Collections.singletonList(file));
7171
return task;
7272
}

0 commit comments

Comments
 (0)