github.com/ppphp/yayagf@v0.0.1/internal/command/command.go (about)

     1  package command
     2  
     3  import (
     4  	"bytes"
     5  	"io"
     6  	"os/exec"
     7  )
     8  
     9  func GoCommand(bin string, args []string, out io.Writer, err io.Writer) *exec.Cmd {
    10  	cmd := exec.Command(bin, args...)
    11  	cmd.Stdout = out
    12  	cmd.Stderr = err
    13  
    14  	start := make(chan struct{})
    15  	go func() {
    16  		close(start)
    17  		_ = cmd.Run()
    18  	}()
    19  	<-start
    20  
    21  	return cmd
    22  }
    23  
    24  func DoCommand(bin string, args ...string) (error, string, string) {
    25  	out, errs := &bytes.Buffer{}, &bytes.Buffer{}
    26  	cmd := exec.Command(bin, args...)
    27  	cmd.Stdout = out
    28  	cmd.Stderr = errs
    29  	if err := cmd.Run(); err != nil {
    30  		return err, out.String(), errs.String()
    31  	}
    32  	return nil, out.String(), errs.String()
    33  }