root.go 911 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package cmd
  2. import (
  3. "log/slog"
  4. "github.com/ayn2op/discordo/internal/config"
  5. "github.com/ayn2op/discordo/internal/consts"
  6. "github.com/ayn2op/discordo/internal/logger"
  7. "github.com/spf13/cobra"
  8. "github.com/zalando/go-keyring"
  9. )
  10. var (
  11. discordState *State
  12. app *App
  13. )
  14. var (
  15. rootCmd = &cobra.Command{
  16. RunE: func(cmd *cobra.Command, args []string) error {
  17. if err := logger.Load(); err != nil {
  18. return err
  19. }
  20. token, _ := cmd.Flags().GetString("token")
  21. if token == "" {
  22. var err error
  23. token, err = keyring.Get(consts.Name, "token")
  24. if err != nil {
  25. slog.Info("failed to retrieve token from keyring", "err", err)
  26. }
  27. }
  28. cfg, err := config.Load()
  29. if err != nil {
  30. return err
  31. }
  32. app = newApp(cfg)
  33. return app.run(token)
  34. },
  35. }
  36. Execute = rootCmd.Execute
  37. )
  38. func init() {
  39. rootCmd.Flags().StringP("token", "t", "", "the authentication token")
  40. }