Skip to content

Commit 05a3e2e

Browse files
authored
Reuse configs for GroovyExtension and GroovyGradleExtension (#1892)
2 parents d8415a5 + cb6a788 commit 05a3e2e

File tree

3 files changed

+79
-78
lines changed

3 files changed

+79
-78
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
/*
2+
* Copyright 2023 DiffPlug
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
package com.diffplug.gradle.spotless;
17+
18+
import static com.diffplug.gradle.spotless.PluginGradlePreconditions.requireElementsNonNull;
19+
20+
import java.util.Map;
21+
import java.util.Objects;
22+
23+
import org.gradle.api.Project;
24+
25+
import com.diffplug.spotless.extra.EquoBasedStepBuilder;
26+
import com.diffplug.spotless.extra.groovy.GrEclipseFormatterStep;
27+
import com.diffplug.spotless.java.ImportOrderStep;
28+
29+
abstract class BaseGroovyExtension extends FormatExtension {
30+
protected BaseGroovyExtension(SpotlessExtension spotless) {
31+
super(spotless);
32+
}
33+
34+
public void importOrder(String... importOrder) {
35+
addStep(ImportOrderStep.forGroovy().createFrom(importOrder));
36+
}
37+
38+
public void importOrderFile(Object importOrderFile) {
39+
Objects.requireNonNull(importOrderFile);
40+
addStep(ImportOrderStep.forGroovy().createFrom(getProject().file(importOrderFile)));
41+
}
42+
43+
public GrEclipseConfig greclipse() {
44+
return greclipse(GrEclipseFormatterStep.defaultVersion());
45+
}
46+
47+
public GrEclipseConfig greclipse(String version) {
48+
return new GrEclipseConfig(version, this);
49+
}
50+
51+
public static class GrEclipseConfig {
52+
private final EquoBasedStepBuilder builder;
53+
private final FormatExtension extension;
54+
55+
private GrEclipseConfig(String version, FormatExtension extension) {
56+
this.extension = extension;
57+
builder = GrEclipseFormatterStep.createBuilder(extension.provisioner());
58+
builder.setVersion(version);
59+
extension.addStep(builder.build());
60+
}
61+
62+
public void configFile(Object... configFiles) {
63+
requireElementsNonNull(configFiles);
64+
Project project = extension.getProject();
65+
builder.setPreferences(project.files(configFiles).getFiles());
66+
extension.replaceStep(builder.build());
67+
}
68+
69+
public GrEclipseConfig withP2Mirrors(Map<String, String> mirrors) {
70+
builder.setP2Mirrors(mirrors);
71+
extension.replaceStep(builder.build());
72+
return this;
73+
}
74+
}
75+
}

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

+2-54
Original file line numberDiff line numberDiff line change
@@ -15,36 +15,26 @@
1515
*/
1616
package com.diffplug.gradle.spotless;
1717

18-
import static com.diffplug.gradle.spotless.PluginGradlePreconditions.requireElementsNonNull;
19-
20-
import java.util.Map;
21-
import java.util.Objects;
22-
2318
import javax.inject.Inject;
2419

2520
import org.gradle.api.GradleException;
26-
import org.gradle.api.Project;
2721
import org.gradle.api.internal.plugins.DslObject;
2822
import org.gradle.api.plugins.GroovyBasePlugin;
2923
import org.gradle.api.tasks.GroovySourceDirectorySet;
3024
import org.gradle.api.tasks.GroovySourceSet;
3125
import org.gradle.util.GradleVersion;
3226

33-
import com.diffplug.spotless.extra.EquoBasedStepBuilder;
34-
import com.diffplug.spotless.extra.groovy.GrEclipseFormatterStep;
3527
import com.diffplug.spotless.generic.LicenseHeaderStep;
36-
import com.diffplug.spotless.java.ImportOrderStep;
3728

38-
public class GroovyExtension extends FormatExtension implements HasBuiltinDelimiterForLicense, JvmLang {
29+
public class GroovyExtension extends BaseGroovyExtension implements HasBuiltinDelimiterForLicense, JvmLang {
30+
private boolean excludeJava = false;
3931
static final String NAME = "groovy";
4032

4133
@Inject
4234
public GroovyExtension(SpotlessExtension spotless) {
4335
super(spotless);
4436
}
4537

46-
boolean excludeJava = false;
47-
4838
/** Excludes .java files, to focus on only .groovy files. */
4939
public void excludeJava() {
5040
excludeJava(true);
@@ -65,48 +55,6 @@ public LicenseHeaderConfig licenseHeaderFile(Object licenseHeaderFile) {
6555
return licenseHeaderFile(licenseHeaderFile, JavaExtension.LICENSE_HEADER_DELIMITER);
6656
}
6757

68-
public void importOrder(String... importOrder) {
69-
addStep(ImportOrderStep.forGroovy().createFrom(importOrder));
70-
}
71-
72-
public void importOrderFile(Object importOrderFile) {
73-
Objects.requireNonNull(importOrderFile);
74-
addStep(ImportOrderStep.forGroovy().createFrom(getProject().file(importOrderFile)));
75-
}
76-
77-
public GrEclipseConfig greclipse() {
78-
return greclipse(GrEclipseFormatterStep.defaultVersion());
79-
}
80-
81-
public GrEclipseConfig greclipse(String version) {
82-
return new GrEclipseConfig(version, this);
83-
}
84-
85-
public static class GrEclipseConfig {
86-
private final EquoBasedStepBuilder builder;
87-
private final FormatExtension extension;
88-
89-
GrEclipseConfig(String version, FormatExtension extension) {
90-
this.extension = extension;
91-
builder = GrEclipseFormatterStep.createBuilder(extension.provisioner());
92-
builder.setVersion(version);
93-
extension.addStep(builder.build());
94-
}
95-
96-
public void configFile(Object... configFiles) {
97-
requireElementsNonNull(configFiles);
98-
Project project = extension.getProject();
99-
builder.setPreferences(project.files(configFiles).getFiles());
100-
extension.replaceStep(builder.build());
101-
}
102-
103-
public GrEclipseConfig withP2Mirrors(Map<String, String> mirrors) {
104-
builder.setP2Mirrors(mirrors);
105-
extension.replaceStep(builder.build());
106-
return this;
107-
}
108-
}
109-
11058
/** If the user hasn't specified the files yet, we'll assume he/she means all of the groovy files. */
11159
@Override
11260
protected void setupTask(SpotlessTask task) {

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

+2-24
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2016-2020 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.
@@ -15,14 +15,9 @@
1515
*/
1616
package com.diffplug.gradle.spotless;
1717

18-
import java.util.Objects;
19-
2018
import javax.inject.Inject;
2119

22-
import com.diffplug.spotless.extra.groovy.GrEclipseFormatterStep;
23-
import com.diffplug.spotless.java.ImportOrderStep;
24-
25-
public class GroovyGradleExtension extends FormatExtension {
20+
public class GroovyGradleExtension extends BaseGroovyExtension {
2621
private static final String GRADLE_FILE_EXTENSION = "*.gradle";
2722
static final String NAME = "groovyGradle";
2823

@@ -31,23 +26,6 @@ public GroovyGradleExtension(SpotlessExtension spotless) {
3126
super(spotless);
3227
}
3328

34-
public void importOrder(String... importOrder) {
35-
addStep(ImportOrderStep.forGroovy().createFrom(importOrder));
36-
}
37-
38-
public void importOrderFile(Object importOrderFile) {
39-
Objects.requireNonNull(importOrderFile);
40-
addStep(ImportOrderStep.forGroovy().createFrom(getProject().file(importOrderFile)));
41-
}
42-
43-
public GroovyExtension.GrEclipseConfig greclipse() {
44-
return new GroovyExtension.GrEclipseConfig(GrEclipseFormatterStep.defaultVersion(), this);
45-
}
46-
47-
public GroovyExtension.GrEclipseConfig greclipse(String version) {
48-
return new GroovyExtension.GrEclipseConfig(version, this);
49-
}
50-
5129
@Override
5230
protected void setupTask(SpotlessTask task) {
5331
if (target == null) {

0 commit comments

Comments
 (0)