Skip to content

Commit 0939944

Browse files
committed
Rewrite remainder of the Check tasks, migrate to grouped object
Rewrite ExtractInheritance task, move to Check group as its the only place that uses it Make InstallerJar a Jar task so we can configure manifest if we want Rewrite ValidateDeprecations Expose Searge named jar from mcp.files Rewrite ByteCodePredicateFinder -> MethodCallFinder
1 parent 043de02 commit 0939944

24 files changed

+986
-895
lines changed

src/main/groovy/net/minecraftforge/forgedev/ForgeDevExtension.java

Lines changed: 35 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@
66

77
import net.minecraftforge.forgedev.legacy.tasks.Util;
88
import net.minecraftforge.forgedev.legacy.values.CIRuntime;
9-
import net.minecraftforge.forgedev.tasks.checks.CheckTask;
9+
import net.minecraftforge.forgedev.tasks.MethodCallFinder;
10+
import net.minecraftforge.forgedev.tasks.ValidateDeprecations;
11+
import net.minecraftforge.forgedev.tasks.checks.Checks;
1012
import net.minecraftforge.forgedev.tasks.compat.LegacyExtractZip;
1113
import net.minecraftforge.forgedev.tasks.compat.LegacyMergeFilesTask;
1214
import net.minecraftforge.forgedev.tasks.filtering.LegacyFilterNewJar;
@@ -31,7 +33,6 @@
3133
import net.minecraftforge.forgedev.tasks.srg2source.ApplyRangeMap;
3234
import net.minecraftforge.forgedev.tasks.srg2source.ExtractRangeMap;
3335
import net.minecraftforge.gradleutils.shared.Closures;
34-
import org.codehaus.groovy.runtime.StringGroovyMethods;
3536
import org.gradle.api.Action;
3637
import org.gradle.api.Project;
3738
import org.gradle.api.artifacts.Configuration;
@@ -78,9 +79,7 @@ public abstract class ForgeDevExtension {
7879
private final DirectoryProperty mavenizerRepo = this.getObjects().directoryProperty();
7980

8081
protected abstract @Inject ObjectFactory getObjects();
81-
8282
protected abstract @Inject ProviderFactory getProviders();
83-
8483
protected abstract @Inject ProjectLayout getProjectLayout();
8584

8685
private final Project project;
@@ -139,24 +138,16 @@ public Installer installer(String name, Action<Installer> action) {
139138
// boolean input. Registers the 'check{Name}' version to the 'check' group
140139
// and the 'checkAndFix{Name}' task to the 'checkAndFix' group.
141140
// =====================================================================
142-
public <T extends CheckTask> void check(String taskName, Class<T> clazz) {
143-
check(taskName, clazz, Util.noop());
141+
private Checks checks;
142+
public Checks getChecks() {
143+
if (checks == null)
144+
checks = this.getObjects().newInstance(Checks.class, this.project);
145+
return checks;
144146
}
145-
public <T extends CheckTask> void check(String taskName, Class<T> clazz, Action<? super T> action) {
146-
var tasks = this.project.getTasks();
147-
taskName = StringGroovyMethods.capitalize(taskName);
148-
149-
var check = tasks.register("check" + taskName, clazz, task -> {
150-
action.execute(task);
151-
task.getFix().set(false);
152-
});
153-
tasks.named(LifecycleBasePlugin.CHECK_TASK_NAME, task -> task.dependsOn(check));
154-
155-
var checkAndFix = tasks.register("checkAndFix" + taskName, clazz, task -> {
156-
action.execute(task);
157-
task.getFix().set(true);
158-
});
159-
tasks.named("checkAndFix", task -> task.dependsOn(checkAndFix));
147+
public Checks checks(Action<Checks> action) {
148+
var ret = getChecks();
149+
action.execute(ret);
150+
return ret;
160151
}
161152
// ===============================================================================
162153

@@ -175,6 +166,29 @@ public Shim shim(String name, Action<Shim> action) {
175166
return ret;
176167
}
177168
// ===============================================================================
169+
public TaskProvider<MethodCallFinder> methodCallFinder(String name) {
170+
return methodCallFinder(name, Util.noop());
171+
}
172+
public TaskProvider<MethodCallFinder> methodCallFinder(String name, Action<MethodCallFinder> action) {
173+
return this.project.getTasks().register(name, MethodCallFinder.class, action);
174+
}
175+
// ===============================================================================
176+
public TaskProvider<ValidateDeprecations> validateDeprecations() {
177+
return validateDeprecations(this.project.getTasks().named("jar", Jar.class));
178+
}
179+
public TaskProvider<ValidateDeprecations> validateDeprecations(TaskProvider<? extends AbstractArchiveTask> jar) {
180+
var tasks = this.project.getTasks();
181+
var ret = tasks.register("validate" + Util.capitalize(jar.getName()) + "Deprecations", ValidateDeprecations.class, task -> {
182+
task.setGroup(LifecycleBasePlugin.VERIFICATION_GROUP);
183+
task.getInput().set(jar.flatMap(AbstractArchiveTask::getArchiveFile));
184+
var patcher = this.project.getExtensions().findByType(LegacyPatcherExtension.class);
185+
if (patcher != null)
186+
task.getMcVersion().set(patcher.getMcVersion());
187+
});
188+
tasks.named(LifecycleBasePlugin.CHECK_TASK_NAME, check -> check.dependsOn(ret));
189+
return ret;
190+
}
191+
// ===============================================================================
178192

179193

180194

src/main/groovy/net/minecraftforge/forgedev/LegacyMCPExtension.java

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import org.gradle.jvm.toolchain.JavaLauncher;
1818

1919
import javax.inject.Inject;
20+
import java.io.File;
2021
import java.util.ArrayList;
2122
import java.util.HashMap;
2223
import java.util.List;
@@ -94,27 +95,29 @@ public MinecraftFiles getFiles() {
9495
public MinecraftFiles getFiles(String version) {
9596
var ret = this.files.get(version);
9697
if (ret == null) {
97-
//var client = mavenizer("client", version, false);
98-
//var server = mavenizer("server", version, false);
99-
var joined = mavenizer("joined", version, false);
98+
//var client = mavenizer("client", version, true);
99+
//var server = mavenizer("server", version, true);
100+
var joined = mavenizer("joined", version, true);
100101

101-
ret = getObjects().newInstance(MinecraftFiles.class, plugin, joined);
102+
ret = getObjects().newInstance(MinecraftFiles.class, plugin, joined.info, joined.output);
102103
this.files.put(version, ret);
103104
}
104105
return ret;
105106
}
106107

107-
private Provider<MCPSetupFiles> mavenizer(String pipeline, String version, boolean searge) {
108+
private record Output(Provider<MCPSetupFiles> info, File output) {}
109+
private Output mavenizer(String pipeline, String version, boolean searge) {
108110
var fileName = "mavenizer/mcp-" + version + "-files-" + pipeline;
109111
if (searge)
110112
fileName += "-searge";
113+
111114
// TODO: [ForgeDevPlugin] Make single mavenizer task to get the 'vanilla' files we need
112115
// We also need a way to get the 'slim' artifacts for older versions which don't use bundled server jar
113116
// Could still name it 'serverExtracted' in the json
114117
var output = this.plugin.localCaches().file("mavenizer/" + fileName + ".jar").get().getAsFile();
115118
var outputJson = this.plugin.localCaches().file("mavenizer/" + fileName + ".json").get().getAsFile();
116119

117-
return this.getProviders().of(MavenizerValueSource.class, spec -> {
120+
var info = this.getProviders().of(MavenizerValueSource.class, spec -> {
118121
spec.parameters(params -> {
119122
var tool = this.plugin.getTool(Tools.MAVENIZER);
120123
params.getClasspath().setFrom(tool.getClasspath());
@@ -142,18 +145,22 @@ private Provider<MCPSetupFiles> mavenizer(String pipeline, String version, boole
142145
});
143146
})
144147
.map(v -> JsonData.fromJson(outputJson, MCPSetupFiles.class));
148+
149+
return new Output(info, output);
145150
}
146151

147152
public static abstract class MinecraftFiles {
148153
private final ForgeDevPlugin plugin;
149154
private final Provider<MCPSetupFiles> info;
155+
private final File joinedSearge;
150156
protected abstract @Inject ObjectFactory getObjects();
151157
protected abstract @Inject ProviderFactory getProviders();
152158

153159
@Inject
154-
public MinecraftFiles(ForgeDevPlugin plugin, Provider<MCPSetupFiles> info) {
160+
public MinecraftFiles(ForgeDevPlugin plugin, Provider<MCPSetupFiles> info, File joinedSearge) {
155161
this.plugin = plugin;
156162
this.info = info;
163+
this.joinedSearge = joinedSearge;
157164
}
158165

159166
private Provider<RegularFile> get(Transformer<String, MCPSetupFiles> field) {
@@ -180,5 +187,11 @@ public Provider<RegularFile> getServerExtracted() {
180187
public Provider<RegularFile> getServerMappings() {
181188
return get(info -> info.serverMappings);
182189
}
190+
public Provider<RegularFile> getLibraryList() {
191+
return get(info -> info.librariesList);
192+
}
193+
public Provider<RegularFile> getJoinedSearge() {
194+
return get(info -> this.joinedSearge.getAbsolutePath());
195+
}
183196
}
184197
}

src/main/groovy/net/minecraftforge/forgedev/PatcherExtension.java

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

src/main/groovy/net/minecraftforge/forgedev/legacy/ForgeBuildPlugin.java

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import net.minecraftforge.forgedev.tasks.filtering.LegacyFilterNewJar;
88
import net.minecraftforge.forgedev.tasks.generation.GeneratePatcherConfigV2;
99
import net.minecraftforge.forgedev.tasks.installertools.DownloadMappings;
10-
import net.minecraftforge.forgedev.tasks.installertools.ExtractInheritance;
1110
import net.minecraftforge.forgedev.tasks.mcp.MavenizerMCPSetup;
1211
import net.minecraftforge.forgedev.tasks.mcp.MavenizerRawArtifact;
1312
import net.minecraftforge.forgedev.tasks.obfuscation.LegacyRenameJar;
@@ -27,9 +26,6 @@
2726
import org.gradle.api.tasks.bundling.Zip;
2827

2928
import javax.inject.Inject;
30-
import java.io.File;
31-
import java.io.IOException;
32-
import java.nio.file.Files;
3329

3430
abstract class ForgeBuildPlugin extends EnhancedPlugin<Project> {
3531
static final String NAME = "forge-build";
@@ -67,24 +63,6 @@ public void setup(Project project) {
6763
var downloadServerMappings = tasks.named("downloadServerMappings", DownloadMappings.class);
6864
var jar = tasks.named("jar", Jar.class);
6965

70-
var extractInheritance = tasks.register("extractInheritance", ExtractInheritance.class, task -> {
71-
task.setGroup("Forge downloads");
72-
task.dependsOn(setupMCP);
73-
74-
task.getAdditionalArgs().add("--annotations");
75-
task.getInput().fileProvider(tasks.named("genJoinedBinPatches", CreateBinPatches.class).map(t -> t.getClean().getSingleFile()));
76-
task.getLibraries().from(setupMCP.flatMap(MavenizerMCPSetup::getLibrariesList).map(libraries -> {
77-
try {
78-
return Files.readAllLines(libraries.getAsFile().toPath()).stream()
79-
.map(line -> line.substring(3)) // remove -e=
80-
.map(File::new)
81-
.toList();
82-
} catch (IOException e) {
83-
throw new RuntimeException(e);
84-
}
85-
}));
86-
});
87-
8866
var createClientOfficial = tasks.register("createClientOfficial", LegacyRenameJar.class, task -> {
8967
task.dependsOn(setupMCP);
9068

src/main/groovy/net/minecraftforge/forgedev/legacy/tasks/BytecodePredicateFinder.groovy

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

src/main/groovy/net/minecraftforge/forgedev/legacy/tasks/LauncherJson.groovy

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

0 commit comments

Comments
 (0)