Add reverse and output shade relocation flags
Removed the ^/@-style input specifications, in favor of command-line options (which apply to all mappings loaded): --in-shade-relocation: applies to srg-in input names --out-shade-relocation: applies to srg-in output names --reverse: reverses srg-in input/output names Output shading relocation is useful if remapping through --srg-in obf2cb.srg, and you want versioned names to match CB.
This commit is contained in:
parent
49e2b341c0
commit
16a1c725dc
@ -93,45 +93,6 @@ public class JarMapping {
|
|||||||
return mapped;
|
return mapped;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Load mappings given a (path) specification, optionally:
|
|
||||||
* - reversed through a prefix '^'
|
|
||||||
* - relocated through a suffix '@oldpath1=newpath1,oldpath2=newpath2'...
|
|
||||||
*
|
|
||||||
* Intended for convenient command-line usage.
|
|
||||||
*/
|
|
||||||
public void loadMappings(String spec) throws IOException {
|
|
||||||
boolean reverse;
|
|
||||||
|
|
||||||
if (spec.startsWith("^")) {
|
|
||||||
reverse = true;
|
|
||||||
spec = spec.substring(1);
|
|
||||||
} else {
|
|
||||||
reverse = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((new File(spec)).isDirectory()) {
|
|
||||||
loadMappingsDir((new File(spec)), reverse);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
int n = spec.lastIndexOf('@');
|
|
||||||
String path;
|
|
||||||
JarMappingLoadTransformer inputTransformer;
|
|
||||||
|
|
||||||
if (n == -1) {
|
|
||||||
path = spec;
|
|
||||||
inputTransformer = null;
|
|
||||||
} else {
|
|
||||||
path = spec.substring(0, n);
|
|
||||||
inputTransformer = new ShadeRelocationSimulator(spec.substring(n + 1));
|
|
||||||
}
|
|
||||||
|
|
||||||
BufferedReader reader = new BufferedReader(new FileReader(path));
|
|
||||||
|
|
||||||
loadMappings(reader, inputTransformer, null, reverse);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load mappings from an MCP directory
|
* Load mappings from an MCP directory
|
||||||
*/
|
*/
|
||||||
|
@ -69,9 +69,18 @@ public class SpecialSource {
|
|||||||
|
|
||||||
acceptsAll(asList("m", "srg-in"), "Mapping file input")
|
acceptsAll(asList("m", "srg-in"), "Mapping file input")
|
||||||
.withRequiredArg()
|
.withRequiredArg()
|
||||||
.describedAs("path[@relocations...]")
|
|
||||||
.ofType(String.class);
|
.ofType(String.class);
|
||||||
|
|
||||||
|
acceptsAll(asList("R", "in-shade-relocation", "shade-relocation"), "Simulate maven-shade-plugin relocation patterns on srg-in input names")
|
||||||
|
.withRequiredArg()
|
||||||
|
.withValuesSeparatedBy(',');
|
||||||
|
|
||||||
|
acceptsAll(asList("out-shade-relocation"), "Simulate maven-shade-plugin relocation patterns on srg-in output names")
|
||||||
|
.withRequiredArg()
|
||||||
|
.withValuesSeparatedBy(',');
|
||||||
|
|
||||||
|
acceptsAll(asList("r", "reverse"), "Reverse input/output names on srg-in");
|
||||||
|
|
||||||
acceptsAll(asList("i", "in-jar"), "Input jar to remap")
|
acceptsAll(asList("i", "in-jar"), "Input jar to remap")
|
||||||
.withRequiredArg()
|
.withRequiredArg()
|
||||||
.ofType(File.class);
|
.ofType(File.class);
|
||||||
@ -80,10 +89,6 @@ public class SpecialSource {
|
|||||||
.withRequiredArg()
|
.withRequiredArg()
|
||||||
.ofType(File.class);
|
.ofType(File.class);
|
||||||
|
|
||||||
acceptsAll(asList("R", "shade-relocation"), "Simulate maven-shade-plugin relocation patterns on srg-in")
|
|
||||||
.withRequiredArg()
|
|
||||||
.withValuesSeparatedBy(',');
|
|
||||||
|
|
||||||
acceptsAll(asList("l", "live"), "Enable runtime inheritance lookup");
|
acceptsAll(asList("l", "live"), "Enable runtime inheritance lookup");
|
||||||
acceptsAll(asList("L", "live-remapped"), "Enable runtime inheritance lookup through a mapping");
|
acceptsAll(asList("L", "live-remapped"), "Enable runtime inheritance lookup through a mapping");
|
||||||
|
|
||||||
@ -136,19 +141,37 @@ public class SpecialSource {
|
|||||||
|
|
||||||
jarMapping = new JarMapping();
|
jarMapping = new JarMapping();
|
||||||
|
|
||||||
|
// Optional shade relocation, on input or output names
|
||||||
|
JarMappingLoadTransformer inputTransformer = null;
|
||||||
|
JarMappingLoadTransformer outputTransformer = null;
|
||||||
|
|
||||||
|
if (options.has("in-shade-relocation")) {
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
List<String> relocations = (List<String>) options.valuesOf("in-shade-relocation");
|
||||||
|
|
||||||
|
inputTransformer = new ShadeRelocationSimulator(relocations);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.has("out-shade-relocation")) {
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
List<String> relocations = (List<String>) options.valuesOf("out-shade-relocation");
|
||||||
|
|
||||||
|
outputTransformer = new ShadeRelocationSimulator(relocations);
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean reverse = options.has("reverse");
|
||||||
|
|
||||||
|
// Load each mapping
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
List<String> specs = (List<String>) options.valuesOf("srg-in");
|
List<String> filenames = (List<String>) options.valuesOf("srg-in");
|
||||||
|
for (String filename : filenames) {
|
||||||
|
File file = new File(filename);
|
||||||
|
|
||||||
for (String spec : specs) {
|
if (file.isDirectory()) {
|
||||||
if (options.has("shade-relocation")) {
|
jarMapping.loadMappingsDir(file, reverse);
|
||||||
// legacy command-line option support
|
} else {
|
||||||
// (new way is filename@... from the command-line, or loadMappings() programmatically)
|
jarMapping.loadMappings(new BufferedReader(new FileReader(file)), inputTransformer, outputTransformer, reverse);
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
List<String> relocations = (List<String>) options.valuesOf("shade-relocation");
|
|
||||||
spec += "@" + Joiner.on(',').join(relocations);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
jarMapping.loadMappings(spec);
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
System.err.println("No mappings given, first-jar/second-jar or srg-in required");
|
System.err.println("No mappings given, first-jar/second-jar or srg-in required");
|
||||||
|
Loading…
Reference in New Issue
Block a user