1 package spoon; 2 3 import spoon.processing.FileGenerator; 4 import spoon.reflect.Factory; 5 import spoon.support.ByteCodeOutputProcessor; 6 import spoon.support.JavaOutputProcessor; 7 import spoon.support.gui.SpoonModelTree; 8 9 import com.martiansoftware.jsap.FlaggedOption; 10 import com.martiansoftware.jsap.JSAP; 11 import com.martiansoftware.jsap.JSAPException; 12 import com.martiansoftware.jsap.Switch; 13 import com.martiansoftware.jsap.stringparsers.FileStringParser; 14 15 29 public class Launcher extends AbstractLauncher { 30 34 public static void main(String [] args) throws JSAPException { 35 new Launcher(args).run(); 36 } 37 38 41 protected Launcher(String [] args) throws JSAPException { 42 super(args); 43 } 44 45 48 @Override  49 protected JSAP defineArgs() throws JSAPException { 50 JSAP jsap = super.defineArgs(); 51 52 Switch sw1 = new Switch("nooutput"); 54 sw1.setLongFlag("no"); 55 sw1.setHelp("disable output printing"); 56 sw1.setDefault("false"); 57 jsap.registerParameter(sw1); 58 59 sw1 = new Switch("compile"); 61 sw1.setShortFlag('c'); 62 sw1.setLongFlag("compile"); 63 sw1.setHelp("compile generated sources"); 64 jsap.registerParameter(sw1); 65 66 FlaggedOption opt2 = new FlaggedOption("build"); 68 opt2.setShortFlag('b'); 69 opt2.setLongFlag("build"); 70 opt2.setDefault("spoonBuild"); 71 opt2.setHelp("specify where to place generated class files"); 72 opt2.setStringParser(FileStringParser.getParser()); 73 opt2.setRequired(false); 74 jsap.registerParameter(opt2); 75 76 sw1 = new Switch("gui"); 78 sw1.setShortFlag('g'); 79 sw1.setLongFlag("gui"); 80 sw1.setHelp("show spoon model after processing"); 81 jsap.registerParameter(sw1); 82 83 return jsap; 84 } 85 86 90 @Override  91 protected Factory createFactory() { 92 Factory f = super.createFactory(); 93 94 if (getArguments().getBoolean("compile")) { 95 FileGenerator<?> printer = f.getEnvironment() 96 .getDefaultFileGenerator(); 97 ByteCodeOutputProcessor p = new ByteCodeOutputProcessor( 98 (JavaOutputProcessor) printer, getArguments().getFile( 99 "build")); 100 f.getEnvironment().setDefaultFileGenerator(p); 101 } 102 103 return f; 104 } 105 106 109 @Override  110 protected void print() { 111 if (!getArguments().getBoolean("nooutput")) 112 super.print(); 113 } 114 115 118 @Override  119 public void run() { 120 super.run(); 121 122 if (getArguments().getBoolean("gui")) 124 new SpoonModelTree(getFactory()); 125 126 } 127 128 } 129 | Popular Tags |