summaryrefslogtreecommitdiff
path: root/src/main/java/cuchaz/enigma/command/CheckMappingsCommand.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/cuchaz/enigma/command/CheckMappingsCommand.java')
-rw-r--r--src/main/java/cuchaz/enigma/command/CheckMappingsCommand.java77
1 files changed, 0 insertions, 77 deletions
diff --git a/src/main/java/cuchaz/enigma/command/CheckMappingsCommand.java b/src/main/java/cuchaz/enigma/command/CheckMappingsCommand.java
deleted file mode 100644
index 9d238e3..0000000
--- a/src/main/java/cuchaz/enigma/command/CheckMappingsCommand.java
+++ /dev/null
@@ -1,77 +0,0 @@
1package cuchaz.enigma.command;
2
3import cuchaz.enigma.Enigma;
4import cuchaz.enigma.EnigmaProject;
5import cuchaz.enigma.ProgressListener;
6import cuchaz.enigma.analysis.index.JarIndex;
7import cuchaz.enigma.translation.mapping.EntryMapping;
8import cuchaz.enigma.translation.mapping.MappingSaveParameters;
9import cuchaz.enigma.translation.mapping.serde.MappingFormat;
10import cuchaz.enigma.translation.mapping.tree.EntryTree;
11import cuchaz.enigma.translation.representation.entry.ClassEntry;
12
13import java.nio.file.Path;
14import java.util.Set;
15import java.util.stream.Collectors;
16
17public class CheckMappingsCommand extends Command {
18
19 public CheckMappingsCommand() {
20 super("checkmappings");
21 }
22
23 @Override
24 public String getUsage() {
25 return "<in jar> <mappings file>";
26 }
27
28 @Override
29 public boolean isValidArgument(int length) {
30 return length == 2;
31 }
32
33 @Override
34 public void run(String... args) throws Exception {
35 Path fileJarIn = getReadableFile(getArg(args, 0, "in jar", true)).toPath();
36 Path fileMappings = getReadablePath(getArg(args, 1, "mappings file", true));
37
38 Enigma enigma = Enigma.create();
39
40 System.out.println("Reading JAR...");
41
42 EnigmaProject project = enigma.openJar(fileJarIn, ProgressListener.none());
43
44 System.out.println("Reading mappings...");
45
46 MappingFormat format = chooseEnigmaFormat(fileMappings);
47 MappingSaveParameters saveParameters = enigma.getProfile().getMappingSaveParameters();
48
49 EntryTree<EntryMapping> mappings = format.read(fileMappings, ProgressListener.none(), saveParameters);
50 project.setMappings(mappings);
51
52 JarIndex idx = project.getJarIndex();
53
54 boolean error = false;
55
56 for (Set<ClassEntry> partition : idx.getPackageVisibilityIndex().getPartitions()) {
57 long packages = partition.stream()
58 .map(project.getMapper()::deobfuscate)
59 .map(ClassEntry::getPackageName)
60 .distinct()
61 .count();
62 if (packages > 1) {
63 error = true;
64 System.err.println("ERROR: Must be in one package:\n" + partition.stream()
65 .map(project.getMapper()::deobfuscate)
66 .map(ClassEntry::toString)
67 .sorted()
68 .collect(Collectors.joining("\n"))
69 );
70 }
71 }
72
73 if (error) {
74 throw new IllegalStateException("Errors in package visibility detected, see SysErr above");
75 }
76 }
77}