From 9774c3a0de67b2d8afe0a2cb34e8e1d0e69e508b Mon Sep 17 00:00:00 2001 From: Ian Gulliver Date: Sat, 11 Sep 2021 19:26:51 +0000 Subject: [PATCH] Start adding DSL --- {asana => asanaclient}/client.go | 2 +- asanarules/rules.go | 59 +++++++++++++++++ main.go | 105 +++++++++++++++++-------------- 3 files changed, 117 insertions(+), 49 deletions(-) rename {asana => asanaclient}/client.go (99%) create mode 100644 asanarules/rules.go diff --git a/asana/client.go b/asanaclient/client.go similarity index 99% rename from asana/client.go rename to asanaclient/client.go index e69caa7..77e4d96 100644 --- a/asana/client.go +++ b/asanaclient/client.go @@ -1,4 +1,4 @@ -package asana +package asanaclient import "bytes" import "encoding/json" diff --git a/asanarules/rules.go b/asanarules/rules.go new file mode 100644 index 0000000..c151e9a --- /dev/null +++ b/asanarules/rules.go @@ -0,0 +1,59 @@ +package asanarules + +import "fmt" +import "time" + +type periodic struct { + duration time.Duration + done chan bool +} + +var periodics = []*periodic{} + +func Every(d time.Duration) *periodic { + ret := &periodic{ + duration: d, + done: make(chan bool), + } + + periodics = append(periodics, ret) + + return ret +} + +func Loop() { + for _, periodic := range periodics { + periodic.start() + } + + for _, periodic := range periodics { + periodic.wait() + } +} + +func (p *periodic) MyTasks() *periodic { + return p +} + +func (p *periodic) start() { + go p.loop() +} + +func (p *periodic) wait() { + <-p.done +} + +func (p *periodic) loop() { + ticker := time.NewTicker(p.duration) + + for { + <-ticker.C + p.exec() + } + + close(p.done) +} + +func (p *periodic) exec() { + fmt.Printf("exec\n") +} diff --git a/main.go b/main.go index 83067b6..649a5bf 100644 --- a/main.go +++ b/main.go @@ -1,61 +1,70 @@ package main -import "fmt" +// import "fmt" +import "time" -import "github.com/firestuff/asana-rules/asana" +import . "github.com/firestuff/asana-rules/asanarules" + +// import "github.com/firestuff/asana-rules/asanaclient" func main() { - a := asana.NewClientFromEnv() + Every(5 * time.Second). + MyTasks() - me, err := a.GetMe() - if err != nil { - panic(err) - } + Loop() + /* + a := asana.NewClientFromEnv() - fmt.Printf("User: %s\n", me) - - wrk, err := a.GetWorkspace() - if err != nil { - panic(err) - } - - fmt.Printf("Workspace: %s\n", wrk) - - utl, err := a.GetUserTaskList(me, wrk) - if err != nil { - panic(err) - } - - fmt.Printf("User Task List: %s\n", utl) - - secs, err := a.GetSections(utl) - if err != nil { - panic(err) - } - - fmt.Printf("Sections:\n") - for _, sec := range secs { - fmt.Printf("\t%s\n", sec) - - if sec.Name != "Recently Assigned" { - continue - } - - q := &asana.SearchQuery{ - SectionsAny: []*asana.Section{sec}, - Completed: asana.FALSE, - } - - tasks, err := a.Search(wrk, q) + me, err := a.GetMe() if err != nil { panic(err) } - for _, task := range tasks { - fmt.Printf("\t\t%s\n", task) - a.AddTaskToSection(task, &asana.Section{ - GID: "1200372179004456", - }) + fmt.Printf("User: %s\n", me) + + wrk, err := a.GetWorkspace() + if err != nil { + panic(err) } - } + + fmt.Printf("Workspace: %s\n", wrk) + + utl, err := a.GetUserTaskList(me, wrk) + if err != nil { + panic(err) + } + + fmt.Printf("User Task List: %s\n", utl) + + secs, err := a.GetSections(utl) + if err != nil { + panic(err) + } + + fmt.Printf("Sections:\n") + for _, sec := range secs { + fmt.Printf("\t%s\n", sec) + + if sec.Name != "Recently Assigned" { + continue + } + + q := &asana.SearchQuery{ + SectionsAny: []*asana.Section{sec}, + Completed: asana.FALSE, + } + + tasks, err := a.Search(wrk, q) + if err != nil { + panic(err) + } + + for _, task := range tasks { + fmt.Printf("\t\t%s\n", task) + a.AddTaskToSection(task, &asana.Section{ + GID: "1200372179004456", + }) + } + } + */ }