public String runCommand()

in appengine-plugins-core/src/main/java/com/google/cloud/tools/appengine/operations/Gcloud.java [140:173]


  public String runCommand(List<String> args)
      throws CloudSdkNotFoundException, IOException, ProcessHandlerException {
    sdk.validateCloudSdkLocation();

    StringBuilderProcessOutputLineListener stdOutListener =
        StringBuilderProcessOutputLineListener.newListener();
    StringBuilderProcessOutputLineListener stdErrListener =
        StringBuilderProcessOutputLineListener.newListenerWithNewlines();
    ExitCodeRecorderProcessExitListener exitListener = new ExitCodeRecorderProcessExitListener();

    // build and run the command
    List<String> command =
        new ImmutableList.Builder<String>()
            .add(sdk.getGCloudPath().toAbsolutePath().toString())
            .addAll(args)
            .build();

    Process process = new ProcessBuilder(command).start();
    LegacyProcessHandler.builder()
        .addStdOutLineListener(stdOutListener)
        .addStdErrLineListener(stdErrListener)
        .setExitListener(exitListener)
        .build()
        .handleProcess(process);

    if (exitListener.getMostRecentExitCode() != null
        && !exitListener.getMostRecentExitCode().equals(0)) {
      Logger.getLogger(Gcloud.class.getName()).severe(stdErrListener.toString());
      throw new ProcessHandlerException(
          "Process exited unsuccessfully with code " + exitListener.getMostRecentExitCode());
    }

    return stdOutListener.toString();
  }