From 16b203164dcf4cf9ae3ff79b61634dc5d80fbc7e Mon Sep 17 00:00:00 2001 From: Linnea Gräf <nea@nea.moe> Date: Wed, 6 Mar 2024 18:01:26 +0100 Subject: Add constructor status --- .../plugin/EnrichSeargeWithConstructorsTask.java | 43 ++++++++++++++++++++++ .../nea/zwirn/plugin/FixFieldDescriptorsTask.java | 3 +- .../moe/nea/zwirn/plugin/ZwirnPluginUtils.java | 12 +++--- 3 files changed, 52 insertions(+), 6 deletions(-) create mode 100644 plugin/src/main/java/moe/nea/zwirn/plugin/EnrichSeargeWithConstructorsTask.java (limited to 'plugin/src') diff --git a/plugin/src/main/java/moe/nea/zwirn/plugin/EnrichSeargeWithConstructorsTask.java b/plugin/src/main/java/moe/nea/zwirn/plugin/EnrichSeargeWithConstructorsTask.java new file mode 100644 index 0000000..e194070 --- /dev/null +++ b/plugin/src/main/java/moe/nea/zwirn/plugin/EnrichSeargeWithConstructorsTask.java @@ -0,0 +1,43 @@ +package moe.nea.zwirn.plugin; + +import moe.nea.zwirn.Zwirn; +import org.gradle.api.DefaultTask; +import org.gradle.api.file.FileCollection; +import org.gradle.api.file.RegularFileProperty; +import org.gradle.api.tasks.InputFile; +import org.gradle.api.tasks.InputFiles; +import org.gradle.api.tasks.OutputFile; +import org.gradle.api.tasks.TaskAction; + +import java.io.IOException; +import java.nio.file.FileSystems; + +public abstract class EnrichSeargeWithConstructorsTask extends DefaultTask { + @InputFiles + FileCollection srgArchive; + + public void setSrgArchive(FileCollection srgArchive) { + this.srgArchive = srgArchive; + } + + public FileCollection getSrgArchive() { + return srgArchive; + } + + @InputFile + public abstract RegularFileProperty getSrgTinyFile(); + + @OutputFile + public abstract RegularFileProperty getEnrichedTinyFile(); + + @TaskAction + public void enrich() throws IOException { + var srgFs = FileSystems.newFileSystem(ZwirnPluginUtils.getPath(getSrgArchive())); + var enriched = Zwirn.enrichSeargeWithConstructors( + ZwirnPluginUtils.readTiny(getSrgTinyFile()), + srgFs.getPath("/") + ); + srgFs.close(); + ZwirnPluginUtils.writeTiny(enriched, getEnrichedTinyFile()); + } +} diff --git a/plugin/src/main/java/moe/nea/zwirn/plugin/FixFieldDescriptorsTask.java b/plugin/src/main/java/moe/nea/zwirn/plugin/FixFieldDescriptorsTask.java index fa8576d..9b4d28c 100644 --- a/plugin/src/main/java/moe/nea/zwirn/plugin/FixFieldDescriptorsTask.java +++ b/plugin/src/main/java/moe/nea/zwirn/plugin/FixFieldDescriptorsTask.java @@ -6,6 +6,7 @@ import net.fabricmc.stitch.commands.tinyv2.TinyV2Writer; import org.gradle.api.DefaultTask; import org.gradle.api.file.RegularFileProperty; import org.gradle.api.tasks.InputFile; +import org.gradle.api.tasks.OutputFile; import org.gradle.api.tasks.TaskAction; import java.io.IOException; @@ -19,7 +20,7 @@ public abstract class FixFieldDescriptorsTask extends DefaultTask { @InputFile public abstract RegularFileProperty getInputTinyFile(); - @InputFile + @OutputFile public abstract RegularFileProperty getOutputTinyFile(); @TaskAction diff --git a/plugin/src/main/java/moe/nea/zwirn/plugin/ZwirnPluginUtils.java b/plugin/src/main/java/moe/nea/zwirn/plugin/ZwirnPluginUtils.java index fd1a5ee..08cb42b 100644 --- a/plugin/src/main/java/moe/nea/zwirn/plugin/ZwirnPluginUtils.java +++ b/plugin/src/main/java/moe/nea/zwirn/plugin/ZwirnPluginUtils.java @@ -7,8 +7,10 @@ import net.fabricmc.stitch.commands.tinyv2.TinyFile; import net.fabricmc.stitch.commands.tinyv2.TinyV2Reader; import net.fabricmc.stitch.commands.tinyv2.TinyV2Writer; import org.gradle.api.file.FileCollection; -import org.gradle.api.file.FileSystemLocationProperty; +import org.gradle.api.file.FileSystemLocation; +import org.gradle.api.file.RegularFile; import org.gradle.api.file.RegularFileProperty; +import org.gradle.api.provider.Property; import java.io.IOException; import java.io.InputStream; @@ -28,7 +30,7 @@ class ZwirnPluginUtils { } } - public static Path getPath(FileSystemLocationProperty<?> property) { + public static Path getPath(Property<? extends FileSystemLocation> property) { return property.get().getAsFile().toPath(); } @@ -53,7 +55,7 @@ class ZwirnPluginUtils { return collection.getSingleFile().toPath(); } - public static TinyFile readTiny(RegularFileProperty tinyFile) { + public static TinyFile readTiny(Property<RegularFile> tinyFile) { try { return TinyV2Reader.read(getPath(tinyFile)); } catch (IOException e) { @@ -61,8 +63,8 @@ class ZwirnPluginUtils { } } - public static void writeTiny(TinyFile tiny, RegularFileProperty tinyFile) { - try{ + public static void writeTiny(TinyFile tiny, Property<RegularFile> tinyFile) { + try { TinyV2Writer.write(tiny, getPath(tinyFile)); } catch (IOException e) { throw new RuntimeException(e); -- cgit