in appengine-plugins-core/src/main/java/com/google/cloud/tools/managedcloudsdk/command/CommandCaller.java [44:88]
public String call(
List<String> command,
@Nullable Path workingDirectory,
@Nullable Map<String, String> environment)
throws CommandExitException, CommandExecutionException, InterruptedException {
ProcessExecutor processExecutor = processExecutorSupplier.get();
AsyncStreamSaver stdOutSaver = streamSaverFactory.newSaver();
AsyncStreamSaver stdErrSaver = streamSaverFactory.newSaver();
try {
int exitCode =
processExecutor.run(command, workingDirectory, environment, stdOutSaver, stdErrSaver);
if (exitCode != 0) {
String stdOut;
String stdErr;
try {
stdOut = stdOutSaver.getResult().get();
} catch (InterruptedException ignored) {
stdOut = "stdout collection interrupted";
}
try {
stdErr = stdErrSaver.getResult().get();
} catch (InterruptedException ignored) {
stdErr = "stderr collection interrupted";
}
throw new CommandExitException(exitCode, stdOut + "\n" + stdErr);
}
return stdOutSaver.getResult().get();
} catch (IOException | ExecutionException ex) {
String stdOut;
String stdErr;
try {
stdOut = stdOutSaver.getResult().get();
} catch (InterruptedException | ExecutionException ignored) {
stdOut = "stdout collection interrupted";
}
try {
stdErr = stdErrSaver.getResult().get();
} catch (InterruptedException | ExecutionException ignored) {
stdErr = "stderr collection interrupted";
}
throw new CommandExecutionException(stdOut + "\n" + stdErr, ex);
}
}