32 lines
		
	
	
		
			502 B
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			502 B
		
	
	
	
		
			Go
		
	
	
	
| package runtime
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 	"os"
 | |
| 	"os/exec"
 | |
| 	"strings"
 | |
| )
 | |
| 
 | |
| type Cmdr struct {
 | |
| }
 | |
| 
 | |
| func (k Cmdr) CombinedOutput(cmd *exec.Cmd) (string, error) {
 | |
| 	o, err := cmd.CombinedOutput()
 | |
| 	if err != nil {
 | |
| 		args := append([]string{}, cmd.Args...)
 | |
| 		args[0] = cmd.Path
 | |
| 
 | |
| 		cs := strings.Join(args, " ")
 | |
| 		s := string(o)
 | |
| 		k.Errorf("%s failed with output:\n%s", cs, s)
 | |
| 
 | |
| 		return s, err
 | |
| 	}
 | |
| 
 | |
| 	return string(o), nil
 | |
| }
 | |
| 
 | |
| func (k Cmdr) Errorf(f string, args ...interface{}) {
 | |
| 	fmt.Fprintf(os.Stderr, f+"\n", args...)
 | |
| }
 |