aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/MobileInstallCommand.java
diff options
context:
space:
mode:
authorGravatar ulfjack <ulfjack@google.com>2017-08-09 15:27:49 +0200
committerGravatar Marcel Hlopko <hlopko@google.com>2017-08-10 13:39:00 +0200
commitf2d459502f5fb422d6000db782795cffc6efa3e4 (patch)
tree35fc4d0cfb5cd22a179107fd90068366ffa85768 /src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/MobileInstallCommand.java
parent6b2dce6710ed7d2429e0e3dc113c9bad622b8c4b (diff)
Rewrite the Command API
Important: the simplified API now defaults to forwarding interrupts to subprocesses. I did audit all the call sites, and I think this is a safe change to make. - Properly support timeouts with all implementations - Simplify the API - only provide two flavours of blocking calls, which require no input and forward interrupts; this is the most common usage - provide a number of async calls, which optionally takes input, and a flag whether to forward interrupts - only support input streams, no byte arrays or other 'convenience features' that are rarely needed and unnecessarily increase the surface area - use java.time.Duration to specify timeout; for consistency, interpret a timeout of <= 0 as no timeout (i.e., including rather than excluding 0) - KillableObserver and subclasses are no longer part of the public API, but still used to implement timeouts if the Subprocess.Factory does not support them - Update the documentation for Command - Update all callers; most callers now use the simplified API PiperOrigin-RevId: 164716782
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/MobileInstallCommand.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/MobileInstallCommand.java13
1 files changed, 4 insertions, 9 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/MobileInstallCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/MobileInstallCommand.java
index ab909d025f..8a83400c63 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/MobileInstallCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/MobileInstallCommand.java
@@ -264,16 +264,11 @@ public class MobileInstallCommand implements BlazeCommand {
// actual output of the command being run even if --color=no is specified.
env.getReporter().switchToAnsiAllowingHandler();
- // The command API is a little strange in that the following statement
- // will return normally only if the program exits with exit code 0.
- // If it ends with any other code, we have to catch BadExitStatusException.
+ // The command API is a little strange in that the following statement will return normally
+ // only if the program exits with exit code 0. If it ends with any other code, we have to
+ // catch BadExitStatusException.
command
- .execute(
- com.google.devtools.build.lib.shell.Command.NO_INPUT,
- com.google.devtools.build.lib.shell.Command.NO_OBSERVER,
- outErr.getOutputStream(),
- outErr.getErrorStream(),
- true /* interruptible */)
+ .execute(outErr.getOutputStream(), outErr.getErrorStream())
.getTerminationStatus()
.getExitCode();
return ExitCode.SUCCESS;