package main import ( "fmt" "os" "strings" "code.humancabbage.net/sam/moonmath/coindesk" "code.humancabbage.net/sam/moonmath/config" "code.humancabbage.net/sam/moonmath/tui" "github.com/alecthomas/kong" tea "github.com/charmbracelet/bubbletea" ) var CLI struct { Asset []string `short:"a" default:"BTC" help:"Asset(s) to project."` ConfigFile string `short:"c" help:"Path to YAML configuration file."` Perf bool `help:"Display internal performance stats."` } func main() { ctx := kong.Parse(&CLI) if ctx.Error != nil { fail(ctx.Error) } allCfg, err := config.Load(CLI.ConfigFile) if err != nil { fail(err) } var assets []coindesk.Asset for i := range CLI.Asset { asset := coindesk.Asset(strings.ToUpper(CLI.Asset[i])) assets = append(assets, asset) } m := tui.New(assets, allCfg, CLI.Perf) p := tea.NewProgram(m, tea.WithAltScreen(), tea.WithFPS(30), ) if _, err := p.Run(); err != nil { fail(err) } } func fail(err error) { fmt.Printf("program error: %v\n", err) os.Exit(1) }