rt/vm/src/main/java/org/apidesign/vm4brwsr/Main.java
branchclosure
changeset 881 6a3a063b6eb1
parent 772 d382dacfd73f
child 1020 a6bacea2518f
child 1058 e61f24684a69
     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  }