# HG changeset patch # User Jaroslav Tulach # Date 1364214513 -3600 # Node ID 6a3a063b6eb16e06fc6c8dceb188364f9b543eca # Parent 32eb44c74e1e18709101f5ff9cec98a5fb431043 One can specify --obfuscationlevel when invoking the bck2brwsr compiler from command line. Forking external Java when calling into the compiler to prevent "out of perm gem" errors. diff -r 32eb44c74e1e -r 6a3a063b6eb1 rt/vm/pom.xml --- a/rt/vm/pom.xml Mon Mar 25 12:47:25 2013 +0100 +++ b/rt/vm/pom.xml Mon Mar 25 13:28:33 2013 +0100 @@ -84,14 +84,19 @@ generate-js process-classes - org.apidesign.vm4brwsr.Main + java + -cp + + org.apidesign.vm4brwsr.Main + --obfuscatelevel + MINIMAL ${project.build.directory}/bck2brwsr.js org/apidesign/vm4brwsr/Bck2Brwsr - java + exec diff -r 32eb44c74e1e -r 6a3a063b6eb1 rt/vm/src/main/java/org/apidesign/vm4brwsr/Main.java --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/Main.java Mon Mar 25 12:47:25 2013 +0100 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/Main.java Mon Mar 25 13:28:33 2013 +0100 @@ -31,20 +31,62 @@ private Main() {} public static void main(String... args) throws IOException { + final String obfuscate = "--obfuscatelevel"; + if (args.length < 2) { System.err.println("Bck2Brwsr Translator from Java(tm) to JavaScript, (c) Jaroslav Tulach 2012"); - System.err.println("Usage: java -cp ... -jar ... java/lang/Class org/your/App ..."); - return; + System.err.println("Usage: java -cp ... -jar ... ["); + System.err.print(obfuscate); + System.err.print(" ["); + boolean first = true; + for (ObfuscationLevel l : ObfuscationLevel.values()) { + if (!first) { + System.err.print('|'); + } + System.err.print(l.name()); + first = false; + } + + System.err.println("] java/lang/Class org/your/App ..."); + System.exit(9); } - Writer w = new BufferedWriter(new FileWriter(args[0])); - StringArray classes = StringArray.asList(args); - classes.delete(0); - try { - Bck2Brwsr.generate(w, Main.class.getClassLoader(), - classes.toArray()); - } finally { - w.close(); + ObfuscationLevel obfLevel = ObfuscationLevel.NONE; + StringArray classes = new StringArray(); + String generateTo = null; + for (int i = 0; i < args.length; i++) { + if (obfuscate.equals(args[i])) { // NOI18N + i++; + try { + obfLevel = ObfuscationLevel.valueOf(args[i]); + } catch (Exception e) { + System.err.print(obfuscate); + System.err.print(" parameter needs to be followed by one of "); + boolean first = true; + for (ObfuscationLevel l : ObfuscationLevel.values()) { + if (!first) { + System.err.print(", "); + } + System.err.print(l.name()); + first = false; + } + System.err.println(); + System.exit(1); + } + continue; + } + if (generateTo == null) { + generateTo = args[i]; + } else { + classes = classes.addAndNew(args[i]); + } + } + try (Writer w = new BufferedWriter(new FileWriter(generateTo))) { + Bck2Brwsr.newCompiler(). + obfuscation(obfLevel). + addRootClasses(classes.toArray()). + resources(Main.class.getClassLoader()). + generate(w); } } }