run.go 652 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. package cmd
  2. import (
  3. "log/slog"
  4. "github.com/ayn2op/discordo/internal/config"
  5. "github.com/ayn2op/discordo/internal/logger"
  6. "github.com/zalando/go-keyring"
  7. )
  8. var (
  9. discordState *State
  10. layout *Layout
  11. )
  12. func Run(token string) error {
  13. if err := logger.Load(); err != nil {
  14. return err
  15. }
  16. // If no token was provided, look it up in the keyring.
  17. if token == "" {
  18. tok, err := keyring.Get(config.Name, "token")
  19. if err != nil {
  20. slog.Info("failed to get token from keyring", "err", err)
  21. } else {
  22. token = tok
  23. }
  24. }
  25. cfg, err := config.Load()
  26. if err != nil {
  27. return err
  28. }
  29. layout = newLayout(cfg)
  30. return layout.run(token)
  31. }