Sam Fredrickson
270534c0d5
All checks were successful
Build & Test / Main (push) Successful in 59s
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.
49 lines
1.0 KiB
Go
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)
|
|
}
|