diff --git a/gobbs.go b/gobbs.go index 55daeb3..7bbd4da 100644 --- a/gobbs.go +++ b/gobbs.go @@ -2,20 +2,32 @@ package main import ( tea "github.com/charmbracelet/bubbletea" + "github.com/mrusme/gobbs/config" "github.com/mrusme/gobbs/system" "github.com/mrusme/gobbs/ui" "github.com/mrusme/gobbs/ui/ctx" + "go.uber.org/zap" ) func main() { - c := ctx.New() + var logger *zap.Logger + var sugar *zap.SugaredLogger - discourse, err := system.New("discourse", nil) + cfg, err := config.Load() if err != nil { panic(err) } - c.AddSystem(&discourse) + if cfg.Debug == "true" { + logger, _ = zap.NewDevelopment() + } else { + logger, _ = zap.NewProduction() + } + defer logger.Sync() + sugar = logger.Sugar() + + c := ctx.New(&cfg, sugar) + _ = loadSystems(&c) // TODO: Handle errs tui := tea.NewProgram(ui.NewModel(&c), tea.WithAltScreen()) err = tui.Start() @@ -23,3 +35,19 @@ func main() { panic(err) } } + +func loadSystems(c *ctx.Ctx) []error { + var errs []error + + for _, sysCfg := range c.Config.Systems { + sys, err := system.New(sysCfg.Type, &sysCfg.Config) + if err != nil { + c.Logger.Errorf("error loading system: %s", err) + errs = append(errs, err) + } + + c.AddSystem(&sys) + } + + return errs +}