diff --git a/cmd/clitest/draw.sh b/cmd/clitest/draw.sh index 7ab147d..1fcf981 100644 --- a/cmd/clitest/draw.sh +++ b/cmd/clitest/draw.sh @@ -1,4 +1,11 @@ #! /bin/bash cd "$(dirname "$(realpath "$BASH_SOURCE")")" -go run . -http=:8080 -foo reg -like-after 1023-08 -group-date ^....-.. -group-name '^[^:]*:[^:]*' -like-name '(AssetAccount|Stock|Retirement)' macro.d/* +go run . -http=:8080 \ + -foo reg \ + -like-after 1023-08 \ + -group-date ^....-.. \ + -group-name '^[^:]*:[^:]*' \ + -like-name '(AssetAccount|Retirement)' \ + "$@" \ + macro.d/* diff --git a/cmd/clitest/main.go b/cmd/clitest/main.go index 8b3366b..523a074 100644 --- a/cmd/clitest/main.go +++ b/cmd/clitest/main.go @@ -7,6 +7,7 @@ import ( "log" "net/http" "os" + "path" "slices" "sort" "strings" @@ -43,21 +44,14 @@ func main() { deltas = deltas.Group(ledger.GroupName(*groupName), ledger.GroupDate(*groupDate)) like := ledger.Likes{ledger.LikeName(*likeName)} - if *likeLedger { - like = append(like, ledger.LikeBefore(*likeBefore)) - like = append(like, ledger.LikeAfter(*likeAfter)) - deltas = deltas.Like(like...) - } else { - deltas = deltas.Like(like...) - like = append(like, ledger.LikeBefore(*likeBefore)) - like = append(like, ledger.LikeAfter(*likeAfter)) - } if *httpOutput != "" { - deltas = deltas.Like(like...) - switch *foo { - case "reg": - foo := func(w http.ResponseWriter, r *http.Request) { + like = append(like, ledger.LikeBefore(*likeBefore)) + like = append(like, ledger.LikeAfter(*likeAfter)) + + foo := func(w http.ResponseWriter, r *http.Request) { + switch path.Dir(r.URL.Path) { + case "/bal": register := deltas.Like(like...).Register() nameCurrencyDateValue := map[string]map[ledger.Currency]map[string]float64{} dates := []string{} @@ -92,15 +86,25 @@ func main() { if err := line.Render(w); err != nil { panic(err) } + case "/reg": } - log.Println("listening on", *httpOutput) - if err := http.ListenAndServe(*httpOutput, http.HandlerFunc(foo)); err != nil { - panic(err) - } - default: - panic(fmt.Errorf("not impl %q", *foo)) + } + + log.Println("listening on", *httpOutput) + if err := http.ListenAndServe(*httpOutput, http.HandlerFunc(foo)); err != nil { + panic(err) } } else { + if *likeLedger { + like = append(like, ledger.LikeBefore(*likeBefore)) + like = append(like, ledger.LikeAfter(*likeAfter)) + deltas = deltas.Like(like...) + } else { + deltas = deltas.Like(like...) + like = append(like, ledger.LikeBefore(*likeBefore)) + like = append(like, ledger.LikeAfter(*likeAfter)) + } + jsonResult := []any{} switch *foo {