From 1b53ec56aef90b38423a2c3c8445df8495ea94c5 Mon Sep 17 00:00:00 2001 From: Devan-Kerman Date: Thu, 16 Jun 2022 22:49:21 -0500 Subject: [PATCH] allow adding single files to input --- .../fabricmc/tinyremapper/TinyRemapper.java | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/src/main/java/net/fabricmc/tinyremapper/TinyRemapper.java b/src/main/java/net/fabricmc/tinyremapper/TinyRemapper.java index a7f0c090..c3a9429f 100644 --- a/src/main/java/net/fabricmc/tinyremapper/TinyRemapper.java +++ b/src/main/java/net/fabricmc/tinyremapper/TinyRemapper.java @@ -379,6 +379,22 @@ public CompletableFuture readClassPathAsync(final Path... inputs) { return ret; } + + public void readClassPathFile(Path file) { + readSingleClass(false, null, file); + } + + public void readClasspathFile(InputTag tag, Path file) { + readSingleClass(false, tag, file); + } + + public void readInputFile(Path file) { + readSingleClass(true, null, file); + } + + public void readInputFile(InputTag tag, Path file) { + readSingleClass(true, tag, file); + } private CompletableFuture> read(Path[] inputs, boolean isInput, InputTag tag) { InputTag[] tags = singleInputTags.get().get(tag); @@ -426,6 +442,30 @@ private CompletableFuture> read(Path[] inputs, boolean isInp assert dirty; }); } + + private void readSingleClass(boolean isInput, InputTag tag, Path file) { + try { + InputTag[] tags = singleInputTags.get().get(tag); + List references = new ArrayList<>(); + List instance = readFile(file, isInput, tags, file.getRoot(), references); + for(FileSystemReference reference : references) { + reference.close(); + } + + if (!dirty) { + dirty = true; + for (MrjState state : mrjStates.values()) { + state.dirty = true; + } + } + + for(ClassInstance inst : instance) { + addClass(inst, readClasses, true); + } + } catch (IOException | URISyntaxException e) { + throw new RuntimeException(e); + } + } private static void addClass(ClassInstance cls, Map out, boolean isVersionAware) { // two different MRJ version will not cause warning if isVersionAware is true