diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..db3b5ca --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module github.com/lancatlin/ledger-quicknote + +go 1.19 diff --git a/main.go b/main.go index c69f72b..efe47d3 100644 --- a/main.go +++ b/main.go @@ -74,6 +74,14 @@ func main() { } }) + http.HandleFunc("/exec", func(w http.ResponseWriter, r *http.Request) { + if err := executeScript(w, "register"); err != nil { + http.Error(w, err.Error(), 500) + log.Println(err) + return + } + }) + log.Println("Listen on http://localhost:8000") log.Fatal(http.ListenAndServe(":8000", nil)) } diff --git a/scripts.go b/scripts.go new file mode 100644 index 0000000..16b3d2a --- /dev/null +++ b/scripts.go @@ -0,0 +1,18 @@ +package main + +import ( + "io" + "os/exec" +) + +var SCRIPTS = map[string][]string{ + "balance": {"b"}, + "register": {"r"}, +} + +func executeScript(w io.Writer, name string) (err error) { + cmd := exec.Command("ledger", append([]string{"-f", LEDGER_FILE}, SCRIPTS[name]...)...) + cmd.Stdout = w + cmd.Stderr = w + return cmd.Run() +}