main.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package main
  2. import (
  3. "flag"
  4. "log"
  5. "os"
  6. "github.com/ayntgl/discordo/config"
  7. "github.com/ayntgl/discordo/ui"
  8. "github.com/zalando/go-keyring"
  9. )
  10. var (
  11. flagToken string
  12. flagConfig string
  13. flagLog string
  14. )
  15. func init() {
  16. flag.StringVar(&flagToken, "token", "", "The authentication token.")
  17. flag.StringVar(&flagConfig, "config", config.DefaultConfigPath(), "The path to the configuration file.")
  18. flag.StringVar(&flagLog, "log", config.DefaultLogPath(), "The path to the log file.")
  19. }
  20. func main() {
  21. flag.Parse()
  22. if flagLog != "" {
  23. // Set the standard logger output to the provided log file.
  24. f, err := os.OpenFile(flagLog, os.O_CREATE|os.O_WRONLY, 0666)
  25. if err != nil {
  26. log.Fatal(err)
  27. }
  28. log.SetOutput(f)
  29. log.SetFlags(log.LstdFlags | log.Lshortfile)
  30. }
  31. cfg := config.New()
  32. if err := cfg.Load(flagConfig); err != nil {
  33. log.Fatal(err)
  34. }
  35. var (
  36. token string
  37. err error
  38. )
  39. if flagToken != "" {
  40. token = flagToken
  41. go keyring.Set(config.Name, "token", token)
  42. } else {
  43. token, err = keyring.Get(config.Name, "token")
  44. if err != nil {
  45. log.Println(err)
  46. }
  47. }
  48. app := ui.NewApplication(cfg)
  49. app.Run(token)
  50. }