From cb9d895161461ae83f68caa8a9a5234d22dc6727 Mon Sep 17 00:00:00 2001 From: Bel LaPointe Date: Wed, 25 Oct 2023 06:31:02 -0600 Subject: [PATCH] impl A bal --- cmd/clitest/main.go | 52 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 cmd/clitest/main.go diff --git a/cmd/clitest/main.go b/cmd/clitest/main.go new file mode 100644 index 0000000..e236a52 --- /dev/null +++ b/cmd/clitest/main.go @@ -0,0 +1,52 @@ +package main + +import ( + "flag" + "fmt" + "strings" + + "gogs.inhome.blapointe.com/ana-ledger/ledger" +) + +func main() { + foo := flag.String("foo", "bal", "bal or reg") + likePattern := flag.String("like", ".", "regexp to match") + flag.Parse() + + if flag.NArg() < 1 { + panic(fmt.Errorf("positional arguments for files required")) + } + + f, err := ledger.NewFiles(flag.Args()[0], flag.Args()[1:]...) + if err != nil { + panic(err) + } + deltas, err := f.Deltas() + if err != nil { + panic(err) + } + like := ledger.LikeName(*likePattern) + deltas = deltas.Like(like) + + switch *foo { + case "reg": + case "bal": + balances, err := deltas.Balances() + if err != nil { + panic(err) + } + for k, v := range balances { + results := []string{} + for subk, subv := range v { + if int(subv) != 0 { + results = append(results, fmt.Sprintf("%s %.2f", subk, subv)) + } + } + if len(results) > 0 { + fmt.Printf("%s\t%s\n", k, strings.Join(results, " + ")) + } + } + default: + panic(fmt.Errorf("not impl %q", flag.Args()[0])) + } +}