feat(content): add twelve-form Pokemon fan catalog
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
package dev.projectcapture.contenttools;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.PrintStream;
|
||||
import java.nio.file.Path;
|
||||
|
||||
public final class ContentTool {
|
||||
private ContentTool() {}
|
||||
|
||||
public static void main(String[] args) {
|
||||
int exitCode = run(args, System.out, System.err);
|
||||
if (exitCode != 0) {
|
||||
System.exit(exitCode);
|
||||
}
|
||||
}
|
||||
|
||||
static int run(String[] args, PrintStream out, PrintStream err) {
|
||||
if (args.length != 2) {
|
||||
printUsage(err);
|
||||
return 64;
|
||||
}
|
||||
|
||||
Path contentRoot = Path.of(args[1]).toAbsolutePath().normalize();
|
||||
return switch (args[0]) {
|
||||
case "validate" -> validate(contentRoot, out, err);
|
||||
case "digest" -> digest(contentRoot, out, err);
|
||||
default -> {
|
||||
err.println("Unknown command: " + args[0]);
|
||||
printUsage(err);
|
||||
yield 64;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private static int validate(Path contentRoot, PrintStream out, PrintStream err) {
|
||||
ValidationReport report = new ContentValidator().validate(contentRoot);
|
||||
if (!report.isValid()) {
|
||||
err.println("Content validation failed with " + report.issues().size() + " issue(s):");
|
||||
report.issues().forEach(issue -> err.println("- " + issue));
|
||||
return 2;
|
||||
}
|
||||
out.println("Content validation passed: " + contentRoot);
|
||||
return 0;
|
||||
}
|
||||
|
||||
private static int digest(Path contentRoot, PrintStream out, PrintStream err) {
|
||||
ValidationReport report = new ContentValidator().validate(contentRoot);
|
||||
if (!report.isValid()) {
|
||||
err.println("Digest refused because content validation failed:");
|
||||
report.issues().forEach(issue -> err.println("- " + issue));
|
||||
return 2;
|
||||
}
|
||||
try {
|
||||
out.println(ContentBundle.load(contentRoot).digest());
|
||||
return 0;
|
||||
} catch (IOException | RuntimeException exception) {
|
||||
err.println("Could not calculate digest: " + exception.getMessage());
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
|
||||
private static void printUsage(PrintStream stream) {
|
||||
stream.println("Usage:");
|
||||
stream.println(" content-tools validate <content-root>");
|
||||
stream.println(" content-tools digest <content-root>");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user