/** * */ package fr.cedrik.email; import java.util.ServiceLoader; /** * @author Cédrik LIME */ public class MainRunner { public static interface Main { public void _main(String[] args) throws Exception; } private MainRunner() { assert false; } /** * @param args */ public static void main(String[] args) throws Exception { if (args.length == 0) { help(); return; } String requestedCommand = args[0]; String[] params = new String[args.length - 1]; System.arraycopy(args, 1, params, 0, params.length); boolean hasRun = false; for (MainRunner.Main main : ServiceLoader.load(Main.class)) { if (main.getClass().getSimpleName().equalsIgnoreCase(requestedCommand)) { hasRun = true; main._main(params); break; } } if (! hasRun) { help(); return; } } public static void help() { System.out.println("Usage: " + MainRunner.class.getSimpleName() + " <command>"); System.out.println("where <command> is one of:"); for (MainRunner.Main main : ServiceLoader.load(Main.class)) { System.out.println('\t' + main.getClass().getSimpleName()); } System.exit(-1); } }