root.go 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package cmd
  2. import (
  3. "flag"
  4. "fmt"
  5. "log/slog"
  6. "github.com/ayn2op/discordo/internal/app"
  7. "github.com/ayn2op/discordo/internal/config"
  8. "github.com/ayn2op/discordo/internal/logger"
  9. "github.com/diamondburned/arikawa/v3/utils/ws"
  10. )
  11. var (
  12. configPath string
  13. logPath string
  14. logLevel string
  15. )
  16. func Run() error {
  17. flag.StringVar(&configPath, "config-path", config.DefaultPath(), "path of the configuration file")
  18. flag.StringVar(&logPath, "log-path", logger.DefaultPath(), "path of the log file")
  19. flag.StringVar(&logLevel, "log-level", "info", "log level")
  20. flag.Parse()
  21. var level slog.Level
  22. switch logLevel {
  23. case "debug":
  24. ws.EnableRawEvents = true
  25. level = slog.LevelDebug
  26. case "info":
  27. level = slog.LevelInfo
  28. case "warn":
  29. level = slog.LevelWarn
  30. case "error":
  31. level = slog.LevelError
  32. }
  33. if err := logger.Load(logPath, level); err != nil {
  34. return fmt.Errorf("failed to load logger: %w", err)
  35. }
  36. cfg, err := config.Load(configPath)
  37. if err != nil {
  38. return fmt.Errorf("failed to load config: %w", err)
  39. }
  40. return app.New(cfg).Run()
  41. }