json output a go
parent
97c0b58bec
commit
db4b1ca6ad
|
|
@ -1,8 +1,10 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"os"
|
||||||
"sort"
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
|
@ -17,6 +19,7 @@ func main() {
|
||||||
likeLedger := flag.Bool("like-ledger", false, "limit data to these -like-* rather than zoom to these -like-*")
|
likeLedger := flag.Bool("like-ledger", false, "limit data to these -like-* rather than zoom to these -like-*")
|
||||||
groupName := flag.String("group-name", ".*", "grouping to apply to names")
|
groupName := flag.String("group-name", ".*", "grouping to apply to names")
|
||||||
groupDate := flag.String("group-date", ".*", "grouping to apply to dates")
|
groupDate := flag.String("group-date", ".*", "grouping to apply to dates")
|
||||||
|
jsonOutput := flag.Bool("json", false, "json output")
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
|
|
||||||
if flag.NArg() < 1 {
|
if flag.NArg() < 1 {
|
||||||
|
|
@ -45,6 +48,8 @@ func main() {
|
||||||
like = append(like, ledger.LikeAfter(*likeAfter))
|
like = append(like, ledger.LikeAfter(*likeAfter))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
jsonResult := []any{}
|
||||||
|
|
||||||
switch *foo {
|
switch *foo {
|
||||||
case "reg":
|
case "reg":
|
||||||
sort.Slice(deltas, func(i, j int) bool {
|
sort.Slice(deltas, func(i, j int) bool {
|
||||||
|
|
@ -53,7 +58,15 @@ func main() {
|
||||||
register := deltas.Register()
|
register := deltas.Register()
|
||||||
for i := range deltas {
|
for i := range deltas {
|
||||||
if like.All(deltas[i]) {
|
if like.All(deltas[i]) {
|
||||||
fmt.Printf("%s (%+v)\n", deltas[i].Debug(), register[deltas[i].Date][deltas[i].Name].Debug())
|
if !*jsonOutput {
|
||||||
|
fmt.Printf("%s (%+v)\n", deltas[i].Debug(), register[deltas[i].Date][deltas[i].Name].Debug())
|
||||||
|
} else {
|
||||||
|
jsonResult = append(jsonResult, map[string]any{
|
||||||
|
"name": deltas[i].Name,
|
||||||
|
"delta": deltas[i],
|
||||||
|
"balance": register[deltas[i].Date][deltas[i].Name],
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case "bal":
|
case "bal":
|
||||||
|
|
@ -64,10 +77,21 @@ func main() {
|
||||||
results = append(results, fmt.Sprintf("%s %.2f", subk, subv))
|
results = append(results, fmt.Sprintf("%s %.2f", subk, subv))
|
||||||
}
|
}
|
||||||
if len(results) > 0 {
|
if len(results) > 0 {
|
||||||
fmt.Printf("%s\t%s\n", k, strings.Join(results, " + "))
|
if !*jsonOutput {
|
||||||
|
fmt.Printf("%s\t%s\n", k, strings.Join(results, " + "))
|
||||||
|
} else {
|
||||||
|
jsonResult = append(jsonResult, map[string]any{
|
||||||
|
"name": k,
|
||||||
|
"balance": v,
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
panic(fmt.Errorf("not impl %q", flag.Args()[0]))
|
panic(fmt.Errorf("not impl %q", flag.Args()[0]))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if *jsonOutput {
|
||||||
|
json.NewEncoder(os.Stdout).Encode(jsonResult)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue