exec.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package main
  2. import (
  3. "bytes"
  4. "fmt"
  5. "os"
  6. "os/exec"
  7. "strings"
  8. )
  9. func show(cmd *exec.Cmd) error {
  10. cmd.Stdin, cmd.Stdout, cmd.Stderr = os.Stdin, os.Stdout, os.Stderr
  11. err := cmd.Run()
  12. if err != nil {
  13. return fmt.Errorf("")
  14. }
  15. return nil
  16. }
  17. func capture(cmd *exec.Cmd) (string, string, error) {
  18. var outbuf, errbuf bytes.Buffer
  19. cmd.Stdout = &outbuf
  20. cmd.Stderr = &errbuf
  21. err := cmd.Run()
  22. stdout := outbuf.String()
  23. stderr := errbuf.String()
  24. return stdout, stderr, err
  25. }
  26. func passToPacman(args *arguments) *exec.Cmd {
  27. argArr := make([]string, 0)
  28. if args.needRoot() {
  29. argArr = append(argArr, "sudo")
  30. }
  31. argArr = append(argArr, config.PacmanBin)
  32. argArr = append(argArr, cmdArgs.formatGlobals()...)
  33. argArr = append(argArr, args.formatArgs()...)
  34. if config.NoConfirm {
  35. argArr = append(argArr, "--noconfirm")
  36. }
  37. argArr = append(argArr, "--")
  38. argArr = append(argArr, args.targets...)
  39. return exec.Command(argArr[0], argArr[1:]...)
  40. }
  41. func passToMakepkg(dir string, args ...string) *exec.Cmd {
  42. if config.NoConfirm {
  43. args = append(args)
  44. }
  45. mflags := strings.Fields(config.MFlags)
  46. args = append(args, mflags...)
  47. cmd := exec.Command(config.MakepkgBin, args...)
  48. cmd.Dir = dir
  49. return cmd
  50. }
  51. func passToGit(dir string, _args ...string) *exec.Cmd {
  52. gitflags := strings.Fields(config.GitFlags)
  53. args := []string{"-C", dir}
  54. args = append(args, gitflags...)
  55. args = append(args, _args...)
  56. cmd := exec.Command(config.GitBin, args...)
  57. cmd.Stdin, cmd.Stdout, cmd.Stderr = os.Stdin, os.Stdout, os.Stderr
  58. return cmd
  59. }