package org.ophion.snitch;
import com.google.inject.Guice;
import com.google.inject.Injector;
import org.apache.commons.cli.*;
import org.ophion.snitch.handlers.SNSEventHandler;
import org.ophion.snitch.util.Log;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* Created by IntelliJ IDEA.
* User: raferrei
* Date: Nov 6, 2011
* Time: 9:12:24 PM
* To change this template use File | Settings | File Templates.
*/
public class Boot {
private static final Log LOG = new Log();
public static void main(String[] args) throws RuntimeException, ParseException, InterruptedException {
// CLI
Options options = new Options();
options.addOption("c", "config", true, "config file");
options.addOption("v", "verbose", false, "spews more to the logs");
options.addOption("h", "help", false, "shows help");
CommandLineParser parser = new PosixParser();
CommandLine c = parser.parse(options, args);
if (args.length < 2) {
HelpFormatter hp = new HelpFormatter();
hp.printHelp("java -jar snitch.jar [options] --config FILE", "\n\n Options:", options, "\n");
System.exit(1);
}
if (!c.hasOption("c")) {
System.out.println("You must pass a config file!");
System.exit(1);
}
LOG.info("using config file: %s", c.getOptionValue("c"));
if (c.hasOption("v")) {
Logger logger = Logger.getLogger("org.ophion");
logger.setLevel(Level.FINE);
LOG.fine("running in verbose mode");
}
final Injector injector = Guice.createInjector(new SnitchModule(c.getOptionValue("c")));
EventManager em = injector.getInstance(EventManager.class);
// wiring handlers
em.onInstanceEvent.appendHandler( injector.getInstance(SNSEventHandler.class));
em.start();
}
}