Start adding DSL

This commit is contained in:
Ian Gulliver
2021-09-11 19:26:51 +00:00
parent c9269718ec
commit 9774c3a0de
3 changed files with 117 additions and 49 deletions

View File

@@ -1,4 +1,4 @@
package asana
package asanaclient
import "bytes"
import "encoding/json"

59
asanarules/rules.go Normal file
View File

@@ -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")
}

13
main.go
View File

@@ -1,10 +1,18 @@
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() {
Every(5 * time.Second).
MyTasks()
Loop()
/*
a := asana.NewClientFromEnv()
me, err := a.GetMe()
@@ -58,4 +66,5 @@ func main() {
})
}
}
*/
}