diff options
Diffstat (limited to 'src/main/java/org/glavo/javah/Main.java')
-rw-r--r-- | src/main/java/org/glavo/javah/Main.java | 71 |
1 files changed, 70 insertions, 1 deletions
diff --git a/src/main/java/org/glavo/javah/Main.java b/src/main/java/org/glavo/javah/Main.java index 26facc6..60bc0b1 100644 --- a/src/main/java/org/glavo/javah/Main.java +++ b/src/main/java/org/glavo/javah/Main.java @@ -1,6 +1,75 @@ package org.glavo.javah; +import java.io.InputStream; +import java.nio.file.Paths; +import java.util.jar.Manifest; + public class Main { - public static void main(String[] args) { + private static final String HELP_MESSAGE = + "usage:\n" + + " gjavah [options] <classes>\n" + + "where [options] include:\n" + + " -o <file> Output file (only one of -d or -o may be used)\n" + + " -d <dir> Output directory\n" + + " --module-path <path> Path from which to search modules\n" + + " --class-path <path> | " + + "-classpath <path> | -cp <path>\n" + + " " + + " Path from which to search classes\n" + + " --version Print version information\n" + + " -h --help -? Print this message"; + + public static void main(String[] args) throws Exception { + if (args.length == 0) { + System.err.println(HELP_MESSAGE); + System.exit(-1); + } + JavahTask task = new JavahTask(); + task.addRuntimeClasspath(); + loop: + for (int i = 0; i < args.length; i++) { + String arg = args[i]; + switch (arg) { + case "--version": + case "-version": + try (InputStream in = Main.class.getResourceAsStream("/META-INF/MANIFEST.MF")) { + Manifest manifest = new Manifest(in); + System.out.println("gjavah version: " + manifest.getMainAttributes().getValue("GJavah-Version")); + } + return; + case "-h": + case "--help": + case "-help": + case "-?": + System.out.println(HELP_MESSAGE); + return; + case "-o": + task.setOutputToSignalFile(true); + task.setOutputPath(Paths.get(args[++i])); + break; + case "-d": + task.setOutputToSignalFile(false); + task.setOutputPath(Paths.get(args[++i])); + break; + case "--module-path": + task.addModulePaths(args[++i]); + break; + case "--class-path": + case "--classpath": + case "-classpath": + case "-cp": + task.addClasspaths(args[++i]); + break; + default: + for (int j = i; j < args.length; j++) { + task.addClass(args[i]); + } + break loop; + } + if (task.getClassList().isEmpty()) { + System.err.println("error: no classes specified"); + } + task.run(); + } } } |