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();
}