diff options
Diffstat (limited to 'plugin/src/main')
3 files changed, 52 insertions, 6 deletions
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); |