From 176a8210798d36f832de963acd6054f8bb0c4146 Mon Sep 17 00:00:00 2001 From: Chris Cummer Date: Mon, 2 Apr 2018 08:43:42 -0700 Subject: [PATCH] The /wtf directory is now in source control --- .gitignore | 1 - wtf/base_widget.go | 16 ++++++++++++++++ wtf/refresher.go | 25 +++++++++++++++++++++++++ wtf/utils.go | 29 +++++++++++++++++++++++++++++ 4 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 wtf/base_widget.go create mode 100644 wtf/refresher.go create mode 100644 wtf/utils.go 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 +}