Skip to content

Commit af9f686

Browse files
committed
Major clean up... for the move to module (JPMS) support...
1 parent dd5769a commit af9f686

File tree

10 files changed

+136
-206
lines changed

10 files changed

+136
-206
lines changed

src/main/java/org/mangorage/mangobotgradle/Config.java

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,20 @@
2222

2323
package org.mangorage.mangobotgradle;
2424

25-
import org.gradle.api.Task;
25+
import org.gradle.api.Action;
2626
import org.gradle.jvm.tasks.Jar;
2727
import org.mangorage.mangobotgradle.core.resolvers.Resolver;
2828
import org.mangorage.mangobotgradle.tasks.DatagenTask;
2929

30-
import java.util.function.Supplier;
30+
import java.util.ArrayList;
31+
import java.util.Collections;
32+
import java.util.List;
3133

3234
public final class Config {
33-
private boolean pluginDevMode = true;
35+
private final List<RunConfig> runConfigs = new ArrayList<>();
36+
private final List<RunConfig> runConfigs_readOnly = Collections.unmodifiableList(runConfigs);
37+
private final RunConfig defaultRunConfig = new RunConfig();
3438
private Jar jarTask;
35-
private Supplier<Task> releaseTask = () -> null;
3639

3740
public Config() {}
3841

@@ -44,15 +47,21 @@ public Jar getJarTask() {
4447
return jarTask;
4548
}
4649

47-
public void disableCopyOverBot() {
48-
this.pluginDevMode = false;
50+
public void addResolver(Resolver resolver) {
51+
DatagenTask.add(resolver);
4952
}
5053

51-
public boolean isPluginDevMode() {
52-
return this.pluginDevMode;
54+
public void addRunConfig(Action<RunConfig> action) {
55+
RunConfig runConfig = new RunConfig(); // or however you're instantiating this garbage
56+
action.execute(runConfig);
57+
runConfigs.add(runConfig);
5358
}
5459

55-
public void addResolver(Resolver resolver) {
56-
DatagenTask.add(resolver);
60+
public void useDefaultRunConfig() {
61+
runConfigs.add(defaultRunConfig);
62+
}
63+
64+
public List<RunConfig> getRunConfigs() {
65+
return runConfigs_readOnly;
5766
}
58-
}
67+
}

src/main/java/org/mangorage/mangobotgradle/MangoBotGradlePlugin.java

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -26,19 +26,20 @@
2626
import org.gradle.api.Project;
2727
import org.mangorage.mangobotgradle.core.Constants;
2828
import org.mangorage.mangobotgradle.core.TaskRegistry;
29-
import org.mangorage.mangobotgradle.tasks.CopyTask;
3029
import org.mangorage.mangobotgradle.tasks.DatagenTask;
31-
import org.mangorage.mangobotgradle.tasks.RunBotJPMSTask;
3230
import org.mangorage.mangobotgradle.tasks.RunBotTask;
3331
import org.mangorage.mangobotgradle.tasks.RunInstallerTask;
3432
import org.mangorage.mangobotgradle.tasks.SetupPluginsTask;
3533

36-
import java.util.List;
3734
import java.util.Objects;
3835

3936
public final class MangoBotGradlePlugin implements Plugin<Project> {
37+
38+
39+
public static Config cfg = null;
40+
4041
private final Config config = new Config();
41-
private final TaskRegistry taskRegistry = new TaskRegistry(config);
42+
private final TaskRegistry taskRegistry = new TaskRegistry();
4243

4344
public TaskRegistry getTaskRegistry() {
4445
return taskRegistry;
@@ -50,16 +51,19 @@ public Config getConfig() {
5051

5152
public MangoBotGradlePlugin() {
5253
taskRegistry.register(t -> {
53-
t.register("copyTask", CopyTask.class, config, Constants.BOT_OTHER_TASKS_GROUP);
54-
t.register("setupPlugins", SetupPluginsTask.class, Constants.BOT_OTHER_TASKS_GROUP);
55-
56-
t.register("runInstaller", RunInstallerTask.class, Constants.INSTALLER_TASKS_GROUP);
54+
MangoBotGradlePlugin.cfg = config;
5755

58-
t.register("runBot", RunBotTask.class, config, Constants.BOT_TASKS_GROUP);
59-
t.register("runDevBot", RunBotTask.class, config, Constants.BOT_TASKS_GROUP, List.of("--dev"));
56+
t.register("setupPlugins", SetupPluginsTask.class, config, Constants.BOT_OTHER_TASKS_GROUP);
6057

61-
t.register("runJPMSBot", RunBotJPMSTask.class, config, Constants.BOT_TASKS_GROUP, List.of("--useModules --dev"));
58+
t.register("runInstaller", RunInstallerTask.class, Constants.INSTALLER_TASKS_GROUP);
6259

60+
config.getRunConfigs().forEach(cfg -> {
61+
t.register(
62+
cfg.getName(),
63+
RunBotTask.class,
64+
cfg
65+
);
66+
});
6367
});
6468
}
6569

@@ -71,15 +75,9 @@ public void apply(Project project) {
7175
t.setVisible(true);
7276
});
7377

74-
var botCfg = project.getConfigurations().create("bot", t -> {
75-
t.setVisible(true);
76-
t.setTransitive(false);
77-
});
78-
79-
project.getConfigurations().create("botInternal", t -> {
78+
var botCfg = project.getConfigurations().create("bootstrap", t -> {
8079
t.setVisible(true);
8180
t.setTransitive(false);
82-
t.extendsFrom(project.getConfigurations().getByName("implementation"));
8381
});
8482

8583
var plugin = project.getConfigurations().create("plugin", t -> {
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package org.mangorage.mangobotgradle;
2+
3+
import org.mangorage.mangobotgradle.core.Constants;
4+
5+
import java.util.ArrayList;
6+
import java.util.List;
7+
8+
public class RunConfig {
9+
private final List<String> arguments = new ArrayList<>();
10+
private String group = Constants.BOT_TASKS_GROUP;
11+
private String name = "runBot";
12+
13+
public RunConfig() {}
14+
15+
public void setName(String name) {
16+
this.name = name;
17+
}
18+
19+
public void addArgs(String... args) {
20+
arguments.addAll(
21+
List.of(args)
22+
);
23+
}
24+
25+
public void setGroup(String group) {
26+
this.group = group;
27+
}
28+
29+
public String getGroup() {
30+
return group;
31+
}
32+
33+
public String getName() {
34+
return name;
35+
}
36+
37+
public List<String> getArgs() {
38+
return List.copyOf(arguments);
39+
}
40+
}

src/main/java/org/mangorage/mangobotgradle/core/TaskRegistry.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,14 @@
2323
package org.mangorage.mangobotgradle.core;
2424

2525
import org.gradle.api.Project;
26-
import org.mangorage.mangobotgradle.Config;
2726

2827
import java.util.ArrayList;
2928

3029
public final class TaskRegistry {
31-
private final Config config;
30+
3231
private final ArrayList<IRegisterSupplier> registerSuppliers = new ArrayList<>();
3332

34-
public TaskRegistry(Config config) {
35-
this.config = config;
36-
}
33+
public TaskRegistry() {}
3734

3835
public void register(IRegisterSupplier supplier) {
3936
registerSuppliers.add(supplier);

src/main/java/org/mangorage/mangobotgradle/tasks/CopyTask.java

Lines changed: 0 additions & 81 deletions
This file was deleted.

src/main/java/org/mangorage/mangobotgradle/tasks/DatagenTask.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import org.gradle.api.artifacts.ResolvedDependency;
3030
import org.gradle.api.artifacts.repositories.MavenArtifactRepository;
3131
import org.mangorage.mangobotgradle.MangoBotGradlePlugin;
32+
import org.mangorage.mangobotgradle.core.Constants;
3233
import org.mangorage.mangobotgradle.core.resolvers.ResolveDependency;
3334
import org.mangorage.mangobotgradle.core.resolvers.Resolver;
3435
import org.mangorage.mangobotgradle.util.Dependencies;
@@ -158,7 +159,7 @@ private static boolean isLocalRepository(MavenArtifactRepository repo) {
158159

159160
public static void apply(Project project, MangoBotGradlePlugin gradleUtilsPlugin) {
160161
var tp = project.getTasks().register("runDatagen", task -> {
161-
task.setGroup("bot tasks");
162+
task.setGroup(Constants.BOT_OTHER_TASKS_GROUP);
162163
task.doLast(action -> {
163164
var repos = getAllRepositories(project);
164165
var deps = new ArrayList<String>();

src/main/java/org/mangorage/mangobotgradle/tasks/RunBotJPMSTask.java

Lines changed: 0 additions & 39 deletions
This file was deleted.
Lines changed: 14 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,17 @@
1-
/*
2-
* Copyright (c) 2023. MangoRage
3-
*
4-
* Permission is hereby granted, free of charge, to any person obtaining a copy
5-
* of this software and associated documentation files (the "Software"), to deal
6-
* in the Software without restriction, including without limitation the rights
7-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8-
* copies of the Software, and to permit persons to whom the Software is
9-
* furnished to do so, subject to the following conditions:
10-
*
11-
* The above copyright notice and this permission notice shall be included in all
12-
* copies or substantial portions of the Software.
13-
*
14-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15-
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16-
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17-
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18-
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
19-
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
20-
* OR OTHER DEALINGS IN THE SOFTWARE.
21-
*/
22-
231
package org.mangorage.mangobotgradle.tasks;
242

253
import org.gradle.api.Task;
4+
import org.gradle.api.file.FileCollection;
265
import org.gradle.api.tasks.JavaExec;
27-
import org.mangorage.mangobotgradle.Config;
6+
import org.mangorage.mangobotgradle.RunConfig;
287

298
import javax.inject.Inject;
309
import java.util.ArrayList;
31-
import java.util.List;
3210

3311
public abstract class RunBotTask extends JavaExec {
3412
@Inject
35-
public RunBotTask(Config config, String group, List<String> args) {
36-
setGroup(group);
13+
public RunBotTask(RunConfig runConfig) {
14+
setGroup(runConfig.getGroup());
3715
setDescription("Runs the bot");
3816

3917
ArrayList<Task> deps = new ArrayList<>();
@@ -43,9 +21,16 @@ public RunBotTask(Config config, String group, List<String> args) {
4321
setDependsOn(deps);
4422
mustRunAfter(deps);
4523

46-
classpath(getProject().getConfigurations().getByName(config.isPluginDevMode() ? "bot" : "botInternal").getFiles());
47-
getMainClass().set("org.mangorage.mangobot.loader.Loader");
4824
setWorkingDir(getProject().file("build/run/"));
49-
setArgs(args);
25+
setArgs(runConfig.getArgs());
26+
getMainClass().set("");
27+
28+
// Create your module path from the config
29+
FileCollection modulePath = getProject().getConfigurations().getByName("bootstrap");
30+
31+
setClasspath(modulePath); // EMPTY CLASSPATH, this is MODULE mode
32+
getMainClass().set("org.mangorage.bootstrap.Bootstrap");
33+
getMainModule().set("org.mangorage.bootstrap");
34+
getModularity().getInferModulePath().set(true);
5035
}
5136
}

0 commit comments

Comments
 (0)