diff --git a/cmd/connect.go b/cmd/connect.go new file mode 100644 index 0000000..6d4522e --- /dev/null +++ b/cmd/connect.go @@ -0,0 +1,70 @@ +package cmd + +import ( + "os" + + "github.com/mrusme/gobbs/config" + "github.com/mrusme/gobbs/system" + "github.com/spf13/cobra" +) + +func init() { + cmd := connectBase() + rootCmd.AddCommand(cmd) +} + +func connectBase() *cobra.Command { + var sysType string = "" + var sysURL string = "" + var sysConfig map[string]interface{} + + var cmd = &cobra.Command{ + Use: "connect", + Short: "Connect to BBS", + Long: "Add a new connection to a BBS.", + Run: func(cmd *cobra.Command, args []string) { + sysConfig = make(map[string]interface{}) + sys, err := system.New(sysType, &sysConfig) + if err != nil { + LOG.Panicln(err) + } + + if err := sys.Connect(sysURL); err != nil { + LOG.Panicln(err) + } + + CFG.Systems = append(CFG.Systems, config.SystemConfig{ + Type: sysType, + Config: sys.GetConfig(), + }) + if err := CFG.Save(); err != nil { + LOG.Panicln(err) + } + + LOG.Infoln("Successfully added new connection!") + os.Exit(0) + }, + } + + cmd. + Flags(). + StringVar( + &sysType, + "type", + "", + "Type of system to connect to (discourse, lemmy)", + ) + cmd.MarkFlagRequired("type") + + cmd. + Flags(). + StringVar( + &sysURL, + "url", + "", + "URL of system (e.g. https://www.keebtalk.com)", + ) + cmd.MarkFlagRequired("url") + + return cmd +} diff --git a/cmd/root.go b/cmd/root.go index 5950469..5e75a0f 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -1,17 +1,16 @@ package cmd 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" "github.com/spf13/cobra" "github.com/spf13/viper" "go.uber.org/zap" ) -var sugar *zap.SugaredLogger +var LOG *zap.SugaredLogger +var CFG config.Config func init() { cobra.OnInitialize(load) @@ -31,27 +30,27 @@ func init() { func load() { var logger *zap.Logger - cfg, err := config.Load() + CFG, err := config.Load() if err != nil { panic(err) } - if cfg.Debug == "true" { + if CFG.Debug == "true" { logger, _ = zap.NewDevelopment() } else { logger, _ = zap.NewProduction() } defer logger.Sync() - sugar = logger.Sugar() + LOG = logger.Sugar() - c := ctx.New(&cfg, sugar) - _ = loadSystems(&c) // TODO: Handle errs - - tui := tea.NewProgram(ui.NewModel(&c), tea.WithAltScreen()) - err = tui.Start() - if err != nil { - panic(err) - } + // c := ctx.New(&cfg, LOG) + // _ = loadSystems(&c) // TODO: Handle errs + // + // tui := tea.NewProgram(ui.NewModel(&c), tea.WithAltScreen()) + // err = tui.Start() + // if err != nil { + // panic(err) + // } } func loadSystems(c *ctx.Ctx) []error { @@ -81,6 +80,6 @@ var rootCmd = &cobra.Command{ func Execute() { if err := rootCmd.Execute(); err != nil { - sugar.Errorln(err) + // LOG.Errorln(err) } }