package com.github.dreamhead.moco.bootstrap;
import com.github.dreamhead.moco.bootstrap.arg.StartArgs;
import com.github.dreamhead.moco.bootstrap.tasks.HttpTask;
import com.github.dreamhead.moco.bootstrap.tasks.HttpsTask;
import com.github.dreamhead.moco.bootstrap.tasks.ShutdownTask;
import com.github.dreamhead.moco.bootstrap.tasks.SocketTask;
import com.github.dreamhead.moco.bootstrap.tasks.VersionTask;
import com.google.common.collect.ImmutableMap;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Bootstrap implements BootstrapTask {
private static Logger logger = LoggerFactory.getLogger(Bootstrap.class);
private static final String DEFAULT_SHUTDOWN_KEY = "_SHUTDOWN_MOCO_KEY";
private final ImmutableMap<String, BootstrapTask> tasks = ImmutableMap.<String, BootstrapTask>builder()
.put("start", new HttpTask(DEFAULT_SHUTDOWN_KEY))
.put("shutdown", new ShutdownTask(DEFAULT_SHUTDOWN_KEY))
.put("http", new HttpTask(DEFAULT_SHUTDOWN_KEY))
.put("https", new HttpsTask(DEFAULT_SHUTDOWN_KEY))
.put("socket", new SocketTask(DEFAULT_SHUTDOWN_KEY))
.put("version", new VersionTask())
.build();
@Override
public void run(final String[] args) {
try {
if (args.length < 1) {
throw new ParseArgException("task name needs to be specified");
}
BootstrapTask task = tasks.get(args[0]);
if (task == null) {
throw new ParseArgException("unknown task");
}
task.run(args);
} catch (ParseArgException e) {
help();
} catch (Exception e) {
logger.error(e.getMessage());
}
}
private void help() {
System.out.println(StartArgs.help());
}
}