package org.tessell.generators;
import java.io.File;
import java.util.Map;
import org.tessell.generators.resources.ResourcesGenerator;
import org.tessell.generators.views.ViewGenerator;
import com.google.gwt.junit.GWTMockUtilities;
/**
* Front-end for resources and views generators.
*
* Both run quickly enough now that we can fire them off together.
*/
public class Generator {
/** Args: {@code --inputDirectory src/main/java --viewsPackage com.app.views --resourcesPackage com.app.resources --outputDirectory target/gen}. */
public static void main(final String[] args) throws Exception {
// We use reflection to get at annotations of our widget subclasses,
// but that wanders into UIObject, which has a static clinit call
// to UIObject. This makes it return null instead of blowing up.
GWTMockUtilities.disarm();
long start = System.currentTimeMillis();
final Map<String, String> settings = GenUtils.parseArgs(args);
final File input = new File(settings.get("inputDirectory"));
final File output = new File(settings.get("outputDirectory"));
final Cleanup cleanup = new Cleanup(output);
final String viewsPackage = settings.get("viewsPackageName");
if (viewsPackage != null) {
cleanup.watchPackage(viewsPackage);
new ViewGenerator(input, viewsPackage, output, cleanup).generate();
}
final String resourcesPackage = settings.get("resourcesPackageName");
if (resourcesPackage != null) {
cleanup.watchPackage(resourcesPackage);
new ResourcesGenerator(input, cleanup, resourcesPackage, output).run();
}
cleanup.deleteLeftOvers();
long end = System.currentTimeMillis();
System.out.println("Done " + (end - start) + "ms");
}
}