summaryrefslogtreecommitdiff
path: root/doInteract.go
diff options
context:
space:
mode:
Diffstat (limited to 'doInteract.go')
-rw-r--r--doInteract.go92
1 files changed, 92 insertions, 0 deletions
diff --git a/doInteract.go b/doInteract.go
new file mode 100644
index 0000000..f99b3d9
--- /dev/null
+++ b/doInteract.go
@@ -0,0 +1,92 @@
+package main
+
+import (
+ "io/ioutil"
+ "os"
+ "os/exec"
+ "strings"
+ "time"
+
+ "go.wit.com/log"
+)
+
+func doInteract() 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)
+ }
+ os.Remove("/tmp/regex.ready")
+ log.Info("SessionID: %s", string(content))
+
+ logContent, err := ioutil.ReadFile("/tmp/regex.log")
+ if err != nil {
+ log.Errorf("could not read regex.log: %v", err)
+ } else {
+ log.Info("contents of /tmp/regex.log:")
+ os.Stdout.Write(logContent)
+ }
+
+ time.Sleep(5 * time.Second)
+ }
+}
+
+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
+}