aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/net/fabricmc
diff options
context:
space:
mode:
authori509VCB <git@i509.me>2020-12-21 15:02:39 -0600
committerGitHub <noreply@github.com>2020-12-21 21:02:39 +0000
commitb0860c36d64ddcbee39770af1f9fbb8370641bdd (patch)
treec805a2e9d29f4067aee58b65fa0ce7e8494182c0 /src/main/java/net/fabricmc
parente20993daf86a4716b8b28d1c51806ddffcae71d0 (diff)
downloadarchitectury-loom-b0860c36d64ddcbee39770af1f9fbb8370641bdd.tar.gz
architectury-loom-b0860c36d64ddcbee39770af1f9fbb8370641bdd.tar.bz2
architectury-loom-b0860c36d64ddcbee39770af1f9fbb8370641bdd.zip
Add ability to specify additional tiny remapper options in remapJar (#292)
* Add ability to specify additional tiny remapper options in remapJar * Imports go brr * Fix checkstyle Co-authored-by: modmuss50 <modmuss50@gmail.com>
Diffstat (limited to 'src/main/java/net/fabricmc')
-rw-r--r--src/main/java/net/fabricmc/loom/task/RemapJarTask.java16
-rw-r--r--src/main/java/net/fabricmc/loom/util/JarRemapper.java12
2 files changed, 28 insertions, 0 deletions
diff --git a/src/main/java/net/fabricmc/loom/task/RemapJarTask.java b/src/main/java/net/fabricmc/loom/task/RemapJarTask.java
index 3a8b271e..04522648 100644
--- a/src/main/java/net/fabricmc/loom/task/RemapJarTask.java
+++ b/src/main/java/net/fabricmc/loom/task/RemapJarTask.java
@@ -29,8 +29,11 @@ import java.io.FileNotFoundException;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.List;
import com.google.common.base.Preconditions;
+import org.gradle.api.Action;
import org.gradle.api.Project;
import org.gradle.api.file.FileCollection;
import org.gradle.api.file.RegularFileProperty;
@@ -59,6 +62,7 @@ public class RemapJarTask extends Jar {
private final RegularFileProperty input;
private final Property<Boolean> addNestedDependencies;
private final Property<Boolean> remapAccessWidener;
+ private final List<Action<TinyRemapper.Builder>> remapOptions = new ArrayList<>();
public JarRemapper jarRemapper;
private FileCollection classpath;
@@ -107,6 +111,11 @@ public class RemapJarTask extends Jar {
}
}
+ // Apply any requested options to tiny remapper
+ for (Action<TinyRemapper.Builder> remapOption : this.remapOptions) {
+ remapOption.execute(remapperBuilder);
+ }
+
project.getLogger().lifecycle(":remapping " + input.getFileName());
StringBuilder rc = new StringBuilder("Remap classpath: ");
@@ -181,6 +190,9 @@ public class RemapJarTask extends Jar {
}
}
+ // Add remap options to the jar remapper
+ jarRemapper.addOptions(this.remapOptions);
+
jarRemapper.scheduleRemap(input, output)
.supplyAccessWidener((remapData, remapper) -> {
if (getRemapAccessWidener().getOrElse(false) && extension.accessWidener != null) {
@@ -251,6 +263,10 @@ public class RemapJarTask extends Jar {
return remapAccessWidener;
}
+ public void remapOptions(Action<TinyRemapper.Builder> action) {
+ this.remapOptions.add(action);
+ }
+
public RemapJarTask classpath(FileCollection collection) {
if (this.classpath == null) {
this.classpath = collection;
diff --git a/src/main/java/net/fabricmc/loom/util/JarRemapper.java b/src/main/java/net/fabricmc/loom/util/JarRemapper.java
index bd070c56..1b7b841c 100644
--- a/src/main/java/net/fabricmc/loom/util/JarRemapper.java
+++ b/src/main/java/net/fabricmc/loom/util/JarRemapper.java
@@ -34,6 +34,7 @@ import java.util.Set;
import java.util.function.BiConsumer;
import java.util.function.BiFunction;
+import org.gradle.api.Action;
import org.objectweb.asm.commons.Remapper;
import net.fabricmc.stitch.util.Pair;
@@ -46,6 +47,7 @@ public class JarRemapper {
private final List<IMappingProvider> mappingProviders = new ArrayList<>();
private final Set<Path> classPath = new HashSet<>();
private final List<RemapData> remapData = new ArrayList<>();
+ private List<Action<TinyRemapper.Builder>> remapOptions;
public void addMappings(IMappingProvider mappingProvider) {
mappingProviders.add(mappingProvider);
@@ -65,6 +67,12 @@ public class JarRemapper {
TinyRemapper.Builder remapperBuilder = TinyRemapper.newRemapper();
mappingProviders.forEach(remapperBuilder::withMappings);
+ if (remapOptions != null) {
+ for (Action<TinyRemapper.Builder> remapOption : remapOptions) {
+ remapOption.execute(remapperBuilder);
+ }
+ }
+
TinyRemapper remapper = remapperBuilder.build();
Path[] remapClasspath = classPath.stream()
@@ -102,6 +110,10 @@ public class JarRemapper {
remapData.forEach(RemapData::complete);
}
+ public void addOptions(List<Action<TinyRemapper.Builder>> remapOptions) {
+ this.remapOptions = remapOptions;
+ }
+
public static class RemapData {
public final Path input;
public final Path output;