diff options
Diffstat (limited to 'doEditor.go')
| -rw-r--r-- | doEditor.go | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/doEditor.go b/doEditor.go new file mode 100644 index 0000000..e928f5a --- /dev/null +++ b/doEditor.go @@ -0,0 +1,81 @@ +package main + +import ( + "io/ioutil" + "os" + "os/exec" + "strings" + "time" + + "go.wit.com/log" +) + +func doEditor() error { + for { + filename, err := doEditorOnce() + if err != nil { + return err + } + log.Info("filename:", filename) + + for { + _, err := os.Stat("/tmp/regex.ready") + if err == nil { + break + } + time.Sleep(100 * time.Millisecond) + } + // read in regex.ready exists (should be SessionID) + // Println session ID + content, err := ioutil.ReadFile("/tmp/regex.ready") + if err != nil { + log.Error(err) + } + log.Infof("SessionID: %s", string(content)) + } +} + +func doEditorOnce() (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 +} |
