summaryrefslogtreecommitdiff
path: root/src/main/java/cuchaz/enigma/command/DecompileCommand.java
diff options
context:
space:
mode:
authorGravatar Runemoro2020-03-09 06:04:08 -0400
committerGravatar GitHub2020-03-09 10:04:08 +0000
commit58c0aeb15a65324de08a914dfa62cc68a516a4e3 (patch)
treef45e8141c0864692051149a478c5a0a6bbe68686 /src/main/java/cuchaz/enigma/command/DecompileCommand.java
parentMade Enigma gui translatable (#193) (diff)
downloadenigma-fork-58c0aeb15a65324de08a914dfa62cc68a516a4e3.tar.gz
enigma-fork-58c0aeb15a65324de08a914dfa62cc68a516a4e3.tar.xz
enigma-fork-58c0aeb15a65324de08a914dfa62cc68a516a4e3.zip
CFR support (#192)
* Add decompiler API * Add CFR support
Diffstat (limited to 'src/main/java/cuchaz/enigma/command/DecompileCommand.java')
-rw-r--r--src/main/java/cuchaz/enigma/command/DecompileCommand.java25
1 files changed, 20 insertions, 5 deletions
diff --git a/src/main/java/cuchaz/enigma/command/DecompileCommand.java b/src/main/java/cuchaz/enigma/command/DecompileCommand.java
index bc23d01..3d15dac 100644
--- a/src/main/java/cuchaz/enigma/command/DecompileCommand.java
+++ b/src/main/java/cuchaz/enigma/command/DecompileCommand.java
@@ -2,8 +2,12 @@ package cuchaz.enigma.command;
2 2
3import cuchaz.enigma.EnigmaProject; 3import cuchaz.enigma.EnigmaProject;
4import cuchaz.enigma.ProgressListener; 4import cuchaz.enigma.ProgressListener;
5import cuchaz.enigma.source.DecompilerService;
6import cuchaz.enigma.source.Decompilers;
5 7
8import java.lang.reflect.Field;
6import java.nio.file.Path; 9import java.nio.file.Path;
10import java.util.Locale;
7 11
8public class DecompileCommand extends Command { 12public class DecompileCommand extends Command {
9 13
@@ -13,7 +17,7 @@ public class DecompileCommand extends Command {
13 17
14 @Override 18 @Override
15 public String getUsage() { 19 public String getUsage() {
16 return "<in jar> <out folder> [<mappings file>]"; 20 return "<decompiler> <in jar> <out folder> [<mappings file>]";
17 } 21 }
18 22
19 @Override 23 @Override
@@ -23,16 +27,27 @@ public class DecompileCommand extends Command {
23 27
24 @Override 28 @Override
25 public void run(String... args) throws Exception { 29 public void run(String... args) throws Exception {
26 Path fileJarIn = getReadableFile(getArg(args, 0, "in jar", true)).toPath(); 30 String decompilerName = getArg(args, 1, "decompiler", true);
27 Path fileJarOut = getWritableFolder(getArg(args, 1, "out folder", true)).toPath(); 31 Path fileJarIn = getReadableFile(getArg(args, 1, "in jar", true)).toPath();
28 Path fileMappings = getReadablePath(getArg(args, 2, "mappings file", false)); 32 Path fileJarOut = getWritableFolder(getArg(args, 2, "out folder", true)).toPath();
33 Path fileMappings = getReadablePath(getArg(args, 3, "mappings file", false));
34
35 DecompilerService decompilerService;
36
37 try {
38 Field decompilerField = Decompilers.class.getField(decompilerName.toUpperCase(Locale.ROOT));
39 decompilerService = (DecompilerService) decompilerField.get(null);
40 } catch (NoSuchFieldException e) {
41 System.err.println("Decompiler not found.");
42 return;
43 }
29 44
30 EnigmaProject project = openProject(fileJarIn, fileMappings); 45 EnigmaProject project = openProject(fileJarIn, fileMappings);
31 46
32 ProgressListener progress = new ConsoleProgressListener(); 47 ProgressListener progress = new ConsoleProgressListener();
33 48
34 EnigmaProject.JarExport jar = project.exportRemappedJar(progress); 49 EnigmaProject.JarExport jar = project.exportRemappedJar(progress);
35 EnigmaProject.SourceExport source = jar.decompile(progress); 50 EnigmaProject.SourceExport source = jar.decompile(progress, decompilerService);
36 51
37 source.write(fileJarOut, progress); 52 source.write(fileJarOut, progress);
38 } 53 }