run.go 686 B

123456789101112131415161718192021222324252627282930313233343536373839
  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/zalando/go-keyring"
  8. )
  9. var (
  10. discordState *State
  11. app *App
  12. )
  13. func Run(token string) error {
  14. if err := logger.Load(); err != nil {
  15. return err
  16. }
  17. // If no token was provided, look it up in the keyring.
  18. if token == "" {
  19. tok, err := keyring.Get(consts.Name, "token")
  20. if err != nil {
  21. slog.Info("failed to get token from keyring", "err", err)
  22. } else {
  23. token = tok
  24. }
  25. }
  26. cfg, err := config.Load()
  27. if err != nil {
  28. return err
  29. }
  30. app = newApp(cfg)
  31. return app.run(token)
  32. }