/
main.go
110 lines (88 loc) · 1.96 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
package main
import (
"fmt"
"log"
"os"
"time"
"github.com/justincampbell/mylist/Godeps/_workspace/src/github.com/robdimsdale/wl"
wl_logger "github.com/justincampbell/mylist/Godeps/_workspace/src/github.com/robdimsdale/wl/logger"
wl_oauth "github.com/justincampbell/mylist/Godeps/_workspace/src/github.com/robdimsdale/wl/oauth"
)
func main() {
client := wl_oauth.NewClient(
os.Getenv("WL_ACCESS_TOKEN"),
os.Getenv("WL_CLIENT_ID"),
wl.APIURL,
wl_logger.NewLogger(wl_logger.INFO),
)
root, err := client.Root()
if err != nil {
log.Fatal(err)
}
myID := root.UserID
lists, err := client.Lists()
if err != nil {
log.Fatal(err)
}
tasks, err := client.Tasks()
if err != nil {
log.Fatal(err)
}
filtered := []wl.Task{}
for _, task := range tasks {
// Remove completed tasks
if task.Completed {
continue
}
// Remove tasks assigned to someone else
if task.AssigneeID != uint(0) && task.AssigneeID != myID {
continue
}
// Include tasks assigned to me or starred
if task.AssigneeID == myID || task.Starred {
filtered = append(filtered, task)
continue
}
// Include overdue tasks
if !task.DueDate.IsZero() && time.Now().After(task.DueDate) {
filtered = append(filtered, task)
}
}
if len(filtered) == 0 {
return
}
fmt.Printf("✅ %v\n", len(filtered))
var lastList uint
for _, task := range filtered {
// Print the list header
if lastList != task.ListID {
for _, list := range lists {
if list.ID == task.ListID {
fmt.Printf("\n%s\n\n", list.Title)
lastList = list.ID
break
}
}
}
var overdueString string
if !task.DueDate.IsZero() && time.Now().After(task.DueDate) {
overdueString = "⏰ "
}
var assignedString string
if task.AssigneeID == myID {
assignedString = "👤 "
}
var starString string
if task.Starred {
starString = "🌟 "
}
fmt.Printf(
" %s%s%s%s\n",
overdueString,
assignedString,
starString,
task.Title,
)
}
fmt.Println()
}