diff --git a/.gitignore b/.gitignore index 385209c4..138cb045 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,2 @@ DS_Store gcal/client_secret.json -wtf diff --git a/wtf/base_widget.go b/wtf/base_widget.go new file mode 100644 index 00000000..81566c6d --- /dev/null +++ b/wtf/base_widget.go @@ -0,0 +1,16 @@ +package wtf + +import ( + //"fmt" + "time" +) + +type BaseWidget struct { + Name string + RefreshedAt time.Time + RefreshInt int +} + +func (widget *BaseWidget) RefreshInterval() int { + return widget.RefreshInt +} diff --git a/wtf/refresher.go b/wtf/refresher.go new file mode 100644 index 00000000..fa5ea9ee --- /dev/null +++ b/wtf/refresher.go @@ -0,0 +1,25 @@ +package wtf + +import ( + "time" +) + +type Refresher interface { + Refresh() + RefreshInterval() int +} + +func Refresh(widget Refresher) { + tick := time.NewTicker(time.Duration(widget.RefreshInterval()) * time.Second) + quit := make(chan struct{}) + + for { + select { + case <-tick.C: + widget.Refresh() + case <-quit: + tick.Stop() + return + } + } +} diff --git a/wtf/utils.go b/wtf/utils.go new file mode 100644 index 00000000..bf36bbe9 --- /dev/null +++ b/wtf/utils.go @@ -0,0 +1,29 @@ +package wtf + +import ( + "fmt" + "io/ioutil" + "os/exec" +) + +func CenterText(str string, width int) string { + return fmt.Sprintf("%[1]*s", -width, fmt.Sprintf("%[1]*s", (width+len(str))/2, str)) +} + +func ExecuteCommand(cmd *exec.Cmd) string { + stdout, err := cmd.StdoutPipe() + if err != nil { + return fmt.Sprintf("A: %v\n", err) + } + + if err := cmd.Start(); err != nil { + return fmt.Sprintf("B: %v\n", err) + } + + var str string + if b, err := ioutil.ReadAll(stdout); err == nil { + str += string(b) + } + + return str +}