diff --git a/config.yml b/config.yml new file mode 100644 index 00000000..eac2d2a9 --- /dev/null +++ b/config.yml @@ -0,0 +1,2 @@ +wtf: + refresh_interval: 1 diff --git a/gcal/client.go b/gcal/client.go index 6604f97d..930c9769 100644 --- a/gcal/client.go +++ b/gcal/client.go @@ -92,35 +92,40 @@ func saveToken(file string, token *oauth2.Token) { log.Fatalf("Unable to cache oauth token: %v", err) } defer f.Close() + json.NewEncoder(f).Encode(token) } -func Fetch() *calendar.Events { +func Fetch() (*calendar.Events, error) { ctx := context.Background() b, err := ioutil.ReadFile("./gcal/client_secret.json") if err != nil { - log.Fatalf("Unable to read client secret file: %v", err) + //log.Fatalf("Unable to read client secret file: %v", err) + return nil, err } config, err := google.ConfigFromJSON(b, calendar.CalendarReadonlyScope) if err != nil { - log.Fatalf("Unable to parse client secret file to config: %v", err) + //log.Fatalf("Unable to parse client secret file to config: %v", err) + return nil, err } client := getClient(ctx, config) srv, err := calendar.New(client) if err != nil { - log.Fatalf("Unable to retrieve calendar Client %v", err) + //log.Fatalf("Unable to retrieve calendar Client %v", err) + return nil, err } t := today().Format(time.RFC3339) events, err := srv.Events.List("primary").ShowDeleted(false).SingleEvents(true).TimeMin(t).MaxResults(10).OrderBy("startTime").Do() if err != nil { - log.Fatalf("Unable to retrieve next ten of the user's events. %v", err) + //log.Fatalf("Unable to retrieve next ten of the user's events. %v", err) + return nil, err } - return events + return events, err } func today() time.Time { diff --git a/gcal/widget.go b/gcal/widget.go index cf07d109..90994645 100644 --- a/gcal/widget.go +++ b/gcal/widget.go @@ -34,7 +34,7 @@ func NewWidget() *Widget { /* -------------------- Exported Functions -------------------- */ func (widget *Widget) Refresh() { - events := Fetch() + events, _ := Fetch() widget.View.SetTitle(" 🍿 Calendar ") widget.RefreshedAt = time.Now() @@ -58,6 +58,10 @@ func (widget *Widget) addView() { } func (widget *Widget) contentFrom(events *calendar.Events) string { + if events == nil { + return "" + } + str := "\n" for _, event := range events.Items { diff --git a/wtf.go b/wtf.go index 7f7ab720..752b4d74 100644 --- a/wtf.go +++ b/wtf.go @@ -1,8 +1,10 @@ package main import ( + "fmt" "time" + "github.com/olebedev/config" "github.com/rivo/tview" "github.com/senorprogrammer/wtf/bamboohr" "github.com/senorprogrammer/wtf/gcal" @@ -14,6 +16,15 @@ import ( "github.com/senorprogrammer/wtf/weather" ) +func loadConfig() *config.Config { + cfg, err := config.ParseYamlFile("./config.yml") + if err != nil { + panic(err) + } + + return cfg +} + func refresher(stat *status.Widget, app *tview.Application) { tick := time.NewTicker(1 * time.Second) quit := make(chan struct{}) @@ -30,6 +41,10 @@ func refresher(stat *status.Widget, app *tview.Application) { } func main() { + cfg := loadConfig() + + fmt.Printf("%v\n", cfg) + bamboo := bamboohr.NewWidget() bamboo.Refresh()