main.go 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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. //go:embed banner.txt
  15. var banner []byte
  16. func main() {
  17. args := os.Args
  18. if len(args) >= 2 {
  19. action := args[1]
  20. shelf := itashi.NewFilesystemShelf(itashi.GetDefualtSave())
  21. switch action {
  22. case ADD_TASK:
  23. itashi.AddTaskPrompt(shelf)
  24. os.Exit(0)
  25. case DEL_TASK:
  26. id, err := strconv.Atoi(args[2])
  27. if err != nil {
  28. log.Fatal("ID passed was not a valid integer: ", err)
  29. }
  30. shelf.DeleteTask(id)
  31. os.Exit(0)
  32. case DONE_TASK:
  33. id, err := strconv.Atoi(args[2])
  34. if err != nil {
  35. log.Fatal("ID passed was not a valid integer: ", err)
  36. }
  37. shelf.MarkDone(id)
  38. fmt.Print("よくできた! Good job!\n")
  39. os.Exit(0)
  40. }
  41. }
  42. fmt.Printf("%+v\n", string(banner))
  43. p := tea.NewProgram(itashi.InitialModel())
  44. if _, err := p.Run(); err != nil {
  45. fmt.Printf("Alas, there's been an error: %v", err)
  46. os.Exit(1)
  47. }
  48. }