| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- // Author: simon
- // Date: 2025/2/20 10:40
- // Desc:
- package main
- import (
- "bytes"
- "fmt"
- "os/exec"
- )
- type exceptionStep struct {
- step
- }
- func newExceptionStep(name, message, proj, exe string, args []string) exceptionStep {
- s := exceptionStep{}
- s.step = newStep(name, message, proj, exe, args)
- return s
- }
- func (s exceptionStep) execute() (string, error) {
- cmd := exec.Command(s.exe, s.args...)
- var out bytes.Buffer
- cmd.Stdout = &out
- cmd.Stderr = &out
- cmd.Dir = s.proj
- if err := cmd.Run(); err != nil {
- return "", &stepErr{
- step: s.name,
- msg: "failed to execute",
- cause: err,
- }
- }
- if out.Len() > 0 {
- return "", &stepErr{
- step: s.name,
- msg: fmt.Sprintf("invalid format: %s", out.String()),
- cause: nil,
- }
- }
- return s.message, nil
- }
|