github.com/bingoohuang/gg@v0.0.0-20240325092523-45da7dee9335/pkg/shellwords/util_windows.go (about) 1 //go:build windows 2 // +build windows 3 4 package shellwords 5 6 import ( 7 "errors" 8 "os" 9 "os/exec" 10 "strings" 11 ) 12 13 func shellRun(line, dir string) (string, error) { 14 var shell string 15 if shell = os.Getenv("COMSPEC"); shell == "" { 16 shell = "cmd" 17 } 18 cmd := exec.Command(shell, "/c", line) 19 if dir != "" { 20 cmd.Dir = dir 21 } 22 b, err := cmd.Output() 23 if err != nil { 24 if eerr, ok := err.(*exec.ExitError); ok { 25 b = eerr.Stderr 26 } 27 return "", errors.New(err.Error() + ":" + string(b)) 28 } 29 return strings.TrimSpace(string(b)), nil 30 }