Skip to content

Commit 8afae3e

Browse files
Add GenerateUnpickData task (#27)
1 parent 41e3334 commit 8afae3e

2 files changed

Lines changed: 52 additions & 0 deletions

File tree

build.gradle

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@ repositories {
1515
name = 'MinecraftForge'
1616
url = 'https://maven.minecraftforge.net/'
1717
}
18+
maven {
19+
name = 'FabricMC'
20+
url = 'https://maven.fabricmc.net/'
21+
}
1822
gradlePluginPortal()
1923
mavenCentral()
2024
}
@@ -26,6 +30,7 @@ dependencies {
2630
implementation 'net.minecraftforge:srgutils:0.4.9'
2731
implementation 'org.parchmentmc.feather:io-moshi:1.0.0.3'
2832
implementation 'com.google.guava:guava:31.1-jre'
33+
implementation 'net.fabricmc.unpick:unpick-format-utils:2.3.0'
2934

3035
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.2'
3136
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.2'
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package org.parchmentmc.compass.tasks;
2+
3+
import com.google.common.io.Files;
4+
import daomephsta.unpick.constantmappers.datadriven.parser.v2.UnpickV2Reader;
5+
import daomephsta.unpick.constantmappers.datadriven.parser.v2.UnpickV2Writer;
6+
import org.gradle.api.DefaultTask;
7+
import org.gradle.api.file.DirectoryProperty;
8+
import org.gradle.api.file.RegularFileProperty;
9+
import org.gradle.api.tasks.InputDirectory;
10+
import org.gradle.api.tasks.OutputFile;
11+
import org.gradle.api.tasks.TaskAction;
12+
13+
import java.io.File;
14+
import java.io.FileInputStream;
15+
import java.io.IOException;
16+
import java.nio.charset.StandardCharsets;
17+
import java.util.ArrayList;
18+
import java.util.Comparator;
19+
import java.util.List;
20+
21+
public abstract class GenerateUnpickData extends DefaultTask {
22+
@TaskAction
23+
public void run() throws IOException {
24+
List<File> files = new ArrayList<>(getInputDirectory().getAsFileTree().getFiles());
25+
files.sort(Comparator.comparing(File::getName));
26+
27+
UnpickV2Writer writer = new UnpickV2Writer();
28+
for (File file : files) {
29+
if (!file.getName().endsWith(".unpick")) {
30+
continue;
31+
}
32+
33+
try (UnpickV2Reader reader = new UnpickV2Reader(new FileInputStream(file))) {
34+
reader.accept(writer);
35+
}
36+
}
37+
38+
Files.asCharSink(getOutput().get().getAsFile(), StandardCharsets.UTF_8)
39+
.write(writer.getOutput().replace(System.lineSeparator(), "\n"));
40+
}
41+
42+
@InputDirectory
43+
public abstract DirectoryProperty getInputDirectory();
44+
45+
@OutputFile
46+
public abstract RegularFileProperty getOutput();
47+
}

0 commit comments

Comments
 (0)