exceptionSetp.go 781 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. // Author: simon
  2. // Date: 2025/2/20 10:40
  3. // Desc:
  4. package main
  5. import (
  6. "bytes"
  7. "fmt"
  8. "os/exec"
  9. )
  10. type exceptionStep struct {
  11. step
  12. }
  13. func newExceptionStep(name, message, proj, exe string, args []string) exceptionStep {
  14. s := exceptionStep{}
  15. s.step = newStep(name, message, proj, exe, args)
  16. return s
  17. }
  18. func (s exceptionStep) execute() (string, error) {
  19. cmd := exec.Command(s.exe, s.args...)
  20. var out bytes.Buffer
  21. cmd.Stdout = &out
  22. cmd.Stderr = &out
  23. cmd.Dir = s.proj
  24. if err := cmd.Run(); err != nil {
  25. return "", &stepErr{
  26. step: s.name,
  27. msg: "failed to execute",
  28. cause: err,
  29. }
  30. }
  31. if out.Len() > 0 {
  32. return "", &stepErr{
  33. step: s.name,
  34. msg: fmt.Sprintf("invalid format: %s", out.String()),
  35. cause: nil,
  36. }
  37. }
  38. return s.message, nil
  39. }