diff options
Diffstat (limited to 'internal/editor/editor.go')
| -rw-r--r-- | internal/editor/editor.go | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/internal/editor/editor.go b/internal/editor/editor.go index a1af1be..722e336 100644 --- a/internal/editor/editor.go +++ b/internal/editor/editor.go @@ -68,3 +68,23 @@ func OpenTempAndEdit(initial []byte) (string, error) { } return strings.TrimSpace(string(b)), nil } + +// OpenFile ensures the parent directory exists, then opens path in the editor +// from Resolve() (HEXAI_EDITOR or EDITOR). +func OpenFile(path string) error { + ed, err := Resolve() + if err != nil { + return err + } + path = filepath.Clean(strings.TrimSpace(path)) + if path == "" || path == "." { + return errors.New("config path is empty") + } + dir := filepath.Dir(path) + if dir != "" && dir != "." { + if mkErr := os.MkdirAll(dir, 0o700); mkErr != nil { + return mkErr + } + } + return RunEditor(ed, path) +} |
