54 lines
1011 B
Go
54 lines
1011 B
Go
package main
|
|
|
|
import (
|
|
"io/ioutil"
|
|
"os"
|
|
"os/exec"
|
|
"strings"
|
|
)
|
|
|
|
func doEditor() (string, error) {
|
|
// Create a temporary file
|
|
tmpfile, err := ioutil.TempFile("", "regex-*.txt")
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
tmpPath := tmpfile.Name()
|
|
// Defer removal in case of error, but we might move it
|
|
defer os.Remove(tmpPath)
|
|
tmpfile.Close()
|
|
|
|
// Get the user's editor
|
|
editor := os.Getenv("EDITOR")
|
|
if editor == "" {
|
|
editor = "vim" // default to vim
|
|
}
|
|
|
|
// Run the editor
|
|
cmd := exec.Command(editor, tmpPath)
|
|
cmd.Stdin = os.Stdin
|
|
cmd.Stdout = os.Stdout
|
|
cmd.Stderr = os.Stderr
|
|
|
|
if err := cmd.Run(); err != nil {
|
|
return "", err
|
|
}
|
|
|
|
// Read the file content
|
|
content, err := ioutil.ReadFile(tmpPath)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
// Check if the file is not empty after trimming space
|
|
if strings.TrimSpace(string(content)) != "" {
|
|
// Move the file
|
|
if err := os.Rename(tmpPath, "/tmp/regex.txt"); err != nil {
|
|
return "", err
|
|
}
|
|
return "/tmp/regex.txt", nil
|
|
}
|
|
|
|
return "", nil
|
|
}
|