1.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/Main.java Tue Feb 26 16:54:16 2013 +0100
1.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/Main.java Mon Mar 25 13:28:33 2013 +0100
1.3 @@ -31,20 +31,62 @@
1.4 private Main() {}
1.5
1.6 public static void main(String... args) throws IOException {
1.7 + final String obfuscate = "--obfuscatelevel";
1.8 +
1.9 if (args.length < 2) {
1.10 System.err.println("Bck2Brwsr Translator from Java(tm) to JavaScript, (c) Jaroslav Tulach 2012");
1.11 - System.err.println("Usage: java -cp ... -jar ... <file_to_generate_js_code_to> java/lang/Class org/your/App ...");
1.12 - return;
1.13 + System.err.println("Usage: java -cp ... -jar ... [");
1.14 + System.err.print(obfuscate);
1.15 + System.err.print(" [");
1.16 + boolean first = true;
1.17 + for (ObfuscationLevel l : ObfuscationLevel.values()) {
1.18 + if (!first) {
1.19 + System.err.print('|');
1.20 + }
1.21 + System.err.print(l.name());
1.22 + first = false;
1.23 + }
1.24 +
1.25 + System.err.println("] <file_to_generate_js_code_to> java/lang/Class org/your/App ...");
1.26 + System.exit(9);
1.27 }
1.28
1.29 - Writer w = new BufferedWriter(new FileWriter(args[0]));
1.30 - StringArray classes = StringArray.asList(args);
1.31 - classes.delete(0);
1.32 - try {
1.33 - Bck2Brwsr.generate(w, Main.class.getClassLoader(),
1.34 - classes.toArray());
1.35 - } finally {
1.36 - w.close();
1.37 + ObfuscationLevel obfLevel = ObfuscationLevel.NONE;
1.38 + StringArray classes = new StringArray();
1.39 + String generateTo = null;
1.40 + for (int i = 0; i < args.length; i++) {
1.41 + if (obfuscate.equals(args[i])) { // NOI18N
1.42 + i++;
1.43 + try {
1.44 + obfLevel = ObfuscationLevel.valueOf(args[i]);
1.45 + } catch (Exception e) {
1.46 + System.err.print(obfuscate);
1.47 + System.err.print(" parameter needs to be followed by one of ");
1.48 + boolean first = true;
1.49 + for (ObfuscationLevel l : ObfuscationLevel.values()) {
1.50 + if (!first) {
1.51 + System.err.print(", ");
1.52 + }
1.53 + System.err.print(l.name());
1.54 + first = false;
1.55 + }
1.56 + System.err.println();
1.57 + System.exit(1);
1.58 + }
1.59 + continue;
1.60 + }
1.61 + if (generateTo == null) {
1.62 + generateTo = args[i];
1.63 + } else {
1.64 + classes = classes.addAndNew(args[i]);
1.65 + }
1.66 + }
1.67 + try (Writer w = new BufferedWriter(new FileWriter(generateTo))) {
1.68 + Bck2Brwsr.newCompiler().
1.69 + obfuscation(obfLevel).
1.70 + addRootClasses(classes.toArray()).
1.71 + resources(Main.class.getClassLoader()).
1.72 + generate(w);
1.73 }
1.74 }
1.75 }