summaryrefslogtreecommitdiff
path: root/misc/dashboard/builder/exec.go
diff options
context:
space:
mode:
Diffstat (limited to 'misc/dashboard/builder/exec.go')
-rw-r--r--misc/dashboard/builder/exec.go27
1 files changed, 8 insertions, 19 deletions
diff --git a/misc/dashboard/builder/exec.go b/misc/dashboard/builder/exec.go
index 7f21abaa2..802d5f079 100644
--- a/misc/dashboard/builder/exec.go
+++ b/misc/dashboard/builder/exec.go
@@ -10,7 +10,6 @@ import (
"log"
"os"
"os/exec"
- "strings"
)
// run is a simple wrapper for exec.Run/Close
@@ -18,7 +17,6 @@ func run(envv []string, dir string, argv ...string) error {
if *verbose {
log.Println("run", argv)
}
- argv = useBash(argv)
cmd := exec.Command(argv[0], argv[1:]...)
cmd.Dir = dir
cmd.Env = envv
@@ -30,12 +28,11 @@ func run(envv []string, dir string, argv ...string) error {
// as well as writing it to logfile (if specified). It returns
// process combined stdout and stderr output, exit status and error.
// The error returned is nil, if process is started successfully,
-// even if exit status is not 0.
+// even if exit status is not successful.
func runLog(envv []string, logfile, dir string, argv ...string) (string, int, error) {
if *verbose {
log.Println("runLog", argv)
}
- argv = useBash(argv)
b := new(bytes.Buffer)
var w io.Writer = b
@@ -54,21 +51,13 @@ func runLog(envv []string, logfile, dir string, argv ...string) (string, int, er
cmd.Stdout = w
cmd.Stderr = w
- err := cmd.Run()
- if err != nil {
- if ws, ok := err.(*exec.ExitError); ok {
- return b.String(), ws.ExitStatus(), nil
- }
+ startErr := cmd.Start()
+ if startErr != nil {
+ return "", 1, startErr
}
- return b.String(), 0, err
-}
-
-// useBash prefixes a list of args with 'bash' if the first argument
-// is a bash script.
-func useBash(argv []string) []string {
- // TODO(brainman): choose a more reliable heuristic here.
- if strings.HasSuffix(argv[0], ".bash") {
- argv = append([]string{"bash"}, argv...)
+ exitStatus := 0
+ if err := cmd.Wait(); err != nil {
+ exitStatus = 1 // TODO(bradfitz): this is fake. no callers care, so just return a bool instead.
}
- return argv
+ return b.String(), exitStatus, nil
}