wip
cicd / ci (push) Failing after 1m54s
Details
cicd / ci (push) Failing after 1m54s
Details
parent
e4d60a9e73
commit
d1b3da3fa3
|
|
@ -0,0 +1,11 @@
|
||||||
|
package cli
|
||||||
|
|
||||||
|
type Config struct {
|
||||||
|
Files FileList
|
||||||
|
Query struct {
|
||||||
|
Period string
|
||||||
|
Sort string
|
||||||
|
NoRounding bool
|
||||||
|
Depth int
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
package cli
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
type FlagStringArray []string
|
||||||
|
|
||||||
|
func (array *FlagStringArray) String() string {
|
||||||
|
return strings.Join(*array, ", ")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (array *FlagStringArray) Set(s string) error {
|
||||||
|
*array = append(*array, s)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type FileList FlagStringArray
|
||||||
|
|
||||||
|
func (fileList FileList) Strings() []string {
|
||||||
|
return ([]string)(fileList)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (fileList *FileList) String() string {
|
||||||
|
return (*FlagStringArray)(fileList).String()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (fileList *FileList) Set(s string) error {
|
||||||
|
if _, err := os.Stat(s); os.IsNotExist(err) {
|
||||||
|
return fmt.Errorf("file does not exist: %s", s)
|
||||||
|
}
|
||||||
|
return (*FlagStringArray)(fileList).Set(s)
|
||||||
|
}
|
||||||
|
|
@ -3,11 +3,86 @@ package cli
|
||||||
import (
|
import (
|
||||||
"flag"
|
"flag"
|
||||||
"os"
|
"os"
|
||||||
|
"slices"
|
||||||
|
|
||||||
|
"gogs.inhome.blapointe.com/ana-ledger/src/ledger"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Main() {
|
func Main() {
|
||||||
|
var config Config
|
||||||
|
|
||||||
fs := flag.NewFlagSet(os.Args[0], flag.ContinueOnError)
|
fs := flag.NewFlagSet(os.Args[0], flag.ContinueOnError)
|
||||||
|
fs.Var(&config.Files, "f", "paths to files")
|
||||||
|
fs.StringVar(&config.Query.Period, "period", "", "period")
|
||||||
|
fs.StringVar(&config.Query.Sort, "S", "", "sort ie date")
|
||||||
|
fs.BoolVar(&config.Query.NoRounding, "no-rounding", false, "no rounding")
|
||||||
|
fs.IntVar(&config.Query.Depth, "depth", 0, "depth grouping")
|
||||||
if err := fs.Parse(os.Args[1:]); err != nil {
|
if err := fs.Parse(os.Args[1:]); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
files := config.Files.Strings()
|
||||||
|
if len(files) == 0 {
|
||||||
|
panic("must specify at least one file")
|
||||||
|
}
|
||||||
|
ledgerFiles, err := ledger.NewFiles(files[0], files[1:]...)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
positional := fs.Args()
|
||||||
|
if len(positional) == 0 || len(positional[0]) < 3 {
|
||||||
|
panic("positional arguments required, ie bal|reg PATTERN MATCHING")
|
||||||
|
}
|
||||||
|
cmd := positional[0]
|
||||||
|
|
||||||
|
likes := []ledger.Like{}
|
||||||
|
for _, query := range positional[1:] {
|
||||||
|
panic(query)
|
||||||
|
}
|
||||||
|
|
||||||
|
deltas, err := ledgerFiles.Deltas(likes...)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if depth := config.Query.Depth; depth > 0 {
|
||||||
|
panic(depth)
|
||||||
|
}
|
||||||
|
|
||||||
|
switch cmd[:3] {
|
||||||
|
case "bal":
|
||||||
|
balances := deltas.Balances()
|
||||||
|
|
||||||
|
keys := []string{}
|
||||||
|
for k := range balances {
|
||||||
|
keys = append(keys, k)
|
||||||
|
}
|
||||||
|
slices.Sort(keys)
|
||||||
|
|
||||||
|
depth := 0
|
||||||
|
previous := ""
|
||||||
|
for i := range keys {
|
||||||
|
key := keys[i]
|
||||||
|
|
||||||
|
if isSameDepth := func() bool {
|
||||||
|
return false
|
||||||
|
}(); isSameDepth {
|
||||||
|
} else if isDeeper := func() bool {
|
||||||
|
return false
|
||||||
|
}(); isDeeper {
|
||||||
|
} else if lessDeep := func() int {
|
||||||
|
return 0
|
||||||
|
}(); true {
|
||||||
|
}
|
||||||
|
|
||||||
|
previous = key
|
||||||
|
}
|
||||||
|
|
||||||
|
panic(balances.Debug())
|
||||||
|
case "reg":
|
||||||
|
// register := deltas.Register()
|
||||||
|
default:
|
||||||
|
panic("unknown command " + positional[0])
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue