summaryrefslogtreecommitdiff
path: root/run/edit.go
diff options
context:
space:
mode:
Diffstat (limited to 'run/edit.go')
-rw-r--r--run/edit.go18
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,
+ }
}