Skip to content

Commit de2e1ec

Browse files
committed
Make SpotlessTaskService be the AutoCloseable BuildService, and let GitRatchetGradle be a POJO field of the service. Doesn't matter either way for now, but this sets us up for a refactor in the future.
1 parent 312b25e commit de2e1ec

File tree

6 files changed

+33
-27
lines changed

6 files changed

+33
-27
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -737,7 +737,7 @@ protected void setupTask(SpotlessTask task) {
737737
spotless.getRegisterDependenciesTask().hookSubprojectTask(task);
738738
}
739739
if (getRatchetFrom() != null) {
740-
task.setupRatchet(spotless.getRegisterDependenciesTask().getGitRatchet().get(), getRatchetFrom());
740+
task.setupRatchet(getRatchetFrom());
741741
}
742742
}
743743

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

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,10 @@
1919

2020
import javax.annotation.Nullable;
2121

22-
import org.gradle.api.services.BuildService;
23-
import org.gradle.api.services.BuildServiceParameters;
24-
import org.gradle.tooling.events.FinishEvent;
25-
import org.gradle.tooling.events.OperationCompletionListener;
26-
2722
import com.diffplug.spotless.extra.GitRatchet;
2823

2924
/** Gradle implementation of GitRatchet. */
30-
public abstract class GitRatchetGradle extends GitRatchet<File> implements BuildService<BuildServiceParameters.None>, OperationCompletionListener {
25+
public class GitRatchetGradle extends GitRatchet<File> {
3126
@Override
3227
protected File getDir(File project) {
3328
return project;
@@ -37,9 +32,4 @@ protected File getDir(File project) {
3732
protected @Nullable File getParent(File project) {
3833
return project.getParentFile();
3934
}
40-
41-
@Override
42-
public void onFinish(FinishEvent finishEvent) {
43-
// NOOP
44-
}
4535
}

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

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,7 @@ void setup() {
7272

7373
BuildServiceRegistry buildServices = getProject().getGradle().getSharedServices();
7474
getTaskService().set(buildServices.registerIfAbsent("SpotlessTaskService", SpotlessTaskService.class, spec -> {}));
75-
getGitRatchet().set(buildServices.registerIfAbsent("GitRatchetGradle", GitRatchetGradle.class, unused -> {}));
76-
getBuildEventsListenerRegistry().onTaskCompletion(getGitRatchet());
75+
getBuildEventsListenerRegistry().onTaskCompletion(getTaskService());
7776
}
7877

7978
@TaskAction
@@ -83,10 +82,7 @@ public void trivialFunction() throws IOException {
8382
}
8483

8584
@Internal
86-
public abstract Property<SpotlessTaskService> getTaskService();
87-
88-
@Internal
89-
public abstract Property<GitRatchetGradle> getGitRatchet();
85+
abstract Property<SpotlessTaskService> getTaskService();
9086

9187
@Inject
9288
protected abstract BuildEventsListenerRegistry getBuildEventsListenerRegistry();

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

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import org.gradle.api.DefaultTask;
3030
import org.gradle.api.file.DirectoryProperty;
3131
import org.gradle.api.file.FileCollection;
32+
import org.gradle.api.provider.Property;
3233
import org.gradle.api.tasks.Input;
3334
import org.gradle.api.tasks.InputFiles;
3435
import org.gradle.api.tasks.Internal;
@@ -44,6 +45,9 @@
4445
import com.diffplug.spotless.LineEnding;
4546

4647
public abstract class SpotlessTask extends DefaultTask {
48+
@Internal
49+
abstract Property<SpotlessTaskService> getTaskService();
50+
4751
// set by SpotlessExtension, but possibly overridden by FormatExtension
4852
protected String encoding = "UTF-8";
4953

@@ -79,11 +83,11 @@ public void setLineEndingsPolicy(LineEnding.Policy lineEndingsPolicy) {
7983
*/
8084
private transient ObjectId subtreeSha = ObjectId.zeroId();
8185

82-
public void setupRatchet(GitRatchetGradle gitRatchet, String ratchetFrom) {
83-
ratchet = gitRatchet;
86+
public void setupRatchet(String ratchetFrom) {
87+
ratchet = getTaskService().get().getRatchet();
8488
File projectDir = getProjectDir().get().getAsFile();
85-
rootTreeSha = gitRatchet.rootTreeShaOf(projectDir, ratchetFrom);
86-
subtreeSha = gitRatchet.subtreeShaOf(projectDir, rootTreeSha);
89+
rootTreeSha = ratchet.rootTreeShaOf(projectDir, ratchetFrom);
90+
subtreeSha = ratchet.subtreeShaOf(projectDir, rootTreeSha);
8791
}
8892

8993
@Internal

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

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import org.gradle.api.GradleException;
2727
import org.gradle.api.file.DirectoryProperty;
2828
import org.gradle.api.file.FileSystemOperations;
29-
import org.gradle.api.provider.Property;
3029
import org.gradle.api.provider.Provider;
3130
import org.gradle.api.tasks.CacheableTask;
3231
import org.gradle.api.tasks.Internal;
@@ -41,9 +40,6 @@
4140

4241
@CacheableTask
4342
public abstract class SpotlessTaskImpl extends SpotlessTask {
44-
@Internal
45-
abstract Property<SpotlessTaskService> getTaskService();
46-
4743
@Internal
4844
abstract DirectoryProperty getProjectDir();
4945

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

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@
3030
import org.gradle.api.services.BuildService;
3131
import org.gradle.api.services.BuildServiceParameters;
3232
import org.gradle.api.tasks.Internal;
33+
import org.gradle.tooling.events.FinishEvent;
34+
import org.gradle.tooling.events.OperationCompletionListener;
3335

3436
import com.diffplug.common.base.Preconditions;
3537
import com.diffplug.common.base.Unhandled;
@@ -41,7 +43,7 @@
4143
* duplicated work (e.g. no need for check to run if
4244
* apply already did).
4345
*/
44-
public abstract class SpotlessTaskService implements BuildService<BuildServiceParameters.None> {
46+
public abstract class SpotlessTaskService implements BuildService<BuildServiceParameters.None>, AutoCloseable, OperationCompletionListener {
4547
private final Map<String, SpotlessApply> apply = Collections.synchronizedMap(new HashMap<>());
4648
private final Map<String, SpotlessTask> source = Collections.synchronizedMap(new HashMap<>());
4749
private final Map<String, Provisioner> provisioner = Collections.synchronizedMap(new HashMap<>());
@@ -60,6 +62,24 @@ void registerApplyAlreadyRan(SpotlessApply task) {
6062
apply.put(task.sourceTaskPath(), task);
6163
}
6264

65+
// <GitRatchet>
66+
private final GitRatchetGradle ratchet = new GitRatchetGradle();
67+
68+
GitRatchetGradle getRatchet() {
69+
return ratchet;
70+
}
71+
72+
@Override
73+
public void onFinish(FinishEvent var1) {
74+
// NOOP
75+
}
76+
77+
@Override
78+
public void close() throws Exception {
79+
ratchet.close();
80+
}
81+
// </GitRatchet>
82+
6383
static String INDEPENDENT_HELPER = "Helper";
6484

6585
static abstract class ClientTask extends DefaultTask {

0 commit comments

Comments
 (0)