moonmath/moonmath.go
Sam Fredrickson 270534c0d5
All checks were successful
Build & Test / Main (push) Successful in 59s
Pause spinner ticks when not refreshing.
Also, add a quick-and-dirty model for displaying basic performance
stats, currently just the number of calls to the root Update() and
View() methods.
2024-03-22 21:14:34 -07:00

49 lines
1.0 KiB
Go

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)
}