diff options
Diffstat (limited to 'run')
| -rw-r--r-- | run/edit.go | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/run/edit.go b/run/edit.go index f4742ff..47d6362 100644 --- a/run/edit.go +++ b/run/edit.go @@ -3,21 +3,33 @@ package run import ( "errors" "github.com/ewy1/pik/model" + "github.com/ewy1/pik/spool" "os" "os/exec" ) var NoEditorError = errors.New("$EDITOR not set") -func Edit(t model.Target, src *model.Source) error { +func Edit(t model.Target, src *model.Source) *spool.ExitCode { editor := os.Getenv("EDITOR") if editor == "" { - return NoEditorError + return &spool.NoEditorFailure } cmd := exec.Command(editor, t.File(src)) cmd.Stdin = os.Stdin cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr cmd.Dir = src.Path - return cmd.Run() + err := cmd.Run() + code := 0 + msg := "" + var ex *exec.ExitError + if errors.As(err, &ex) { + code = ex.ExitCode() + msg = ex.String() + } + return &spool.ExitCode{ + Value: code, + Message: msg, + } } |
