main.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package main
  2. import (
  3. _ "embed"
  4. "fmt"
  5. "log"
  6. "os"
  7. "strconv"
  8. itashi "git.aetherial.dev/aeth/itashi/pkg"
  9. tea "github.com/charmbracelet/bubbletea"
  10. )
  11. const ADD_TASK = "add"
  12. const DEL_TASK = "del"
  13. const DONE_TASK = "done"
  14. const TIDY_TASK = "tidy"
  15. //go:embed banner.txt
  16. var banner []byte
  17. func main() {
  18. args := os.Args
  19. if len(args) >= 2 {
  20. action := args[1]
  21. shelf := itashi.NewFilesystemShelf(itashi.GetDefualtSave())
  22. switch action {
  23. case ADD_TASK:
  24. itashi.AddTaskPrompt(shelf)
  25. os.Exit(0)
  26. case DEL_TASK:
  27. id, err := strconv.Atoi(args[2])
  28. if err != nil {
  29. log.Fatal("ID passed was not a valid integer: ", err)
  30. }
  31. shelf.DeleteTask(id)
  32. os.Exit(0)
  33. case DONE_TASK:
  34. id, err := strconv.Atoi(args[2])
  35. if err != nil {
  36. log.Fatal("ID passed was not a valid integer: ", err)
  37. }
  38. shelf.MarkDone(id)
  39. fmt.Print("よくできた! Good job!\n")
  40. os.Exit(0)
  41. case TIDY_TASK:
  42. fmt.Printf("Shelf tidied, removed %v completed tasks.\n", shelf.Clean())
  43. os.Exit(0)
  44. }
  45. }
  46. fmt.Printf("%+v\n", string(banner))
  47. p := tea.NewProgram(itashi.InitialModel())
  48. if _, err := p.Run(); err != nil {
  49. fmt.Printf("Alas, there's been an error: %v", err)
  50. os.Exit(1)
  51. }
  52. }