json output a go
parent
97c0b58bec
commit
db4b1ca6ad
|
|
@ -1,8 +1,10 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"flag"
|
||||
"fmt"
|
||||
"os"
|
||||
"sort"
|
||||
"strings"
|
||||
|
||||
|
|
@ -17,6 +19,7 @@ func main() {
|
|||
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")
|
||||
groupDate := flag.String("group-date", ".*", "grouping to apply to dates")
|
||||
jsonOutput := flag.Bool("json", false, "json output")
|
||||
flag.Parse()
|
||||
|
||||
if flag.NArg() < 1 {
|
||||
|
|
@ -45,6 +48,8 @@ func main() {
|
|||
like = append(like, ledger.LikeAfter(*likeAfter))
|
||||
}
|
||||
|
||||
jsonResult := []any{}
|
||||
|
||||
switch *foo {
|
||||
case "reg":
|
||||
sort.Slice(deltas, func(i, j int) bool {
|
||||
|
|
@ -53,7 +58,15 @@ func main() {
|
|||
register := deltas.Register()
|
||||
for i := range deltas {
|
||||
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":
|
||||
|
|
@ -64,10 +77,21 @@ func main() {
|
|||
results = append(results, fmt.Sprintf("%s %.2f", subk, subv))
|
||||
}
|
||||
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:
|
||||
panic(fmt.Errorf("not impl %q", flag.Args()[0]))
|
||||
}
|
||||
|
||||
if *jsonOutput {
|
||||
json.NewEncoder(os.Stdout).Encode(jsonResult)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue