39 lines
686 B
Go
39 lines
686 B
Go
package cmd
|
|
|
|
import (
|
|
"log/slog"
|
|
|
|
"github.com/ayn2op/discordo/internal/config"
|
|
"github.com/ayn2op/discordo/internal/consts"
|
|
"github.com/ayn2op/discordo/internal/logger"
|
|
"github.com/zalando/go-keyring"
|
|
)
|
|
|
|
var (
|
|
discordState *State
|
|
app *App
|
|
)
|
|
|
|
func Run(token string) error {
|
|
if err := logger.Load(); err != nil {
|
|
return err
|
|
}
|
|
|
|
// If no token was provided, look it up in the keyring.
|
|
if token == "" {
|
|
tok, err := keyring.Get(consts.Name, "token")
|
|
if err != nil {
|
|
slog.Info("failed to get token from keyring", "err", err)
|
|
} else {
|
|
token = tok
|
|
}
|
|
}
|
|
|
|
cfg, err := config.Load()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
app = newApp(cfg)
|
|
return app.run(token)
|
|
}
|