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) *spool.ExitCode { editor := os.Getenv("EDITOR") if editor == "" { 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 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, } }