Skip to content

Commit d74aebe

Browse files
feat: New Extension
1 parent 8d8da7b commit d74aebe

5 files changed

Lines changed: 81 additions & 48 deletions

File tree

src/main/java/studio/o7/remora/RemoraPlugin.java

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,14 @@
77
import org.gradle.api.artifacts.dsl.DependencyHandler;
88
import org.gradle.api.artifacts.dsl.RepositoryHandler;
99
import org.gradle.api.logging.Logger;
10+
import org.gradle.api.plugins.ExtensionContainer;
1011
import org.gradle.api.plugins.JavaLibraryPlugin;
1112
import org.gradle.api.plugins.JavaPluginExtension;
1213
import org.gradle.api.plugins.PluginManager;
14+
import org.gradle.api.provider.Property;
1315
import org.gradle.api.publish.maven.plugins.MavenPublishPlugin;
1416
import org.gradle.plugins.signing.SigningPlugin;
17+
import studio.o7.remora.extensions.DefaultRemoraExtension;
1518
import studio.o7.remora.extensions.FrameworkExtension;
1619
import studio.o7.remora.extensions.RemoraExtension;
1720

@@ -24,21 +27,30 @@ public void apply(Project project) {
2427
applyNecessaryPlugins(logger, project);
2528
applyNecessaryRepositories(logger, project);
2629

27-
RemoraExtension extension = project.getExtensions().create("remora", RemoraExtension.class);
30+
RemoraExtension extension = setupExtension(logger, project.getExtensions());
2831

2932
applyNecessaryProjectConfiguration(logger, project, extension);
3033
applyJavaPluginConfiguration(logger, project, extension);
3134

32-
applyDependencies(logger, project, extension);
35+
//applyDependencies(logger, project, extension);
3336

3437
// todo
3538
// applyPlaceholderConfiguration(logger, project, extension);
3639
}
3740

41+
public static RemoraExtension setupExtension(@NonNull Logger logger, @NonNull ExtensionContainer extensions) {
42+
logger.info("Setting up the `remora` extension");
43+
return extensions.create("remora", DefaultRemoraExtension.class);
44+
}
45+
3846
public static void applyNecessaryProjectConfiguration(@NonNull Logger logger, @NonNull Project project, @NonNull RemoraExtension extension) {
3947
logger.info("Applying project `group` and `description` configuration");
40-
project.setGroup(extension.getGroupId());
41-
project.setDescription(extension.getDescription());
48+
project.setGroup(extension.getGroupId().get());
49+
50+
Property<String> description = extension.getDescription();
51+
if (description.isPresent()) {
52+
project.setDescription(description.get());
53+
}
4254
}
4355

4456
public static void applyJavaPluginConfiguration(@NonNull Logger logger, @NonNull Project project, @NonNull RemoraExtension extension) {
@@ -69,23 +81,20 @@ public static void applyNecessaryRepositories(@NonNull Logger logger, @NonNull P
6981
public static void applyDependencies(@NonNull Logger logger, @NonNull Project project, @NonNull RemoraExtension extension) {
7082
DependencyHandler dependencies = project.getDependencies();
7183

72-
FrameworkExtension framework = extension.getFramework();
84+
FrameworkExtension framework = null;
7385

74-
FrameworkExtension.Lombok lombok = framework.getLombok();
75-
if (lombok.isEnabled()) {
76-
logger.info("Adding dependency `lombok`");
86+
logger.info("Adding dependency `lombok`");
7787

78-
String id = "org.projectlombok:lombok:" + lombok.getVersion();
88+
String lombokId = "org.projectlombok:lombok:1.18.36";
7989

80-
dependencies.add("compileOnly", id);
81-
dependencies.add("annotationProcessor", id);
82-
}
90+
dependencies.add("compileOnly", lombokId);
91+
dependencies.add("annotationProcessor", lombokId);
8392

8493
FrameworkExtension.FastUtils fastUtils = framework.getFastUtils();
8594
if (fastUtils.isEnabled()) {
8695
logger.info("Adding dependency `fastUtils`");
8796

88-
String id = "it.unimi.dsi:fastutil:" + lombok.getVersion();
97+
String id = "it.unimi.dsi:fastutil:" + fastUtils.getVersion();
8998

9099
dependencies.add(fastUtils.getScope().getConfigurationName(), id);
91100
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package studio.o7.remora.extensions;
2+
3+
import org.gradle.api.reflect.HasPublicType;
4+
5+
public abstract class DefaultRemoraExtension implements RemoraExtension, HasPublicType {
6+
7+
}

src/main/java/studio/o7/remora/extensions/FrameworkExtension.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,9 @@
66

77
@Data
88
public class FrameworkExtension {
9-
@Optional
10-
private Lombok lombok = new Lombok();
119
@Optional
1210
private FastUtils fastUtils = new FastUtils();
1311

14-
@Data
15-
public static class Lombok {
16-
private boolean enabled = true;
17-
private String version = "1.18.36";
18-
}
19-
2012
@Data
2113
public static class FastUtils {
2214
private boolean enabled = true;
Lines changed: 11 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,19 @@
11
package studio.o7.remora.extensions;
22

3-
import lombok.Data;
3+
import org.gradle.api.provider.Property;
4+
import org.gradle.api.tasks.Optional;
45
import org.gradle.jvm.toolchain.JavaLanguageVersion;
56

6-
@Data
7-
public class RemoraExtension {
8-
/**
9-
* Project group id. Set as gradle group and publishing groupId.
10-
*/
11-
private String groupId;
12-
/**
13-
* Project artifact id. Set as publishing artifactId.
14-
*/
15-
private String artifactId;
16-
/**
17-
* Project description. Set as publishing description.
18-
*/
19-
private String description;
7+
public interface RemoraExtension {
208

21-
/**
22-
* Java language version.
23-
*/
24-
private JavaLanguageVersion javaVersion = JavaLanguageVersion.of(23);
9+
Property<String> getGroupId();
2510

26-
/**
27-
* Configuration of included frameworks.
28-
*/
29-
private FrameworkExtension framework = new FrameworkExtension();
11+
Property<String> getArtifactId();
12+
13+
@Optional
14+
Property<String> getDescription();
15+
16+
@Optional
17+
Property<JavaLanguageVersion> getJavaVersion();
3018

31-
/**
32-
* Configuration of publishing strategies.
33-
*/
34-
private PublishingExtension publishing = new PublishingExtension();
3519
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package studio.o7.remora.extensions;
2+
3+
import lombok.Data;
4+
import org.gradle.api.model.ObjectFactory;
5+
import org.gradle.jvm.toolchain.JavaLanguageVersion;
6+
7+
@Data
8+
public class RemoraOldExtension {
9+
/**
10+
* Project group id. Set as gradle group and publishing groupId.
11+
*/
12+
private String groupId;
13+
/**
14+
* Project artifact id. Set as publishing artifactId.
15+
*/
16+
private String artifactId;
17+
/**
18+
* Project description. Set as publishing description.
19+
*/
20+
private String description;
21+
22+
/**
23+
* Java language version.
24+
*/
25+
private JavaLanguageVersion javaVersion = JavaLanguageVersion.of(23);
26+
27+
/**
28+
* Configuration of included frameworks.
29+
*/
30+
private FrameworkExtension framework;
31+
32+
/**
33+
* Configuration of publishing strategies.
34+
*/
35+
private PublishingExtension publishing = new PublishingExtension();
36+
37+
38+
public RemoraOldExtension(ObjectFactory factory) {
39+
this.framework = factory.newInstance(FrameworkExtension.class);
40+
}
41+
}

0 commit comments

Comments
 (0)