From 9dbf5065f2e988a8efbe8b913c54ec7b39b56814 Mon Sep 17 00:00:00 2001 From: Hossein Mehrabi Date: Fri, 8 Jun 2018 02:02:11 +0430 Subject: [PATCH 1/4] merge branch master into i60 --- wtf.go | 74 +++++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 52 insertions(+), 22 deletions(-) diff --git a/wtf.go b/wtf.go index 660e458c..66c79c96 100644 --- a/wtf.go +++ b/wtf.go @@ -155,6 +155,53 @@ var ( version = "dev" ) +func addWidget(app *tview.Application, pages *tview.Pages, widgetName string) { + // Always in alphabetical order + switch widgetName { + case "bamboohr": + Widgets = append(Widgets, bamboohr.NewWidget()) + case "bittrex": + Widgets = append(Widgets, bittrex.NewWidget()) + case "clocks": + Widgets = append(Widgets, clocks.NewWidget()) + case "cmdrunner": + Widgets = append(Widgets, cmdrunner.NewWidget()) + case "cryptolive": + Widgets = append(Widgets, cryptolive.NewWidget()) + case "gcal": + Widgets = append(Widgets, gcal.NewWidget()) + case "git": + Widgets = append(Widgets, git.NewWidget(app, pages)) + case "github": + Widgets = append(Widgets, github.NewWidget(app, pages)) + case "ipinfo": + Widgets = append(Widgets, ipinfo.NewWidget()) + case "jira": + Widgets = append(Widgets, jira.NewWidget()) + case "newrelic": + Widgets = append(Widgets, newrelic.NewWidget()) + case "opsgenie": + Widgets = append(Widgets, opsgenie.NewWidget()) + case "power": + Widgets = append(Widgets, power.NewWidget()) + case "prettyweather": + Widgets = append(Widgets, prettyweather.NewWidget()) + case "security": + Widgets = append(Widgets, security.NewWidget()) + case "status": + Widgets = append(Widgets, status.NewWidget()) + case "system": + Widgets = append(Widgets, system.NewWidget(date, version)) + case "textfile": + Widgets = append(Widgets, textfile.NewWidget(app, pages)) + case "todo": + Widgets = append(Widgets, todo.NewWidget(app, pages)) + case "weather": + Widgets = append(Widgets, weather.NewWidget(app, pages)) + default: + } +} + func makeWidgets(app *tview.Application, pages *tview.Pages) { // Always in alphabetical order bamboohr.Config = Config @@ -179,28 +226,11 @@ func makeWidgets(app *tview.Application, pages *tview.Pages) { weather.Config = Config wtf.Config = Config - // Always in alphabetical order - Widgets = []wtf.Wtfable{ - bamboohr.NewWidget(), - bittrex.NewWidget(), - clocks.NewWidget(), - cmdrunner.NewWidget(), - cryptolive.NewWidget(), - gcal.NewWidget(), - git.NewWidget(app, pages), - github.NewWidget(app, pages), - ipinfo.NewWidget(), - jira.NewWidget(), - newrelic.NewWidget(), - opsgenie.NewWidget(), - power.NewWidget(), - prettyweather.NewWidget(), - security.NewWidget(), - status.NewWidget(), - system.NewWidget(date, version), - textfile.NewWidget(app, pages), - todo.NewWidget(app, pages), - weather.NewWidget(app, pages), + mods, _ := Config.Map("wtf.mods") + for mod := range mods { + if enabled, _ := Config.Bool("wtf.mods." + mod + ".enabled"); enabled { + addWidget(app, pages, mod) + } } FocusTracker = wtf.FocusTracker{ From af98a750f1afa0035eb447125b5ebcac90c4874d Mon Sep 17 00:00:00 2001 From: Hossein Mehrabi Date: Fri, 8 Jun 2018 01:46:13 +0430 Subject: [PATCH 2/4] stop widget's scheduler if the widget disabled after live-reloading --- wtf/scheduler.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/wtf/scheduler.go b/wtf/scheduler.go index b2e7824e..5f0292e7 100644 --- a/wtf/scheduler.go +++ b/wtf/scheduler.go @@ -9,7 +9,7 @@ type Scheduler interface { RefreshInterval() int } -func Schedule(widget Scheduler) { +func Schedule(widget Wtfable) { // Kick off the first refresh and then leave the rest to the timer widget.Refresh() @@ -25,7 +25,12 @@ func Schedule(widget Scheduler) { for { select { case <-tick.C: - widget.Refresh() + if widget.Enabled() { + widget.Refresh() + } else { + tick.Stop() + return + } case <-quit: tick.Stop() return From 75c0362b52f8ab7915bdc6cb035d3d25d1c8e458 Mon Sep 17 00:00:00 2001 From: Hossein Mehrabi Date: Fri, 8 Jun 2018 02:37:13 +0430 Subject: [PATCH 3/4] clear widgets after live-reloading --- wtf.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/wtf.go b/wtf.go index 66c79c96..f0df2b06 100644 --- a/wtf.go +++ b/wtf.go @@ -203,6 +203,8 @@ func addWidget(app *tview.Application, pages *tview.Pages, widgetName string) { } func makeWidgets(app *tview.Application, pages *tview.Pages) { + Widgets = []wtf.Wtfable{} + // Always in alphabetical order bamboohr.Config = Config bittrex.Config = Config From 4fb52856c7051683ea83b52bc15d2efab4351d04 Mon Sep 17 00:00:00 2001 From: Bill Date: Thu, 7 Jun 2018 15:27:56 -0700 Subject: [PATCH 4/4] added basic testing for travis fixed utils_test, had wrong print format --- .travis.yml | 2 ++ wtf_tests/utils_test.go | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 1439159a..b20b9c4a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,3 +8,5 @@ before_install: - test ! -d $GOPATH/src/github.com/senorprogrammer/wtf && mv $TRAVIS_BUILD_DIR $GOPATH/src/github.com/senorprogrammer/wtf || true - export TRAVIS_BUILD_DIR=$HOME/gopath/src/github.com/senorprogrammer/wtf - cd $HOME/gopath/src/github.com/senorprogrammer/wtf + +script: go get ./... && go get github.com/go-test/deep && go test -v github.com/senorprogrammer/wtf/wtf_tests diff --git a/wtf_tests/utils_test.go b/wtf_tests/utils_test.go index 15b0e734..a069301c 100644 --- a/wtf_tests/utils_test.go +++ b/wtf_tests/utils_test.go @@ -74,7 +74,7 @@ func TestToInts(t *testing.T) { actual := ToInts(source) if diff := deep.Equal(expected, actual); diff != nil { - t.Fatalf("Expected %s but got %s", expected, actual) + t.Fatalf("Expected %v but got %v", expected, actual) } }