gte/cmd/generate-recurring/main.go

52 lines
1.0 KiB
Go
Raw Normal View History

2021-01-31 10:01:03 +01:00
package main
import (
"log"
"os"
2021-02-05 10:04:19 +01:00
"strconv"
2021-01-31 10:01:03 +01:00
2021-05-13 09:47:06 +02:00
"git.ewintr.nl/gte/internal/task"
"git.ewintr.nl/gte/pkg/mstore"
2021-01-31 10:01:03 +01:00
)
func main() {
config := &mstore.ImapConfiguration{
ImapUrl: os.Getenv("IMAP_URL"),
ImapUsername: os.Getenv("IMAP_USERNAME"),
ImapPassword: os.Getenv("IMAP_PASSWORD"),
}
if !config.Valid() {
log.Fatal("please set IMAP_USER, IMAP_PASSWORD, etc environment variables")
}
2021-02-05 10:04:19 +01:00
daysAhead, err := strconv.Atoi(os.Getenv("GTE_DAYS_AHEAD"))
if err != nil {
daysAhead = 0
}
2021-01-31 10:01:03 +01:00
mailStore, err := mstore.ImapConnect(config)
if err != nil {
log.Fatal(err)
}
defer mailStore.Disconnect()
taskRepo := task.NewRepository(mailStore)
tasks, err := taskRepo.FindAll(task.FOLDER_RECURRING)
if err != nil {
log.Fatal(err)
}
2021-02-05 10:04:19 +01:00
rDate := task.Today.AddDays(daysAhead)
2021-01-31 10:01:03 +01:00
for _, t := range tasks {
2021-02-05 10:04:19 +01:00
if t.RecursOn(rDate) {
subject, body, err := t.CreateDueMessage(rDate)
2021-01-31 10:01:03 +01:00
if err != nil {
log.Fatal(err)
}
if err := mailStore.Add(task.FOLDER_PLANNED, subject, body); err != nil {
log.Fatal(err)
}
}
}
}