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  }