summaryrefslogtreecommitdiff
path: root/src/main/java/cuchaz/enigma/command/CheckMappingsCommand.java
diff options
context:
space:
mode:
authorGravatar gegy10002019-06-16 23:49:25 +0200
committerGravatar gegy10002019-06-16 23:49:25 +0200
commite27d5967029f4f3da8889dd673ba516dcd9f3ac8 (patch)
tree71c98afad01cafdb2884da288e494e8761c2a8ff /src/main/java/cuchaz/enigma/command/CheckMappingsCommand.java
parentMerge remote-tracking branch 'origin/master' into proposal-tweak (diff)
downloadenigma-fork-e27d5967029f4f3da8889dd673ba516dcd9f3ac8.tar.gz
enigma-fork-e27d5967029f4f3da8889dd673ba516dcd9f3ac8.tar.xz
enigma-fork-e27d5967029f4f3da8889dd673ba516dcd9f3ac8.zip
Plugin rework along with API rework: Enigma split from EnigmaProject; plugins now provide services configurable via a profile
Diffstat (limited to 'src/main/java/cuchaz/enigma/command/CheckMappingsCommand.java')
-rw-r--r--src/main/java/cuchaz/enigma/command/CheckMappingsCommand.java32
1 files changed, 22 insertions, 10 deletions
diff --git a/src/main/java/cuchaz/enigma/command/CheckMappingsCommand.java b/src/main/java/cuchaz/enigma/command/CheckMappingsCommand.java
index 7ec7679..08e73e6 100644
--- a/src/main/java/cuchaz/enigma/command/CheckMappingsCommand.java
+++ b/src/main/java/cuchaz/enigma/command/CheckMappingsCommand.java
@@ -1,6 +1,7 @@
1package cuchaz.enigma.command; 1package cuchaz.enigma.command;
2 2
3import cuchaz.enigma.Deobfuscator; 3import cuchaz.enigma.Enigma;
4import cuchaz.enigma.EnigmaProject;
4import cuchaz.enigma.ProgressListener; 5import cuchaz.enigma.ProgressListener;
5import cuchaz.enigma.analysis.index.JarIndex; 6import cuchaz.enigma.analysis.index.JarIndex;
6import cuchaz.enigma.translation.mapping.EntryMapping; 7import cuchaz.enigma.translation.mapping.EntryMapping;
@@ -8,10 +9,8 @@ import cuchaz.enigma.translation.mapping.serde.MappingFormat;
8import cuchaz.enigma.translation.mapping.tree.EntryTree; 9import cuchaz.enigma.translation.mapping.tree.EntryTree;
9import cuchaz.enigma.translation.representation.entry.ClassEntry; 10import cuchaz.enigma.translation.representation.entry.ClassEntry;
10 11
11import java.io.File;
12import java.nio.file.Path; 12import java.nio.file.Path;
13import java.util.Set; 13import java.util.Set;
14import java.util.jar.JarFile;
15import java.util.stream.Collectors; 14import java.util.stream.Collectors;
16 15
17public class CheckMappingsCommand extends Command { 16public class CheckMappingsCommand extends Command {
@@ -32,26 +31,39 @@ public class CheckMappingsCommand extends Command {
32 31
33 @Override 32 @Override
34 public void run(String... args) throws Exception { 33 public void run(String... args) throws Exception {
35 File fileJarIn = getReadableFile(getArg(args, 0, "in jar", true)); 34 Path fileJarIn = getReadableFile(getArg(args, 0, "in jar", true)).toPath();
36 Path fileMappings = getReadablePath(getArg(args, 1, "mappings file", true)); 35 Path fileMappings = getReadablePath(getArg(args, 1, "mappings file", true));
37 36
37 Enigma enigma = Enigma.create();
38
38 System.out.println("Reading JAR..."); 39 System.out.println("Reading JAR...");
39 Deobfuscator deobfuscator = new Deobfuscator(new JarFile(fileJarIn)); 40
41 EnigmaProject project = enigma.openJar(fileJarIn, ProgressListener.none());
42
40 System.out.println("Reading mappings..."); 43 System.out.println("Reading mappings...");
41 44
42 MappingFormat format = chooseEnigmaFormat(fileMappings); 45 MappingFormat format = chooseEnigmaFormat(fileMappings);
43 EntryTree<EntryMapping> mappings = format.read(fileMappings, ProgressListener.VOID); 46 EntryTree<EntryMapping> mappings = format.read(fileMappings, ProgressListener.none());
44 deobfuscator.setMappings(mappings); 47 project.setMappings(mappings);
45 48
46 JarIndex idx = deobfuscator.getJarIndex(); 49 JarIndex idx = project.getJarIndex();
47 50
48 boolean error = false; 51 boolean error = false;
49 52
50 for (Set<ClassEntry> partition : idx.getPackageVisibilityIndex().getPartitions()) { 53 for (Set<ClassEntry> partition : idx.getPackageVisibilityIndex().getPartitions()) {
51 long packages = partition.stream().map(deobfuscator.getMapper()::deobfuscate).map(ClassEntry::getPackageName).distinct().count(); 54 long packages = partition.stream()
55 .map(project.getMapper()::deobfuscate)
56 .map(ClassEntry::getPackageName)
57 .distinct()
58 .count();
52 if (packages > 1) { 59 if (packages > 1) {
53 error = true; 60 error = true;
54 System.err.println("ERROR: Must be in one package:\n" + partition.stream().map(deobfuscator.getMapper()::deobfuscate).map(ClassEntry::toString).sorted().collect(Collectors.joining("\n"))); 61 System.err.println("ERROR: Must be in one package:\n" + partition.stream()
62 .map(project.getMapper()::deobfuscate)
63 .map(ClassEntry::toString)
64 .sorted()
65 .collect(Collectors.joining("\n"))
66 );
55 } 67 }
56 } 68 }
57 69