From f8c7b8497e9687e15123caca7d4fde54f5bf067a Mon Sep 17 00:00:00 2001 From: Joe Date: Thu, 11 Sep 2025 17:35:30 +0100 Subject: Allow you to specify the libraries in the program args rather than always using the runtime classpath --- enigma/src/main/java/cuchaz/enigma/Enigma.java | 15 ++++++++------- enigma/src/main/java/cuchaz/enigma/EnigmaProject.java | 8 +++++++- 2 files changed, 15 insertions(+), 8 deletions(-) (limited to 'enigma/src/main/java/cuchaz') diff --git a/enigma/src/main/java/cuchaz/enigma/Enigma.java b/enigma/src/main/java/cuchaz/enigma/Enigma.java index 4483ab7..7f1faa9 100644 --- a/enigma/src/main/java/cuchaz/enigma/Enigma.java +++ b/enigma/src/main/java/cuchaz/enigma/Enigma.java @@ -39,6 +39,7 @@ import cuchaz.enigma.api.service.JarIndexerService; import cuchaz.enigma.api.service.ProjectService; import cuchaz.enigma.classprovider.CachingClassProvider; import cuchaz.enigma.classprovider.ClassProvider; +import cuchaz.enigma.classprovider.ClasspathClassProvider; import cuchaz.enigma.classprovider.CombiningClassProvider; import cuchaz.enigma.classprovider.JarClassProvider; import cuchaz.enigma.utils.I18n; @@ -67,24 +68,24 @@ public class Enigma { return new Builder(); } - public EnigmaProject openJar(Path path, ClassProvider libraryClassProvider, ProgressListener progress) throws IOException { - return openJars(List.of(path), libraryClassProvider, progress); + public EnigmaProject openJar(Path path, List libraries, ProgressListener progress) throws IOException { + return openJars(List.of(path), libraries, progress); } - public EnigmaProject openJars(List paths, ClassProvider libraryClassProvider, ProgressListener progress) throws IOException { - return openJars(paths, libraryClassProvider, progress, true); + public EnigmaProject openJars(List paths, List libraries, ProgressListener progress) throws IOException { + return openJars(paths, libraries, progress, true); } - public EnigmaProject openJars(List paths, ClassProvider libraryClassProvider, ProgressListener progress, boolean callServices) throws IOException { + public EnigmaProject openJars(List paths, List libraries, ProgressListener progress, boolean callServices) throws IOException { ClassProvider jarClassProvider = getJarClassProvider(paths); - ClassProvider classProvider = new CachingClassProvider(new CombiningClassProvider(jarClassProvider, libraryClassProvider)); + ClassProvider classProvider = new CachingClassProvider(new CombiningClassProvider(jarClassProvider, getJarClassProvider(libraries), new ClasspathClassProvider())); Set scope = Set.copyOf(jarClassProvider.getClassNames()); JarIndex index = JarIndex.empty(); ClassProvider classProviderWithFrames = index.indexJar(scope, classProvider, progress); services.get(JarIndexerService.TYPE).forEach(indexer -> indexer.acceptJar(scope, classProviderWithFrames, index)); - EnigmaProject project = new EnigmaProject(this, paths, classProvider, scope, index, Utils.zipSha1(paths.toArray(new Path[0]))); + EnigmaProject project = new EnigmaProject(this, paths, libraries, classProvider, scope, index, Utils.zipSha1(paths.toArray(new Path[0]))); if (callServices) { for (ProjectService projectService : services.get(ProjectService.TYPE)) { diff --git a/enigma/src/main/java/cuchaz/enigma/EnigmaProject.java b/enigma/src/main/java/cuchaz/enigma/EnigmaProject.java index 86a7037..ab0ce30 100644 --- a/enigma/src/main/java/cuchaz/enigma/EnigmaProject.java +++ b/enigma/src/main/java/cuchaz/enigma/EnigmaProject.java @@ -59,6 +59,7 @@ public class EnigmaProject implements ProjectView { private final Enigma enigma; private final List jarPaths; + private final List libraryPaths; private final ClassProvider classProvider; private final JarIndex jarIndex; private final byte[] jarChecksum; @@ -71,13 +72,14 @@ public class EnigmaProject implements ProjectView { private final List dataInvalidationListeners = new ArrayList<>(); - public EnigmaProject(Enigma enigma, List jarPaths, ClassProvider classProvider, Set projectClasses, JarIndex jarIndex, byte[] jarChecksum) { + public EnigmaProject(Enigma enigma, List jarPaths, List libraryPaths, ClassProvider classProvider, Set projectClasses, JarIndex jarIndex, byte[] jarChecksum) { if (jarChecksum.length != 20) { throw new IllegalArgumentException(); } this.enigma = enigma; this.jarPaths = List.copyOf(jarPaths); + this.libraryPaths = List.copyOf(libraryPaths); this.classProvider = classProvider; this.jarIndex = jarIndex; this.jarChecksum = jarChecksum; @@ -109,6 +111,10 @@ public class EnigmaProject implements ProjectView { return jarPaths; } + public List getLibraryPaths() { + return libraryPaths; + } + public ClassProvider getClassProvider() { return classProvider; } -- cgit v1.2.3