예제 #1
0
  public static void main(String[] args) {
    CliBuilder<Runnable> builder =
        Cli.<Runnable>builder("denominator")
            .withDescription("dns manager")
            .withDefaultCommand(Help.class)
            .withCommand(Help.class)
            .withCommand(ListProviders.class);

    builder
        .withGroup("zone")
        .withDescription("manage zones")
        .withDefaultCommand(ZoneList.class)
        .withCommand(ZoneList.class);

    builder
        .withGroup("record")
        .withDescription("manage resource record sets in a zone")
        .withDefaultCommand(ResourceRecordSetList.class)
        .withCommand(ResourceRecordSetList.class);

    Cli<Runnable> denominatorParser = builder.build();

    denominatorParser.parse(args).run();
  }
예제 #2
0
파일: Main.java 프로젝트: AsherBond/druid
  @SuppressWarnings("unchecked")
  public static void main(String[] args) {
    final Cli.CliBuilder<Runnable> builder = Cli.builder("druid");

    builder
        .withDescription("Druid command-line runner.")
        .withDefaultCommand(Help.class)
        .withCommands(Help.class, Version.class);

    builder
        .withGroup("server")
        .withDescription("Run one of the Druid server types.")
        .withDefaultCommand(Help.class)
        .withCommands(
            CliCoordinator.class,
            CliHistorical.class,
            CliBroker.class,
            CliRealtime.class,
            CliOverlord.class,
            CliMiddleManager.class,
            CliBridge.class,
            CliRouter.class);

    builder
        .withGroup("example")
        .withDescription("Run an example")
        .withDefaultCommand(Help.class)
        .withCommands(CliRealtimeExample.class);

    builder
        .withGroup("tools")
        .withDescription("Various tools for working with Druid")
        .withDefaultCommand(Help.class)
        .withCommands(ConvertProperties.class, DruidJsonValidator.class, PullDependencies.class);

    builder
        .withGroup("index")
        .withDescription("Run indexing for druid")
        .withDefaultCommand(Help.class)
        .withCommands(CliHadoopIndexer.class);

    builder
        .withGroup("internal")
        .withDescription(
            "Processes that Druid runs \"internally\", you should rarely use these directly")
        .withDefaultCommand(Help.class)
        .withCommands(CliPeon.class, CliInternalHadoopIndexer.class);

    final Injector injector = GuiceInjectors.makeStartupInjector();
    final ExtensionsConfig config = injector.getInstance(ExtensionsConfig.class);
    final Collection<CliCommandCreator> extensionCommands =
        Initialization.getFromExtensions(config, CliCommandCreator.class);

    for (CliCommandCreator creator : extensionCommands) {
      creator.addCommands(builder);
    }

    final Cli<Runnable> cli = builder.build();
    try {
      final Runnable command = cli.parse(args);
      if (!(command instanceof Help)) { // Hack to work around Help not liking being injected
        injector.injectMembers(command);
      }
      command.run();
    } catch (ParseException e) {
      System.out.println("ERROR!!!!");
      System.out.println(e.getMessage());
      System.out.println("===");
      cli.parse(new String[] {"help"}).run();
    }
  }