import java.io.ByteArrayOutputStream; import java.io.PrintStream; import java.lang.reflect.Method; import java.nio.charset.StandardCharsets; /** Calls the real public CLI; it never duplicates geometry or animation. */ public final class JarRigExportAudit { public static void main(String[] args) throws Exception { String[] modes = {"chase", "walk", "compact", "crawl2", "crawl3", "crawl4", "chase4", "drag", "lore", "stalk", "fold", "turn", "climb", "attack"}; Method nativeMain = Class.forName("ar.com.companeros.horror.client.ParasiteRig") .getMethod("main", String[].class); PrintStream output = System.out; for (String mode : modes) { for (int stage = 0; stage <= 4; stage++) { ByteArrayOutputStream captured = new ByteArrayOutputStream(); try (PrintStream buffer = new PrintStream(captured, true, StandardCharsets.UTF_8)) { System.setOut(buffer); try { nativeMain.invoke(null, (Object) new String[]{mode, Integer.toString(stage), "0.125", "10", "1"}); } finally { System.setOut(output); } } output.println("{\"mode\":\"" + mode + "\",\"stage\":" + stage + ",\"samples\":" + captured.toString(StandardCharsets.UTF_8).trim() + "}"); } } } }