main.go 991 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package main
  2. import (
  3. "flag"
  4. "log"
  5. "os"
  6. "path/filepath"
  7. "github.com/ayntgl/discordo/config"
  8. "github.com/ayntgl/discordo/ui"
  9. "github.com/zalando/go-keyring"
  10. )
  11. var tokenFlag string
  12. func init() {
  13. flag.StringVar(&tokenFlag, "token", "", "The authentication token.")
  14. path, _ := os.UserCacheDir()
  15. path = filepath.Join(path, config.Name)
  16. err := os.MkdirAll(path, os.ModePerm)
  17. if err != nil {
  18. log.Fatal(err)
  19. }
  20. path = filepath.Join(path, "logs.txt")
  21. f, err := os.OpenFile(path, os.O_CREATE|os.O_WRONLY, os.ModePerm)
  22. if err != nil {
  23. log.Fatal(err)
  24. }
  25. log.SetOutput(f)
  26. log.SetFlags(log.LstdFlags | log.Llongfile)
  27. }
  28. func main() {
  29. flag.Parse()
  30. cfg := config.New()
  31. if err := cfg.Load(); err != nil {
  32. log.Fatal(err)
  33. }
  34. if tokenFlag != "" {
  35. go keyring.Set(config.Name, "token", tokenFlag)
  36. } else {
  37. var err error
  38. tokenFlag, err = keyring.Get(config.Name, "token")
  39. if err != nil {
  40. log.Println(err)
  41. }
  42. }
  43. app := ui.NewApplication(cfg)
  44. app.Run(tokenFlag)
  45. }