github.com/wtfutil/wtf@v0.43.0/app/widget_maker.go (about) 1 package app 2 3 import ( 4 "github.com/olebedev/config" 5 "github.com/rivo/tview" 6 "github.com/wtfutil/wtf/modules/airbrake" 7 "github.com/wtfutil/wtf/modules/asana" 8 "github.com/wtfutil/wtf/modules/azuredevops" 9 "github.com/wtfutil/wtf/modules/bamboohr" 10 "github.com/wtfutil/wtf/modules/bargraph" 11 "github.com/wtfutil/wtf/modules/buildkite" 12 cdsfavorites "github.com/wtfutil/wtf/modules/cds/favorites" 13 cdsqueue "github.com/wtfutil/wtf/modules/cds/queue" 14 cdsstatus "github.com/wtfutil/wtf/modules/cds/status" 15 "github.com/wtfutil/wtf/modules/circleci" 16 "github.com/wtfutil/wtf/modules/clocks" 17 "github.com/wtfutil/wtf/modules/cmdrunner" 18 "github.com/wtfutil/wtf/modules/covid" 19 "github.com/wtfutil/wtf/modules/cryptocurrency/bittrex" 20 "github.com/wtfutil/wtf/modules/cryptocurrency/blockfolio" 21 "github.com/wtfutil/wtf/modules/cryptocurrency/cryptolive" 22 "github.com/wtfutil/wtf/modules/cryptocurrency/mempool" 23 "github.com/wtfutil/wtf/modules/datadog" 24 "github.com/wtfutil/wtf/modules/devto" 25 "github.com/wtfutil/wtf/modules/digitalclock" 26 "github.com/wtfutil/wtf/modules/digitalocean" 27 "github.com/wtfutil/wtf/modules/docker" 28 "github.com/wtfutil/wtf/modules/feedreader" 29 "github.com/wtfutil/wtf/modules/football" 30 "github.com/wtfutil/wtf/modules/gcal" 31 "github.com/wtfutil/wtf/modules/gerrit" 32 "github.com/wtfutil/wtf/modules/git" 33 "github.com/wtfutil/wtf/modules/github" 34 "github.com/wtfutil/wtf/modules/gitlab" 35 "github.com/wtfutil/wtf/modules/gitlabtodo" 36 "github.com/wtfutil/wtf/modules/gitter" 37 "github.com/wtfutil/wtf/modules/googleanalytics" 38 "github.com/wtfutil/wtf/modules/grafana" 39 "github.com/wtfutil/wtf/modules/gspreadsheets" 40 "github.com/wtfutil/wtf/modules/hackernews" 41 "github.com/wtfutil/wtf/modules/healthchecks" 42 "github.com/wtfutil/wtf/modules/hibp" 43 "github.com/wtfutil/wtf/modules/ipaddresses/ipapi" 44 "github.com/wtfutil/wtf/modules/ipaddresses/ipinfo" 45 "github.com/wtfutil/wtf/modules/jenkins" 46 "github.com/wtfutil/wtf/modules/jira" 47 "github.com/wtfutil/wtf/modules/krisinformation" 48 "github.com/wtfutil/wtf/modules/kubernetes" 49 "github.com/wtfutil/wtf/modules/logger" 50 "github.com/wtfutil/wtf/modules/lunarphase" 51 "github.com/wtfutil/wtf/modules/mercurial" 52 "github.com/wtfutil/wtf/modules/nbascore" 53 "github.com/wtfutil/wtf/modules/newrelic" 54 "github.com/wtfutil/wtf/modules/nextbus" 55 "github.com/wtfutil/wtf/modules/opsgenie" 56 "github.com/wtfutil/wtf/modules/pagerduty" 57 "github.com/wtfutil/wtf/modules/pihole" 58 "github.com/wtfutil/wtf/modules/pivotal" 59 "github.com/wtfutil/wtf/modules/pocket" 60 "github.com/wtfutil/wtf/modules/power" 61 "github.com/wtfutil/wtf/modules/progress" 62 "github.com/wtfutil/wtf/modules/resourceusage" 63 "github.com/wtfutil/wtf/modules/rollbar" 64 "github.com/wtfutil/wtf/modules/security" 65 "github.com/wtfutil/wtf/modules/spacex" 66 "github.com/wtfutil/wtf/modules/spotify" 67 "github.com/wtfutil/wtf/modules/spotifyweb" 68 "github.com/wtfutil/wtf/modules/status" 69 "github.com/wtfutil/wtf/modules/steam" 70 "github.com/wtfutil/wtf/modules/stocks/finnhub" 71 "github.com/wtfutil/wtf/modules/stocks/yfinance" 72 "github.com/wtfutil/wtf/modules/subreddit" 73 "github.com/wtfutil/wtf/modules/textfile" 74 "github.com/wtfutil/wtf/modules/todo" 75 "github.com/wtfutil/wtf/modules/todo_plus" 76 "github.com/wtfutil/wtf/modules/transmission" 77 "github.com/wtfutil/wtf/modules/travisci" 78 "github.com/wtfutil/wtf/modules/twitch" 79 "github.com/wtfutil/wtf/modules/twitter" 80 "github.com/wtfutil/wtf/modules/twitterstats" 81 "github.com/wtfutil/wtf/modules/unknown" 82 "github.com/wtfutil/wtf/modules/updown" 83 "github.com/wtfutil/wtf/modules/uptimerobot" 84 "github.com/wtfutil/wtf/modules/urlcheck" 85 "github.com/wtfutil/wtf/modules/victorops" 86 "github.com/wtfutil/wtf/modules/weatherservices/arpansagovau" 87 "github.com/wtfutil/wtf/modules/weatherservices/prettyweather" 88 "github.com/wtfutil/wtf/modules/weatherservices/weather" 89 "github.com/wtfutil/wtf/modules/zendesk" 90 "github.com/wtfutil/wtf/wtf" 91 ) 92 93 // MakeWidget creates and returns instances of widgets 94 func MakeWidget( 95 tviewApp *tview.Application, 96 pages *tview.Pages, 97 moduleName string, 98 config *config.Config, 99 redrawChan chan bool, 100 ) wtf.Wtfable { 101 var widget wtf.Wtfable 102 103 moduleConfig, _ := config.Get("wtf.mods." + moduleName) 104 105 // Don' try to initialize modules that don't exist 106 if moduleConfig == nil { 107 return nil 108 } 109 110 // Don't try to initialize modules that aren't enabled 111 if enabled := moduleConfig.UBool("enabled", false); !enabled { 112 return nil 113 } 114 115 // Always in alphabetical order 116 switch moduleConfig.UString("type", moduleName) { 117 case "airbrake": 118 settings := airbrake.NewSettingsFromYAML(moduleName, moduleConfig, config) 119 widget = airbrake.NewWidget(tviewApp, redrawChan, pages, settings) 120 case "arpansagovau": 121 settings := arpansagovau.NewSettingsFromYAML(moduleName, moduleConfig, config) 122 widget = arpansagovau.NewWidget(tviewApp, redrawChan, settings) 123 case "asana": 124 settings := asana.NewSettingsFromYAML(moduleName, moduleConfig, config) 125 widget = asana.NewWidget(tviewApp, redrawChan, pages, settings) 126 case "azuredevops": 127 settings := azuredevops.NewSettingsFromYAML(moduleName, moduleConfig, config) 128 widget = azuredevops.NewWidget(tviewApp, redrawChan, pages, settings) 129 case "bamboohr": 130 settings := bamboohr.NewSettingsFromYAML(moduleName, moduleConfig, config) 131 widget = bamboohr.NewWidget(tviewApp, redrawChan, settings) 132 case "bargraph": 133 settings := bargraph.NewSettingsFromYAML(moduleName, moduleConfig, config) 134 widget = bargraph.NewWidget(tviewApp, redrawChan, settings) 135 case "bittrex": 136 settings := bittrex.NewSettingsFromYAML(moduleName, moduleConfig, config) 137 widget = bittrex.NewWidget(tviewApp, redrawChan, settings) 138 case "blockfolio": 139 settings := blockfolio.NewSettingsFromYAML(moduleName, moduleConfig, config) 140 widget = blockfolio.NewWidget(tviewApp, redrawChan, settings) 141 case "buildkite": 142 settings := buildkite.NewSettingsFromYAML(moduleName, moduleConfig, config) 143 widget = buildkite.NewWidget(tviewApp, redrawChan, pages, settings) 144 case "cdsFavorites": 145 settings := cdsfavorites.NewSettingsFromYAML(moduleName, moduleConfig, config) 146 widget = cdsfavorites.NewWidget(tviewApp, redrawChan, pages, settings) 147 case "cdsQueue": 148 settings := cdsqueue.NewSettingsFromYAML(moduleName, moduleConfig, config) 149 widget = cdsqueue.NewWidget(tviewApp, redrawChan, pages, settings) 150 case "cdsStatus": 151 settings := cdsstatus.NewSettingsFromYAML(moduleName, moduleConfig, config) 152 widget = cdsstatus.NewWidget(tviewApp, redrawChan, pages, settings) 153 case "circleci": 154 settings := circleci.NewSettingsFromYAML(moduleName, moduleConfig, config) 155 widget = circleci.NewWidget(tviewApp, redrawChan, settings) 156 case "clocks": 157 settings := clocks.NewSettingsFromYAML(moduleName, moduleConfig, config) 158 widget = clocks.NewWidget(tviewApp, redrawChan, settings) 159 case "covid": 160 settings := covid.NewSettingsFromYAML(moduleName, moduleConfig, config) 161 widget = covid.NewWidget(tviewApp, redrawChan, settings) 162 case "cmdrunner": 163 settings := cmdrunner.NewSettingsFromYAML(moduleName, moduleConfig, config) 164 widget = cmdrunner.NewWidget(tviewApp, redrawChan, settings) 165 case "cryptolive": 166 settings := cryptolive.NewSettingsFromYAML(moduleName, moduleConfig, config) 167 widget = cryptolive.NewWidget(tviewApp, redrawChan, settings) 168 case "datadog": 169 settings := datadog.NewSettingsFromYAML(moduleName, moduleConfig, config) 170 widget = datadog.NewWidget(tviewApp, redrawChan, pages, settings) 171 case "devto": 172 settings := devto.NewSettingsFromYAML(moduleName, moduleConfig, config) 173 widget = devto.NewWidget(tviewApp, redrawChan, pages, settings) 174 case "digitalclock": 175 settings := digitalclock.NewSettingsFromYAML(moduleName, moduleConfig, config) 176 widget = digitalclock.NewWidget(tviewApp, redrawChan, settings) 177 case "digitalocean": 178 settings := digitalocean.NewSettingsFromYAML(moduleName, moduleConfig, config) 179 widget = digitalocean.NewWidget(tviewApp, redrawChan, pages, settings) 180 case "docker": 181 settings := docker.NewSettingsFromYAML(moduleName, moduleConfig, config) 182 widget = docker.NewWidget(tviewApp, redrawChan, pages, settings) 183 case "feedreader": 184 settings := feedreader.NewSettingsFromYAML(moduleName, moduleConfig, config) 185 widget = feedreader.NewWidget(tviewApp, redrawChan, pages, settings) 186 case "football": 187 settings := football.NewSettingsFromYAML(moduleName, moduleConfig, config) 188 widget = football.NewWidget(tviewApp, redrawChan, pages, settings) 189 case "gcal": 190 settings := gcal.NewSettingsFromYAML(moduleName, moduleConfig, config) 191 widget = gcal.NewWidget(tviewApp, redrawChan, settings) 192 case "gerrit": 193 settings := gerrit.NewSettingsFromYAML(moduleName, moduleConfig, config) 194 widget = gerrit.NewWidget(tviewApp, redrawChan, pages, settings) 195 case "git": 196 settings := git.NewSettingsFromYAML(moduleName, moduleConfig, config) 197 widget = git.NewWidget(tviewApp, redrawChan, pages, settings) 198 case "github": 199 settings := github.NewSettingsFromYAML(moduleName, moduleConfig, config) 200 widget = github.NewWidget(tviewApp, redrawChan, pages, settings) 201 case "gitlab": 202 settings := gitlab.NewSettingsFromYAML(moduleName, moduleConfig, config) 203 widget = gitlab.NewWidget(tviewApp, redrawChan, pages, settings) 204 case "gitlabtodo": 205 settings := gitlabtodo.NewSettingsFromYAML(moduleName, moduleConfig, config) 206 widget = gitlabtodo.NewWidget(tviewApp, redrawChan, pages, settings) 207 case "gitter": 208 settings := gitter.NewSettingsFromYAML(moduleName, moduleConfig, config) 209 widget = gitter.NewWidget(tviewApp, redrawChan, pages, settings) 210 case "googleanalytics": 211 settings := googleanalytics.NewSettingsFromYAML(moduleName, moduleConfig, config) 212 widget = googleanalytics.NewWidget(tviewApp, redrawChan, settings) 213 case "gspreadsheets": 214 settings := gspreadsheets.NewSettingsFromYAML(moduleName, moduleConfig, config) 215 widget = gspreadsheets.NewWidget(tviewApp, redrawChan, settings) 216 case "grafana": 217 settings := grafana.NewSettingsFromYAML(moduleName, moduleConfig, config) 218 widget = grafana.NewWidget(tviewApp, redrawChan, pages, settings) 219 case "hackernews": 220 settings := hackernews.NewSettingsFromYAML(moduleName, moduleConfig, config) 221 widget = hackernews.NewWidget(tviewApp, redrawChan, pages, settings) 222 case "healthchecks": 223 settings := healthchecks.NewSettingsFromYAML(moduleName, moduleConfig, config) 224 widget = healthchecks.NewWidget(tviewApp, redrawChan, pages, settings) 225 case "hibp": 226 settings := hibp.NewSettingsFromYAML(moduleName, moduleConfig, config) 227 widget = hibp.NewWidget(tviewApp, redrawChan, settings) 228 case "ipapi": 229 settings := ipapi.NewSettingsFromYAML(moduleName, moduleConfig, config) 230 widget = ipapi.NewWidget(tviewApp, redrawChan, settings) 231 case "ipinfo": 232 settings := ipinfo.NewSettingsFromYAML(moduleName, moduleConfig, config) 233 widget = ipinfo.NewWidget(tviewApp, redrawChan, settings) 234 case "jenkins": 235 settings := jenkins.NewSettingsFromYAML(moduleName, moduleConfig, config) 236 widget = jenkins.NewWidget(tviewApp, redrawChan, pages, settings) 237 case "jira": 238 settings := jira.NewSettingsFromYAML(moduleName, moduleConfig, config) 239 widget = jira.NewWidget(tviewApp, redrawChan, pages, settings) 240 case "kubernetes": 241 settings := kubernetes.NewSettingsFromYAML(moduleName, moduleConfig, config) 242 widget = kubernetes.NewWidget(tviewApp, redrawChan, settings) 243 case "krisinformation": 244 settings := krisinformation.NewSettingsFromYAML(moduleName, moduleConfig, config) 245 widget = krisinformation.NewWidget(tviewApp, redrawChan, settings) 246 case "logger": 247 settings := logger.NewSettingsFromYAML(moduleName, moduleConfig, config) 248 widget = logger.NewWidget(tviewApp, redrawChan, settings) 249 case "lunarphase": 250 settings := lunarphase.NewSettingsFromYAML(moduleName, moduleConfig, config) 251 widget = lunarphase.NewWidget(tviewApp, redrawChan, pages, settings) 252 case "mercurial": 253 settings := mercurial.NewSettingsFromYAML(moduleName, moduleConfig, config) 254 widget = mercurial.NewWidget(tviewApp, redrawChan, pages, settings) 255 case "mempool": 256 settings := mempool.NewSettingsFromYAML(moduleName, moduleConfig, config) 257 widget = mempool.NewWidget(tviewApp, redrawChan, pages, settings) 258 case "nbascore": 259 settings := nbascore.NewSettingsFromYAML(moduleName, moduleConfig, config) 260 widget = nbascore.NewWidget(tviewApp, redrawChan, pages, settings) 261 case "newrelic": 262 settings := newrelic.NewSettingsFromYAML(moduleName, moduleConfig, config) 263 widget = newrelic.NewWidget(tviewApp, redrawChan, pages, settings) 264 case "nextbus": 265 settings := nextbus.NewSettingsFromYAML(moduleName, moduleConfig, config) 266 widget = nextbus.NewWidget(tviewApp, redrawChan, pages, settings) 267 case "opsgenie": 268 settings := opsgenie.NewSettingsFromYAML(moduleName, moduleConfig, config) 269 widget = opsgenie.NewWidget(tviewApp, redrawChan, settings) 270 case "pagerduty": 271 settings := pagerduty.NewSettingsFromYAML(moduleName, moduleConfig, config) 272 widget = pagerduty.NewWidget(tviewApp, redrawChan, settings) 273 case "pihole": 274 settings := pihole.NewSettingsFromYAML(moduleName, moduleConfig, config) 275 widget = pihole.NewWidget(tviewApp, redrawChan, pages, settings) 276 case "power": 277 settings := power.NewSettingsFromYAML(moduleName, moduleConfig, config) 278 widget = power.NewWidget(tviewApp, redrawChan, settings) 279 case "prettyweather": 280 settings := prettyweather.NewSettingsFromYAML(moduleName, moduleConfig, config) 281 widget = prettyweather.NewWidget(tviewApp, redrawChan, settings) 282 case "progress": 283 settings := progress.NewSettingsFromYAML(moduleName, moduleConfig, config) 284 widget = progress.NewWidget(tviewApp, redrawChan, settings) 285 case "pocket": 286 settings := pocket.NewSettingsFromYAML(moduleName, moduleConfig, config) 287 widget = pocket.NewWidget(tviewApp, redrawChan, pages, settings) 288 case "resourceusage": 289 settings := resourceusage.NewSettingsFromYAML(moduleName, moduleConfig, config) 290 widget = resourceusage.NewWidget(tviewApp, redrawChan, settings) 291 case "rollbar": 292 settings := rollbar.NewSettingsFromYAML(moduleName, moduleConfig, config) 293 widget = rollbar.NewWidget(tviewApp, redrawChan, pages, settings) 294 case "security": 295 settings := security.NewSettingsFromYAML(moduleName, moduleConfig, config) 296 widget = security.NewWidget(tviewApp, redrawChan, settings) 297 case "spacex": 298 settings := spacex.NewSettingsFromYAML(moduleName, moduleConfig, config) 299 widget = spacex.NewWidget(tviewApp, redrawChan, settings) 300 case "spotify": 301 settings := spotify.NewSettingsFromYAML(moduleName, moduleConfig, config) 302 widget = spotify.NewWidget(tviewApp, redrawChan, pages, settings) 303 case "spotifyweb": 304 settings := spotifyweb.NewSettingsFromYAML(moduleName, moduleConfig, config) 305 widget = spotifyweb.NewWidget(tviewApp, redrawChan, pages, settings) 306 case "status": 307 settings := status.NewSettingsFromYAML(moduleName, moduleConfig, config) 308 widget = status.NewWidget(tviewApp, redrawChan, settings) 309 case "steam": 310 settings := steam.NewSettingsFromYAML(moduleName, moduleConfig, config) 311 widget = steam.NewWidget(tviewApp, redrawChan, pages, settings) 312 case "subreddit": 313 settings := subreddit.NewSettingsFromYAML(moduleName, moduleConfig, config) 314 widget = subreddit.NewWidget(tviewApp, redrawChan, pages, settings) 315 case "textfile": 316 settings := textfile.NewSettingsFromYAML(moduleName, moduleConfig, config) 317 widget = textfile.NewWidget(tviewApp, redrawChan, pages, settings) 318 case "todo": 319 settings := todo.NewSettingsFromYAML(moduleName, moduleConfig, config) 320 widget = todo.NewWidget(tviewApp, redrawChan, pages, settings) 321 case "todo_plus": 322 settings := todo_plus.NewSettingsFromYAML(moduleName, moduleConfig, config) 323 widget = todo_plus.NewWidget(tviewApp, redrawChan, pages, settings) 324 case "todoist": 325 settings := todo_plus.FromTodoist(moduleName, moduleConfig, config) 326 widget = todo_plus.NewWidget(tviewApp, redrawChan, pages, settings) 327 case "transmission": 328 settings := transmission.NewSettingsFromYAML(moduleName, moduleConfig, config) 329 widget = transmission.NewWidget(tviewApp, redrawChan, pages, settings) 330 case "travisci": 331 settings := travisci.NewSettingsFromYAML(moduleName, moduleConfig, config) 332 widget = travisci.NewWidget(tviewApp, redrawChan, pages, settings) 333 case "trello": 334 settings := todo_plus.FromTrello(moduleName, moduleConfig, config) 335 widget = todo_plus.NewWidget(tviewApp, redrawChan, pages, settings) 336 case "twitch": 337 settings := twitch.NewSettingsFromYAML(moduleName, moduleConfig, config) 338 widget = twitch.NewWidget(tviewApp, redrawChan, pages, settings) 339 case "twitter": 340 settings := twitter.NewSettingsFromYAML(moduleName, moduleConfig, config) 341 widget = twitter.NewWidget(tviewApp, redrawChan, pages, settings) 342 case "twitterstats": 343 settings := twitterstats.NewSettingsFromYAML(moduleName, moduleConfig, config) 344 widget = twitterstats.NewWidget(tviewApp, redrawChan, pages, settings) 345 case "updown": 346 settings := updown.NewSettingsFromYAML(moduleName, moduleConfig, config) 347 widget = updown.NewWidget(tviewApp, redrawChan, pages, settings) 348 case "uptimerobot": 349 settings := uptimerobot.NewSettingsFromYAML(moduleName, moduleConfig, config) 350 widget = uptimerobot.NewWidget(tviewApp, redrawChan, pages, settings) 351 case "urlcheck": 352 settings := urlcheck.NewSettingsFromYAML(moduleName, moduleConfig, config) 353 widget = urlcheck.NewWidget(tviewApp, redrawChan, settings) 354 case "victorops": 355 settings := victorops.NewSettingsFromYAML(moduleName, moduleConfig, config) 356 widget = victorops.NewWidget(tviewApp, redrawChan, settings) 357 case "weather": 358 settings := weather.NewSettingsFromYAML(moduleName, moduleConfig, config) 359 widget = weather.NewWidget(tviewApp, redrawChan, pages, settings) 360 case "zendesk": 361 settings := zendesk.NewSettingsFromYAML(moduleName, moduleConfig, config) 362 widget = zendesk.NewWidget(tviewApp, redrawChan, pages, settings) 363 case "pivotal": 364 settings := pivotal.NewSettingsFromYAML(moduleName, moduleConfig, config) 365 widget = pivotal.NewWidget(tviewApp, redrawChan, pages, settings) 366 case "finnhub": 367 settings := finnhub.NewSettingsFromYAML(moduleName, moduleConfig, config) 368 widget = finnhub.NewWidget(tviewApp, redrawChan, settings) 369 case "yfinance": 370 settings := yfinance.NewSettingsFromYAML(moduleName, moduleConfig, config) 371 widget = yfinance.NewWidget(tviewApp, redrawChan, settings) 372 default: 373 settings := unknown.NewSettingsFromYAML(moduleName, moduleConfig, config) 374 widget = unknown.NewWidget(tviewApp, redrawChan, settings) 375 } 376 377 return widget 378 } 379 380 // MakeWidgets creates and returns a collection of enabled widgets 381 func MakeWidgets(tviewApp *tview.Application, pages *tview.Pages, config *config.Config, redrawChan chan bool) []wtf.Wtfable { 382 var widgets []wtf.Wtfable 383 384 moduleNames, _ := config.Map("wtf.mods") 385 386 for moduleName := range moduleNames { 387 widget := MakeWidget(tviewApp, pages, moduleName, config, redrawChan) 388 389 if widget != nil { 390 widgets = append(widgets, widget) 391 } 392 } 393 394 return widgets 395 }