main.go 932 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package main
  2. import (
  3. "flag"
  4. "log"
  5. "os"
  6. "path/filepath"
  7. "github.com/ayn2op/discordo/config"
  8. "github.com/ayn2op/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 := config.LogDirPath()
  15. err := os.MkdirAll(path, os.ModePerm)
  16. if err != nil {
  17. log.Fatal(err)
  18. }
  19. f, err := os.OpenFile(
  20. filepath.Join(path, "logs.txt"),
  21. os.O_CREATE|os.O_WRONLY,
  22. os.ModePerm,
  23. )
  24. if err != nil {
  25. log.Fatal(err)
  26. }
  27. log.SetOutput(f)
  28. log.SetFlags(log.LstdFlags | log.Llongfile)
  29. }
  30. func main() {
  31. flag.Parse()
  32. cfg, err := config.New()
  33. if err != nil {
  34. log.Fatal(err)
  35. }
  36. if tokenFlag != "" {
  37. go keyring.Set(config.Name, "token", tokenFlag)
  38. } else {
  39. var err error
  40. tokenFlag, err = keyring.Get(config.Name, "token")
  41. if err != nil {
  42. log.Println(err)
  43. }
  44. }
  45. app := ui.NewApplication(cfg)
  46. app.Run(tokenFlag)
  47. }