summaryrefslogtreecommitdiff
path: root/enigma-cli/src/main
diff options
context:
space:
mode:
authorGravatar Joe2025-09-11 17:35:30 +0100
committerGravatar modmuss2025-09-13 09:14:23 +0100
commitf8c7b8497e9687e15123caca7d4fde54f5bf067a (patch)
tree92a9da7756e0e18cb8925c1cc01e2a2edc10e60f /enigma-cli/src/main
parentAdd factory methods to the entry views (diff)
downloadenigma-f8c7b8497e9687e15123caca7d4fde54f5bf067a.tar.gz
enigma-f8c7b8497e9687e15123caca7d4fde54f5bf067a.tar.xz
enigma-f8c7b8497e9687e15123caca7d4fde54f5bf067a.zip
Allow you to specify the libraries in the program args rather than always using the runtime classpath
Diffstat (limited to 'enigma-cli/src/main')
-rw-r--r--enigma-cli/src/main/java/cuchaz/enigma/command/CheckMappingsCommand.java7
-rw-r--r--enigma-cli/src/main/java/cuchaz/enigma/command/Command.java17
-rw-r--r--enigma-cli/src/main/java/cuchaz/enigma/command/DecompileCommand.java6
-rw-r--r--enigma-cli/src/main/java/cuchaz/enigma/command/DeobfuscateCommand.java4
4 files changed, 25 insertions, 9 deletions
diff --git a/enigma-cli/src/main/java/cuchaz/enigma/command/CheckMappingsCommand.java b/enigma-cli/src/main/java/cuchaz/enigma/command/CheckMappingsCommand.java
index 5e64b2c1..fc187f1b 100644
--- a/enigma-cli/src/main/java/cuchaz/enigma/command/CheckMappingsCommand.java
+++ b/enigma-cli/src/main/java/cuchaz/enigma/command/CheckMappingsCommand.java
@@ -1,6 +1,7 @@
1package cuchaz.enigma.command; 1package cuchaz.enigma.command;
2 2
3import java.nio.file.Path; 3import java.nio.file.Path;
4import java.util.List;
4import java.util.Set; 5import java.util.Set;
5import java.util.stream.Collectors; 6import java.util.stream.Collectors;
6 7
@@ -8,7 +9,6 @@ import cuchaz.enigma.Enigma;
8import cuchaz.enigma.EnigmaProject; 9import cuchaz.enigma.EnigmaProject;
9import cuchaz.enigma.ProgressListener; 10import cuchaz.enigma.ProgressListener;
10import cuchaz.enigma.analysis.index.JarIndex; 11import cuchaz.enigma.analysis.index.JarIndex;
11import cuchaz.enigma.classprovider.ClasspathClassProvider;
12import cuchaz.enigma.translation.mapping.EntryMapping; 12import cuchaz.enigma.translation.mapping.EntryMapping;
13import cuchaz.enigma.translation.mapping.serde.MappingSaveParameters; 13import cuchaz.enigma.translation.mapping.serde.MappingSaveParameters;
14import cuchaz.enigma.translation.mapping.tree.EntryTree; 14import cuchaz.enigma.translation.mapping.tree.EntryTree;
@@ -21,7 +21,7 @@ public class CheckMappingsCommand extends Command {
21 21
22 @Override 22 @Override
23 public String getUsage() { 23 public String getUsage() {
24 return "<in jar> <mappings file>"; 24 return "<in jar> <mappings file> [<libraries> ...]";
25 } 25 }
26 26
27 @Override 27 @Override
@@ -33,11 +33,12 @@ public class CheckMappingsCommand extends Command {
33 public void run(String... args) throws Exception { 33 public void run(String... args) throws Exception {
34 Path fileJarIn = getReadableFile(getArg(args, 0, "in jar", true)).toPath(); 34 Path fileJarIn = getReadableFile(getArg(args, 0, "in jar", true)).toPath();
35 Path fileMappings = getReadablePath(getArg(args, 1, "mappings file", true)); 35 Path fileMappings = getReadablePath(getArg(args, 1, "mappings file", true));
36 List<Path> libraries = getReadablePaths(args, 2);
36 37
37 Enigma enigma = Enigma.create(); 38 Enigma enigma = Enigma.create();
38 39
39 System.out.println("Reading JAR..."); 40 System.out.println("Reading JAR...");
40 EnigmaProject project = enigma.openJar(fileJarIn, new ClasspathClassProvider(), ProgressListener.none()); 41 EnigmaProject project = enigma.openJar(fileJarIn, libraries, ProgressListener.none());
41 42
42 System.out.println("Reading mappings..."); 43 System.out.println("Reading mappings...");
43 MappingSaveParameters saveParameters = enigma.getProfile().getMappingSaveParameters(); 44 MappingSaveParameters saveParameters = enigma.getProfile().getMappingSaveParameters();
diff --git a/enigma-cli/src/main/java/cuchaz/enigma/command/Command.java b/enigma-cli/src/main/java/cuchaz/enigma/command/Command.java
index 53b277f6..7f42f3aa 100644
--- a/enigma-cli/src/main/java/cuchaz/enigma/command/Command.java
+++ b/enigma-cli/src/main/java/cuchaz/enigma/command/Command.java
@@ -5,6 +5,8 @@ import java.io.IOException;
5import java.nio.file.Files; 5import java.nio.file.Files;
6import java.nio.file.Path; 6import java.nio.file.Path;
7import java.nio.file.Paths; 7import java.nio.file.Paths;
8import java.util.ArrayList;
9import java.util.List;
8import java.util.Locale; 10import java.util.Locale;
9 11
10import net.fabricmc.mappingio.MappingReader; 12import net.fabricmc.mappingio.MappingReader;
@@ -14,7 +16,6 @@ import net.fabricmc.mappingio.tree.VisitableMappingTree;
14import cuchaz.enigma.Enigma; 16import cuchaz.enigma.Enigma;
15import cuchaz.enigma.EnigmaProject; 17import cuchaz.enigma.EnigmaProject;
16import cuchaz.enigma.ProgressListener; 18import cuchaz.enigma.ProgressListener;
17import cuchaz.enigma.classprovider.ClasspathClassProvider;
18import cuchaz.enigma.translation.mapping.EntryMapping; 19import cuchaz.enigma.translation.mapping.EntryMapping;
19import cuchaz.enigma.translation.mapping.serde.MappingFormat; 20import cuchaz.enigma.translation.mapping.serde.MappingFormat;
20import cuchaz.enigma.translation.mapping.serde.MappingIoConverter; 21import cuchaz.enigma.translation.mapping.serde.MappingIoConverter;
@@ -35,13 +36,13 @@ public abstract class Command {
35 36
36 public abstract void run(String... args) throws Exception; 37 public abstract void run(String... args) throws Exception;
37 38
38 protected static EnigmaProject openProject(Path fileJarIn, Path fileMappings) throws Exception { 39 protected static EnigmaProject openProject(Path fileJarIn, Path fileMappings, List<Path> libraries) throws Exception {
39 ProgressListener progress = new ConsoleProgressListener(); 40 ProgressListener progress = new ConsoleProgressListener();
40 41
41 Enigma enigma = Enigma.create(); 42 Enigma enigma = Enigma.create();
42 43
43 System.out.println("Reading jar..."); 44 System.out.println("Reading jar...");
44 EnigmaProject project = enigma.openJar(fileJarIn, new ClasspathClassProvider(), progress); 45 EnigmaProject project = enigma.openJar(fileJarIn, libraries, progress);
45 46
46 if (fileMappings != null) { 47 if (fileMappings != null) {
47 System.out.println("Reading mappings..."); 48 System.out.println("Reading mappings...");
@@ -143,6 +144,16 @@ public abstract class Command {
143 return args[i]; 144 return args[i];
144 } 145 }
145 146
147 protected static List<Path> getReadablePaths(String[] args, int startingFrom) {
148 List<Path> paths = new ArrayList<>();
149
150 for (int i = startingFrom; i < args.length; i++) {
151 paths.add(getReadablePath(args[i]));
152 }
153
154 return paths;
155 }
156
146 public static class ConsoleProgressListener implements ProgressListener { 157 public static class ConsoleProgressListener implements ProgressListener {
147 private static final int ReportTime = 5000; // 5s 158 private static final int ReportTime = 5000; // 5s
148 159
diff --git a/enigma-cli/src/main/java/cuchaz/enigma/command/DecompileCommand.java b/enigma-cli/src/main/java/cuchaz/enigma/command/DecompileCommand.java
index baed29a6..b1c54989 100644
--- a/enigma-cli/src/main/java/cuchaz/enigma/command/DecompileCommand.java
+++ b/enigma-cli/src/main/java/cuchaz/enigma/command/DecompileCommand.java
@@ -2,6 +2,7 @@ package cuchaz.enigma.command;
2 2
3import java.lang.reflect.Field; 3import java.lang.reflect.Field;
4import java.nio.file.Path; 4import java.nio.file.Path;
5import java.util.List;
5import java.util.Locale; 6import java.util.Locale;
6 7
7import cuchaz.enigma.EnigmaProject; 8import cuchaz.enigma.EnigmaProject;
@@ -17,7 +18,7 @@ public class DecompileCommand extends Command {
17 18
18 @Override 19 @Override
19 public String getUsage() { 20 public String getUsage() {
20 return "<decompiler> <in jar> <out folder> [<mappings file>]"; 21 return "<decompiler> <in jar> <out folder> [<mappings file>] [<libraries> ...]";
21 } 22 }
22 23
23 @Override 24 @Override
@@ -31,6 +32,7 @@ public class DecompileCommand extends Command {
31 Path fileJarIn = getReadableFile(getArg(args, 1, "in jar", true)).toPath(); 32 Path fileJarIn = getReadableFile(getArg(args, 1, "in jar", true)).toPath();
32 Path fileJarOut = getWritableFolder(getArg(args, 2, "out folder", true)).toPath(); 33 Path fileJarOut = getWritableFolder(getArg(args, 2, "out folder", true)).toPath();
33 Path fileMappings = getReadablePath(getArg(args, 3, "mappings file", false)); 34 Path fileMappings = getReadablePath(getArg(args, 3, "mappings file", false));
35 List<Path> libraries = getReadablePaths(args, 4);
34 36
35 DecompilerService decompilerService; 37 DecompilerService decompilerService;
36 38
@@ -42,7 +44,7 @@ public class DecompileCommand extends Command {
42 return; 44 return;
43 } 45 }
44 46
45 EnigmaProject project = openProject(fileJarIn, fileMappings); 47 EnigmaProject project = openProject(fileJarIn, fileMappings, libraries);
46 48
47 ProgressListener progress = new ConsoleProgressListener(); 49 ProgressListener progress = new ConsoleProgressListener();
48 50
diff --git a/enigma-cli/src/main/java/cuchaz/enigma/command/DeobfuscateCommand.java b/enigma-cli/src/main/java/cuchaz/enigma/command/DeobfuscateCommand.java
index c8e62008..1ea13b50 100644
--- a/enigma-cli/src/main/java/cuchaz/enigma/command/DeobfuscateCommand.java
+++ b/enigma-cli/src/main/java/cuchaz/enigma/command/DeobfuscateCommand.java
@@ -1,6 +1,7 @@
1package cuchaz.enigma.command; 1package cuchaz.enigma.command;
2 2
3import java.nio.file.Path; 3import java.nio.file.Path;
4import java.util.List;
4 5
5import cuchaz.enigma.EnigmaProject; 6import cuchaz.enigma.EnigmaProject;
6import cuchaz.enigma.ProgressListener; 7import cuchaz.enigma.ProgressListener;
@@ -25,8 +26,9 @@ public class DeobfuscateCommand extends Command {
25 Path fileJarIn = getReadablePath(getArg(args, 0, "in jar", true)); 26 Path fileJarIn = getReadablePath(getArg(args, 0, "in jar", true));
26 Path fileJarOut = getWritableFile(getArg(args, 1, "out jar", true)).toPath(); 27 Path fileJarOut = getWritableFile(getArg(args, 1, "out jar", true)).toPath();
27 Path fileMappings = getReadablePath(getArg(args, 2, "mappings file", false)); 28 Path fileMappings = getReadablePath(getArg(args, 2, "mappings file", false));
29 List<Path> libraries = getReadablePaths(args, 3);
28 30
29 EnigmaProject project = openProject(fileJarIn, fileMappings); 31 EnigmaProject project = openProject(fileJarIn, fileMappings, libraries);
30 32
31 ProgressListener progress = new ConsoleProgressListener(); 33 ProgressListener progress = new ConsoleProgressListener();
32 34