From 58c0aeb15a65324de08a914dfa62cc68a516a4e3 Mon Sep 17 00:00:00 2001 From: Runemoro Date: Mon, 9 Mar 2020 06:04:08 -0400 Subject: CFR support (#192) * Add decompiler API * Add CFR support--- .../cuchaz/enigma/command/DecompileCommand.java | 25 +++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) (limited to 'src/main/java/cuchaz/enigma/command/DecompileCommand.java') 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; import cuchaz.enigma.EnigmaProject; import cuchaz.enigma.ProgressListener; +import cuchaz.enigma.source.DecompilerService; +import cuchaz.enigma.source.Decompilers; +import java.lang.reflect.Field; import java.nio.file.Path; +import java.util.Locale; public class DecompileCommand extends Command { @@ -13,7 +17,7 @@ public class DecompileCommand extends Command { @Override public String getUsage() { - return " []"; + return " []"; } @Override @@ -23,16 +27,27 @@ public class DecompileCommand extends Command { @Override public void run(String... args) throws Exception { - Path fileJarIn = getReadableFile(getArg(args, 0, "in jar", true)).toPath(); - Path fileJarOut = getWritableFolder(getArg(args, 1, "out folder", true)).toPath(); - Path fileMappings = getReadablePath(getArg(args, 2, "mappings file", false)); + String decompilerName = getArg(args, 1, "decompiler", true); + Path fileJarIn = getReadableFile(getArg(args, 1, "in jar", true)).toPath(); + Path fileJarOut = getWritableFolder(getArg(args, 2, "out folder", true)).toPath(); + Path fileMappings = getReadablePath(getArg(args, 3, "mappings file", false)); + + DecompilerService decompilerService; + + try { + Field decompilerField = Decompilers.class.getField(decompilerName.toUpperCase(Locale.ROOT)); + decompilerService = (DecompilerService) decompilerField.get(null); + } catch (NoSuchFieldException e) { + System.err.println("Decompiler not found."); + return; + } EnigmaProject project = openProject(fileJarIn, fileMappings); ProgressListener progress = new ConsoleProgressListener(); EnigmaProject.JarExport jar = project.exportRemappedJar(progress); - EnigmaProject.SourceExport source = jar.decompile(progress); + EnigmaProject.SourceExport source = jar.decompile(progress, decompilerService); source.write(fileJarOut, progress); } -- cgit v1.2.3