-
Notifications
You must be signed in to change notification settings - Fork 2
/
deadlines.go
77 lines (69 loc) · 2.16 KB
/
deadlines.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
package view
import (
"fmt"
"os"
"strconv"
"github.com/aidanaden/canvas-sync/internal/pkg/canvas"
"github.com/aidanaden/canvas-sync/internal/pkg/nodes"
"github.com/aidanaden/canvas-sync/internal/pkg/utils"
"github.com/pterm/pterm"
"github.com/spf13/cobra"
"github.com/spf13/viper"
)
func RunViewDeadlines(cmd *cobra.Command, args []string, isPast bool) {
accessToken := fmt.Sprintf("%v", viper.Get("access_token"))
canvasUrl := fmt.Sprintf("%v", viper.Get("canvas_url"))
canvasClient := canvas.NewClient(canvasUrl, accessToken)
if accessToken == "" {
pterm.Error.Printfln("Invalid config, please run 'canvas-sync init'")
os.Exit(1)
}
courses, err := canvasClient.GetActiveEnrolledCourses()
if err != nil {
pterm.Error.Printfln("Failed to get actively enrolled courses: %s", err.Error())
os.Exit(1)
}
var events []nodes.EventNode
if isPast {
events, err = canvasClient.GetRecentCalendarEvents()
if err != nil {
pterm.Error.Printfln("Failed to fetch all recent assignments: %s", err.Error())
os.Exit(1)
}
} else {
events, err = canvasClient.GetIncomingCalendarEvents()
if err != nil {
pterm.Error.Printfln("Failed to fetch all upcoming assignments: %s", err.Error())
os.Exit(1)
}
}
tableData := pterm.TableData{
{"Course", "Assignment name", "Due date", "Points possible"},
}
for _, event := range events {
if event.Plannable.AssignmentPlannableNode != nil {
due, err := utils.SGTfromUTC(event.Plannable.AssignmentPlannableNode.DueAt)
if err != nil {
pterm.Error.Printfln("Error loading assignment due date: %s", err.Error())
continue
}
dueStr := utils.FormatEventDate(*due)
pointsStr := strconv.Itoa(int(event.Plannable.AssignmentPlannableNode.PointsPossible))
var eventCourseCode string
for _, c := range courses {
if c.ID == event.CourseId {
eventCourseCode = c.CourseCode
break
}
}
tableData = append(tableData, []string{
eventCourseCode, event.Plannable.Title, dueStr, pointsStr,
})
}
}
pterm.Println()
if err := pterm.DefaultTable.WithHasHeader().WithData(tableData).Render(); err != nil {
pterm.Error.Printfln("Error rendering assignments: %s", err.Error())
os.Exit(1)
}
}