main.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package main
  2. import (
  3. "flag"
  4. "log"
  5. "os"
  6. "path/filepath"
  7. "github.com/ayn2op/discordo/internal/config"
  8. "github.com/rivo/tview"
  9. "github.com/zalando/go-keyring"
  10. )
  11. var (
  12. token string
  13. discordState *State
  14. app = tview.NewApplication()
  15. mainFlex *MainFlex
  16. )
  17. func init() {
  18. t, _ := keyring.Get(config.Name, "token")
  19. flag.StringVar(&token, "token", t, "The authentication token.")
  20. path, err := os.UserCacheDir()
  21. if err != nil {
  22. log.Fatal(err)
  23. }
  24. path = filepath.Join(path, config.Name)
  25. err = os.MkdirAll(path, os.ModePerm)
  26. if err != nil {
  27. log.Fatal(err)
  28. }
  29. path = filepath.Join(path, "logs.txt")
  30. f, err := os.OpenFile(path, os.O_CREATE|os.O_WRONLY, os.ModePerm)
  31. if err != nil {
  32. log.Fatal(err)
  33. }
  34. log.SetOutput(f)
  35. log.SetFlags(log.LstdFlags | log.Llongfile)
  36. }
  37. func main() {
  38. flag.Parse()
  39. if err := config.Load(); err != nil {
  40. log.Fatal(err)
  41. }
  42. // mission failed, we'll get 'em next time
  43. if token == "" {
  44. app.SetRoot(newLoginForm(), true)
  45. } else {
  46. mainFlex = newMainFlex()
  47. if err := openState(token); err != nil {
  48. log.Fatal(err)
  49. }
  50. app.SetRoot(mainFlex, true)
  51. }
  52. app.EnableMouse(config.Current.Mouse)
  53. if err := app.Run(); err != nil {
  54. log.Fatal(err)
  55. }
  56. }