public static void selectAndPerformCommand()

in src/main/java/com/google/devtools/build/remote/client/RemoteClient.java [551:641]


  public static void selectAndPerformCommand(String[] args) throws Exception {
    AuthAndTLSOptions authAndTlsOptions = new AuthAndTLSOptions();
    RemoteOptions remoteOptions = new RemoteOptions();
    RemoteClientOptions remoteClientOptions = new RemoteClientOptions();
    LsCommand lsCommand = new LsCommand();
    LsOutDirCommand lsOutDirCommand = new LsOutDirCommand();
    GetDirCommand getDirCommand = new GetDirCommand();
    GetOutDirCommand getOutDirCommand = new GetOutDirCommand();
    CatCommand catCommand = new CatCommand();
    FailedActionsCommand failedActionsCommand = new FailedActionsCommand();
    ShowActionCommand showActionCommand = new ShowActionCommand();
    ShowActionResultCommand showActionResultCommand = new ShowActionResultCommand();
    PrintLogCommand printLogCommand = new PrintLogCommand();
    RunCommand runCommand = new RunCommand();

    JCommander optionsParser =
        JCommander.newBuilder()
            .programName("remote_client")
            .addObject(authAndTlsOptions)
            .addObject(remoteOptions)
            .addObject(remoteClientOptions)
            .addCommand("ls", lsCommand)
            .addCommand("lsoutdir", lsOutDirCommand)
            .addCommand("getdir", getDirCommand)
            .addCommand("getoutdir", getOutDirCommand)
            .addCommand("cat", catCommand)
            .addCommand("show_action", showActionCommand, "sa")
            .addCommand("show_action_result", showActionResultCommand, "sar")
            .addCommand("printlog", printLogCommand)
            .addCommand("run", runCommand)
            .addCommand("failed_actions", failedActionsCommand)
            .build();

    try {
      optionsParser.parse(args);
    } catch (ParameterException e) {
      System.err.println("Unable to parse options: " + e.getLocalizedMessage());
      optionsParser.usage();
      System.exit(1);
    }

    if (remoteClientOptions.help) {
      optionsParser.usage();
      return;
    }

    if (optionsParser.getParsedCommand() == null) {
      System.err.println("No command specified.");
      optionsParser.usage();
      System.exit(1);
    }

    switch (optionsParser.getParsedCommand()) {
      case "printlog":
        doPrintLog(remoteClientOptions.grpcLog, printLogCommand);
        break;
      case "ls":
        doLs(lsCommand, makeClientWithOptions(remoteOptions, authAndTlsOptions));
        break;
      case "lsoutdir":
        doLsOutDir(lsOutDirCommand, makeClientWithOptions(remoteOptions, authAndTlsOptions));
        break;
      case "getdir":
        doGetDir(getDirCommand, makeClientWithOptions(remoteOptions, authAndTlsOptions));
        break;
      case "getoutdir":
        doGetOutDir(getOutDirCommand, makeClientWithOptions(remoteOptions, authAndTlsOptions));
        break;
      case "cat":
        doCat(catCommand, makeClientWithOptions(remoteOptions, authAndTlsOptions));
        break;
      case "show_action":
        doShowAction(showActionCommand, makeClientWithOptions(remoteOptions, authAndTlsOptions));
        break;
      case "show_action_result":
        doShowActionResult(
            showActionResultCommand, makeClientWithOptions(remoteOptions, authAndTlsOptions));
        break;
      case "run":
        doRun(
            remoteClientOptions.grpcLog,
            runCommand,
            makeClientWithOptions(remoteOptions, authAndTlsOptions));
        break;
      case "failed_actions":
        doFailedActions(remoteClientOptions.grpcLog, failedActionsCommand);
        break;
      default:
        throw new IllegalArgumentException("Unknown command.");
    }
  }