passers.go 1017 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package exe
  2. import (
  3. "os"
  4. "os/exec"
  5. )
  6. type CmdBuilder struct {
  7. GitBin string
  8. GitFlags []string
  9. MakepkgFlags []string
  10. MakepkgConfPath string
  11. MakepkgBin string
  12. }
  13. func (c *CmdBuilder) BuildGitCmd(dir string, extraArgs ...string) *exec.Cmd {
  14. args := make([]string, len(c.GitFlags), len(c.GitFlags)+len(extraArgs))
  15. copy(args, c.GitFlags)
  16. if dir != "" {
  17. args = append(args, "-C", dir)
  18. }
  19. if len(extraArgs) > 0 {
  20. args = append(args, extraArgs...)
  21. }
  22. cmd := exec.Command(c.GitBin, args...)
  23. cmd.Env = append(os.Environ(), "GIT_TERMINAL_PROMPT=0")
  24. return cmd
  25. }
  26. func (c *CmdBuilder) BuildMakepkgCmd(dir string, extraArgs ...string) *exec.Cmd {
  27. args := make([]string, len(c.MakepkgFlags), len(c.MakepkgFlags)+len(extraArgs))
  28. copy(args, c.MakepkgFlags)
  29. if c.MakepkgConfPath != "" {
  30. args = append(args, "--config", c.MakepkgConfPath)
  31. }
  32. if len(extraArgs) > 0 {
  33. args = append(args, extraArgs...)
  34. }
  35. cmd := exec.Command(c.MakepkgBin, args...)
  36. cmd.Dir = dir
  37. return cmd
  38. }