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.go b/wtf.go index 306c00ff..0a3f16a1 100644 --- a/wtf.go +++ b/wtf.go @@ -155,7 +155,56 @@ 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) { + Widgets = []wtf.Wtfable{} + // Always in alphabetical order bamboohr.Config = Config bittrex.Config = Config @@ -179,28 +228,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{ 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 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) } }