mirror of
https://github.com/taigrr/wtf
synced 2025-01-18 04:03:14 -08:00
merge
This commit is contained in:
commit
c44a0773cb
@ -217,6 +217,34 @@
|
|||||||
"name": "Jagdeep Singh",
|
"name": "Jagdeep Singh",
|
||||||
"avatar_url": "https://avatars3.githubusercontent.com/u/3717137?v=4",
|
"avatar_url": "https://avatars3.githubusercontent.com/u/3717137?v=4",
|
||||||
"profile": "https://jagdeep.me",
|
"profile": "https://jagdeep.me",
|
||||||
|
"contributions": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "darkSasori",
|
||||||
|
"name": "Lineu Felipe",
|
||||||
|
"avatar_url": "https://avatars0.githubusercontent.com/u/889171?v=4",
|
||||||
|
"profile": "https://github.com/darkSasori",
|
||||||
|
"contributions": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "kvj",
|
||||||
|
"name": "Konstantin",
|
||||||
|
"avatar_url": "https://avatars2.githubusercontent.com/u/159124?v=4",
|
||||||
|
"profile": "https://github.com/kvj",
|
||||||
|
"contributions": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "brendano86",
|
||||||
|
"name": "Brendan O'Leary",
|
||||||
|
"avatar_url": "https://avatars2.githubusercontent.com/u/6044920?v=4",
|
||||||
|
"profile": "http://www.brendanoleary.com",
|
||||||
|
"contributions": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "bertl4398",
|
||||||
|
"name": "bertl4398",
|
||||||
|
"avatar_url": "https://avatars2.githubusercontent.com/u/1226441?v=4",
|
||||||
|
"profile": "https://github.com/bertl4398",
|
||||||
"contributions": [
|
"contributions": [
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
2
.gitignore
vendored
2
.gitignore
vendored
@ -16,6 +16,8 @@
|
|||||||
.DS_Store
|
.DS_Store
|
||||||
gcal/client_secret.json
|
gcal/client_secret.json
|
||||||
gspreadsheets/client_secret.json
|
gspreadsheets/client_secret.json
|
||||||
|
profile.pdf
|
||||||
|
|
||||||
#intellij idea
|
#intellij idea
|
||||||
.idea/
|
.idea/
|
||||||
|
|
||||||
|
30
Gopkg.lock
generated
30
Gopkg.lock
generated
@ -4,8 +4,8 @@
|
|||||||
[[projects]]
|
[[projects]]
|
||||||
name = "cloud.google.com/go"
|
name = "cloud.google.com/go"
|
||||||
packages = ["compute/metadata"]
|
packages = ["compute/metadata"]
|
||||||
revision = "777200caa7fb8936aed0f12b1fd79af64cc83ec9"
|
revision = "aad3f485ee528456e0768f20397b4d9dd941e755"
|
||||||
version = "v0.24.0"
|
version = "v0.25.0"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
branch = "master"
|
branch = "master"
|
||||||
@ -25,6 +25,12 @@
|
|||||||
packages = ["."]
|
packages = ["."]
|
||||||
revision = "6a9abf92e34f4de62ac671caee3143f10b98892d"
|
revision = "6a9abf92e34f4de62ac671caee3143f10b98892d"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
branch = "master"
|
||||||
|
name = "github.com/darkSasori/todoist"
|
||||||
|
packages = ["."]
|
||||||
|
revision = "ec6b38b374ab9c60cc9716d2083ae66eb9383d03"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
name = "github.com/davecgh/go-spew"
|
name = "github.com/davecgh/go-spew"
|
||||||
packages = ["spew"]
|
packages = ["spew"]
|
||||||
@ -38,13 +44,13 @@
|
|||||||
revision = "b23993cbb6353f0e6aa98d0ee318a34728f628b9"
|
revision = "b23993cbb6353f0e6aa98d0ee318a34728f628b9"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
|
branch = "master"
|
||||||
name = "github.com/gdamore/tcell"
|
name = "github.com/gdamore/tcell"
|
||||||
packages = [
|
packages = [
|
||||||
".",
|
".",
|
||||||
"terminfo"
|
"terminfo"
|
||||||
]
|
]
|
||||||
revision = "061d51a604c546b48e92253cb65190d76cecf4c6"
|
revision = "de7e78efa4a71b3f36c7154989c529dbdf9ae623"
|
||||||
version = "v1.0.0"
|
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
name = "github.com/golang/protobuf"
|
name = "github.com/golang/protobuf"
|
||||||
@ -56,7 +62,7 @@
|
|||||||
branch = "master"
|
branch = "master"
|
||||||
name = "github.com/google/go-github"
|
name = "github.com/google/go-github"
|
||||||
packages = ["github"]
|
packages = ["github"]
|
||||||
revision = "60d040d2dafa18fa3e86cbf22fbc3208ef9ef1e0"
|
revision = "c0b63e2f9bb198baf328c8abf1ddcbe05ff9427e"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
branch = "master"
|
branch = "master"
|
||||||
@ -94,6 +100,12 @@
|
|||||||
revision = "645ef00459ed84a119197bfb8d8205042c6df63d"
|
revision = "645ef00459ed84a119197bfb8d8205042c6df63d"
|
||||||
version = "v0.8.0"
|
version = "v0.8.0"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
name = "github.com/pkg/profile"
|
||||||
|
packages = ["."]
|
||||||
|
revision = "5b67d428864e92711fcbd2f8629456121a56d91f"
|
||||||
|
version = "v1.2.1"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
name = "github.com/pmezard/go-difflib"
|
name = "github.com/pmezard/go-difflib"
|
||||||
packages = ["difflib"]
|
packages = ["difflib"]
|
||||||
@ -110,7 +122,7 @@
|
|||||||
branch = "master"
|
branch = "master"
|
||||||
name = "github.com/rivo/tview"
|
name = "github.com/rivo/tview"
|
||||||
packages = ["."]
|
packages = ["."]
|
||||||
revision = "83483397e826c343edb7b8c1f33fb7983dda9fc5"
|
revision = "c33dd0cf8ef840e1c8905c838d5b1ce93050a825"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
name = "github.com/stretchr/testify"
|
name = "github.com/stretchr/testify"
|
||||||
@ -122,7 +134,7 @@
|
|||||||
branch = "master"
|
branch = "master"
|
||||||
name = "github.com/xanzy/go-gitlab"
|
name = "github.com/xanzy/go-gitlab"
|
||||||
packages = ["."]
|
packages = ["."]
|
||||||
revision = "6ada444068f460636db26ca0dd66cf2aa518fa8f"
|
revision = "fb3ece09ef3e80cfa5c1e52dc75fcfb56c12e026"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
branch = "master"
|
branch = "master"
|
||||||
@ -143,7 +155,7 @@
|
|||||||
"context",
|
"context",
|
||||||
"context/ctxhttp"
|
"context/ctxhttp"
|
||||||
]
|
]
|
||||||
revision = "e514e69ffb8bc3c76a71ae40de0118d794855992"
|
revision = "8887df42c721e930089d31b28391090a10a497d7"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
branch = "master"
|
branch = "master"
|
||||||
@ -179,7 +191,7 @@
|
|||||||
"googleapi/internal/uritemplates",
|
"googleapi/internal/uritemplates",
|
||||||
"sheets/v4"
|
"sheets/v4"
|
||||||
]
|
]
|
||||||
revision = "082d671a2a341aa205b22b580fa69747dcc3cdc8"
|
revision = "efcb5f25ac56eae06c8b5672456c0b7767522685"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
name = "google.golang.org/appengine"
|
name = "google.golang.org/appengine"
|
||||||
|
24
Gopkg.toml
24
Gopkg.toml
@ -31,11 +31,11 @@
|
|||||||
|
|
||||||
[[constraint]]
|
[[constraint]]
|
||||||
name = "github.com/gdamore/tcell"
|
name = "github.com/gdamore/tcell"
|
||||||
version = "1.0.0"
|
branch = "master"
|
||||||
|
|
||||||
[[constraint]]
|
#[[constraint]]
|
||||||
name = "github.com/go-test/deep"
|
#name = "github.com/go-test/deep"
|
||||||
version = "1.0.1"
|
#version = "1.0.1"
|
||||||
|
|
||||||
[[constraint]]
|
[[constraint]]
|
||||||
name = "github.com/google/go-github"
|
name = "github.com/google/go-github"
|
||||||
@ -54,36 +54,40 @@
|
|||||||
version = "1.4.0"
|
version = "1.4.0"
|
||||||
|
|
||||||
[[constraint]]
|
[[constraint]]
|
||||||
branch = "master"
|
|
||||||
name = "github.com/olebedev/config"
|
name = "github.com/olebedev/config"
|
||||||
|
branch = "master"
|
||||||
|
|
||||||
[[constraint]]
|
[[constraint]]
|
||||||
name = "github.com/radovskyb/watcher"
|
name = "github.com/radovskyb/watcher"
|
||||||
version = "1.0.2"
|
version = "1.0.2"
|
||||||
|
|
||||||
[[constraint]]
|
[[constraint]]
|
||||||
branch = "master"
|
|
||||||
name = "github.com/rivo/tview"
|
name = "github.com/rivo/tview"
|
||||||
|
branch = "master"
|
||||||
|
|
||||||
[[constraint]]
|
[[constraint]]
|
||||||
branch = "master"
|
|
||||||
name = "github.com/yfronto/newrelic"
|
name = "github.com/yfronto/newrelic"
|
||||||
|
branch = "master"
|
||||||
|
|
||||||
[[constraint]]
|
[[constraint]]
|
||||||
branch = "master"
|
|
||||||
name = "golang.org/x/oauth2"
|
name = "golang.org/x/oauth2"
|
||||||
|
branch = "master"
|
||||||
|
|
||||||
[[constraint]]
|
[[constraint]]
|
||||||
branch = "master"
|
|
||||||
name = "google.golang.org/api"
|
name = "google.golang.org/api"
|
||||||
|
branch = "master"
|
||||||
|
|
||||||
[[constraint]]
|
[[constraint]]
|
||||||
name = "gopkg.in/yaml.v2"
|
name = "gopkg.in/yaml.v2"
|
||||||
version = "2.2.1"
|
version = "2.2.1"
|
||||||
|
|
||||||
[[constraint]]
|
[[constraint]]
|
||||||
branch = "master"
|
|
||||||
name = "github.com/adlio/trello"
|
name = "github.com/adlio/trello"
|
||||||
|
branch = "master"
|
||||||
|
|
||||||
|
[[constraint]]
|
||||||
|
name = "github.com/darkSasori/todoist"
|
||||||
|
branch = "master"
|
||||||
|
|
||||||
[prune]
|
[prune]
|
||||||
go-tests = true
|
go-tests = true
|
||||||
|
7
Makefile
7
Makefile
@ -1,4 +1,4 @@
|
|||||||
.PHONY: contrib_check dependencies install run
|
.PHONY: contrib_check dependencies install run size
|
||||||
|
|
||||||
build:
|
build:
|
||||||
go build -o bin/wtf
|
go build -o bin/wtf
|
||||||
@ -8,8 +8,11 @@ contrib_check:
|
|||||||
|
|
||||||
install:
|
install:
|
||||||
go clean
|
go clean
|
||||||
go install -ldflags="-X main.version=$(shell git describe --always --abbrev=6) -X main.date=$(shell date +%FT%T%z)"
|
go install -ldflags="-s -w -X main.version=$(shell git describe --always --abbrev=6) -X main.date=$(shell date +%FT%T%z)"
|
||||||
which wtf
|
which wtf
|
||||||
|
|
||||||
run: build
|
run: build
|
||||||
bin/wtf
|
bin/wtf
|
||||||
|
|
||||||
|
size:
|
||||||
|
loc --exclude vendor/ _sample_configs/ _site/ docs/ Makefile *.md *.toml
|
||||||
|
@ -55,7 +55,7 @@ Thanks goes to these wonderful people:
|
|||||||
| [<img src="https://avatars2.githubusercontent.com/u/9014288?v=4" width="48px;"/><br /><sub><b>baustinanki</b></sub>](https://github.com/baustinanki)<br /> | [<img src="https://avatars0.githubusercontent.com/u/371475?v=4" width="48px;"/><br /><sub><b>lucus lee</b></sub>](https://github.com/lixin9311)<br /> | [<img src="https://avatars1.githubusercontent.com/u/7537841?v=4" width="48px;"/><br /><sub><b>Mike Lloyd</b></sub>](https://github.com/mxplusb)<br /> | [<img src="https://avatars3.githubusercontent.com/u/10998?v=4" width="48px;"/><br /><sub><b>Sergio Rubio</b></sub>](http://rubiojr.rbel.co)<br /> | [<img src="https://avatars3.githubusercontent.com/u/17374492?v=4" width="48px;"/><br /><sub><b>Farhad Farahi</b></sub>](https://github.com/FarhadF)<br /> | [<img src="https://avatars1.githubusercontent.com/u/634604?v=4" width="48px;"/><br /><sub><b>Lasantha Kularatne</b></sub>](http://lasantha.blogspot.com/)<br /> | [<img src="https://avatars1.githubusercontent.com/u/823331?v=4" width="48px;"/><br /><sub><b>Mark Old</b></sub>](https://github.com/dlom)<br /> |
|
| [<img src="https://avatars2.githubusercontent.com/u/9014288?v=4" width="48px;"/><br /><sub><b>baustinanki</b></sub>](https://github.com/baustinanki)<br /> | [<img src="https://avatars0.githubusercontent.com/u/371475?v=4" width="48px;"/><br /><sub><b>lucus lee</b></sub>](https://github.com/lixin9311)<br /> | [<img src="https://avatars1.githubusercontent.com/u/7537841?v=4" width="48px;"/><br /><sub><b>Mike Lloyd</b></sub>](https://github.com/mxplusb)<br /> | [<img src="https://avatars3.githubusercontent.com/u/10998?v=4" width="48px;"/><br /><sub><b>Sergio Rubio</b></sub>](http://rubiojr.rbel.co)<br /> | [<img src="https://avatars3.githubusercontent.com/u/17374492?v=4" width="48px;"/><br /><sub><b>Farhad Farahi</b></sub>](https://github.com/FarhadF)<br /> | [<img src="https://avatars1.githubusercontent.com/u/634604?v=4" width="48px;"/><br /><sub><b>Lasantha Kularatne</b></sub>](http://lasantha.blogspot.com/)<br /> | [<img src="https://avatars1.githubusercontent.com/u/823331?v=4" width="48px;"/><br /><sub><b>Mark Old</b></sub>](https://github.com/dlom)<br /> |
|
||||||
| [<img src="https://avatars0.githubusercontent.com/u/5546718?v=4" width="48px;"/><br /><sub><b>flw</b></sub>](http://flw.tools/)<br /> | [<img src="https://avatars0.githubusercontent.com/u/6024927?v=4" width="48px;"/><br /><sub><b>David Barda</b></sub>](https://github.com/davebarda)<br /> | [<img src="https://avatars2.githubusercontent.com/u/4261980?v=4" width="48px;"/><br /><sub><b>Geoff Lee</b></sub>](https://github.com/matrinox)<br /> | [<img src="https://avatars3.githubusercontent.com/u/1022918?v=4" width="48px;"/><br /><sub><b>George Opritescu</b></sub>](http://international.github.io)<br /> | [<img src="https://avatars3.githubusercontent.com/u/497310?v=4" width="48px;"/><br /><sub><b>Grazfather</b></sub>](https://twitter.com/Grazfather)<br /> | [<img src="https://avatars2.githubusercontent.com/u/1691120?v=4" width="48px;"/><br /><sub><b>Michael Cordell</b></sub>](http://www.mikecordell.com/)<br /> | [<img src="https://avatars2.githubusercontent.com/u/1215497?v=4" width="48px;"/><br /><sub><b>Patrick José Pereira</b></sub>](http://patrick.ibexcps.com)<br /> |
|
| [<img src="https://avatars0.githubusercontent.com/u/5546718?v=4" width="48px;"/><br /><sub><b>flw</b></sub>](http://flw.tools/)<br /> | [<img src="https://avatars0.githubusercontent.com/u/6024927?v=4" width="48px;"/><br /><sub><b>David Barda</b></sub>](https://github.com/davebarda)<br /> | [<img src="https://avatars2.githubusercontent.com/u/4261980?v=4" width="48px;"/><br /><sub><b>Geoff Lee</b></sub>](https://github.com/matrinox)<br /> | [<img src="https://avatars3.githubusercontent.com/u/1022918?v=4" width="48px;"/><br /><sub><b>George Opritescu</b></sub>](http://international.github.io)<br /> | [<img src="https://avatars3.githubusercontent.com/u/497310?v=4" width="48px;"/><br /><sub><b>Grazfather</b></sub>](https://twitter.com/Grazfather)<br /> | [<img src="https://avatars2.githubusercontent.com/u/1691120?v=4" width="48px;"/><br /><sub><b>Michael Cordell</b></sub>](http://www.mikecordell.com/)<br /> | [<img src="https://avatars2.githubusercontent.com/u/1215497?v=4" width="48px;"/><br /><sub><b>Patrick José Pereira</b></sub>](http://patrick.ibexcps.com)<br /> |
|
||||||
| [<img src="https://avatars2.githubusercontent.com/u/1483092?v=4" width="48px;"/><br /><sub><b>sherod taylor</b></sub>](https://github.com/sherodtaylor)<br /> | [<img src="https://avatars2.githubusercontent.com/u/3062663?v=4" width="48px;"/><br /><sub><b>Andrew Scott</b></sub>](http://cogentia.io)<br /> | [<img src="https://avatars2.githubusercontent.com/u/3252403?v=4" width="48px;"/><br /><sub><b>Anand Sudhir Prayaga</b></sub>](https://github.com/anandsudhir)<br /> | [<img src="https://avatars1.githubusercontent.com/u/12018440?v=4" width="48px;"/><br /><sub><b>Lassi Piironen</b></sub>](https://github.com/lsipii)<br /> | [<img src="https://avatars0.githubusercontent.com/u/14799210?v=4" width="48px;"/><br /><sub><b>BlackWebWolf</b></sub>](https://github.com/BlackWebWolf)<br /> | [<img src="https://avatars0.githubusercontent.com/u/1894885?v=4" width="48px;"/><br /><sub><b>andrewzolotukhin</b></sub>](https://github.com/andrewzolotukhin)<br /> | [<img src="https://avatars1.githubusercontent.com/u/8568280?v=4" width="48px;"/><br /><sub><b>Leon Stigter</b></sub>](https://retgits.github.io)<br /> |
|
| [<img src="https://avatars2.githubusercontent.com/u/1483092?v=4" width="48px;"/><br /><sub><b>sherod taylor</b></sub>](https://github.com/sherodtaylor)<br /> | [<img src="https://avatars2.githubusercontent.com/u/3062663?v=4" width="48px;"/><br /><sub><b>Andrew Scott</b></sub>](http://cogentia.io)<br /> | [<img src="https://avatars2.githubusercontent.com/u/3252403?v=4" width="48px;"/><br /><sub><b>Anand Sudhir Prayaga</b></sub>](https://github.com/anandsudhir)<br /> | [<img src="https://avatars1.githubusercontent.com/u/12018440?v=4" width="48px;"/><br /><sub><b>Lassi Piironen</b></sub>](https://github.com/lsipii)<br /> | [<img src="https://avatars0.githubusercontent.com/u/14799210?v=4" width="48px;"/><br /><sub><b>BlackWebWolf</b></sub>](https://github.com/BlackWebWolf)<br /> | [<img src="https://avatars0.githubusercontent.com/u/1894885?v=4" width="48px;"/><br /><sub><b>andrewzolotukhin</b></sub>](https://github.com/andrewzolotukhin)<br /> | [<img src="https://avatars1.githubusercontent.com/u/8568280?v=4" width="48px;"/><br /><sub><b>Leon Stigter</b></sub>](https://retgits.github.io)<br /> |
|
||||||
| [<img src="https://avatars3.githubusercontent.com/u/21756?v=4" width="48px;"/><br /><sub><b>Amr Tamimi</b></sub>](https://tamimi.se)<br /> | [<img src="https://avatars3.githubusercontent.com/u/3717137?v=4" width="48px;"/><br /><sub><b>Jagdeep Singh</b></sub>](https://jagdeep.me)<br /> |
|
| [<img src="https://avatars3.githubusercontent.com/u/21756?v=4" width="48px;"/><br /><sub><b>Amr Tamimi</b></sub>](https://tamimi.se)<br /> | [<img src="https://avatars3.githubusercontent.com/u/3717137?v=4" width="48px;"/><br /><sub><b>Jagdeep Singh</b></sub>](https://jagdeep.me)<br /> | [<img src="https://avatars0.githubusercontent.com/u/889171?v=4" width="48px;"/><br /><sub><b>Lineu Felipe</b></sub>](https://github.com/darkSasori)<br /> | [<img src="https://avatars2.githubusercontent.com/u/159124?v=4" width="48px;"/><br /><sub><b>Konstantin</b></sub>](https://github.com/kvj)<br /> | [<img src="https://avatars2.githubusercontent.com/u/6044920?v=4" width="48px;"/><br /><sub><b>Brendan O'Leary</b></sub>](http://www.brendanoleary.com)<br /> | [<img src="https://avatars2.githubusercontent.com/u/1226441?v=4" width="48px;"/><br /><sub><b>bertl4398</b></sub>](https://github.com/bertl4398)<br /> |
|
||||||
<!-- ALL-CONTRIBUTORS-LIST:END -->
|
<!-- ALL-CONTRIBUTORS-LIST:END -->
|
||||||
|
|
||||||
This project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!
|
This project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!
|
||||||
|
@ -203,10 +203,12 @@ wtf:
|
|||||||
width: 1
|
width: 1
|
||||||
refreshInterval: 3600
|
refreshInterval: 3600
|
||||||
weather:
|
weather:
|
||||||
|
apiKey: [YOUR API KEY]
|
||||||
# From http://openweathermap.org/help/city_list.txt
|
# From http://openweathermap.org/help/city_list.txt
|
||||||
cityids:
|
cityids:
|
||||||
- 3370352
|
- 3370352
|
||||||
- 1283240
|
- 1283240
|
||||||
|
WTF_OWM_API_KEY: [YOUR API KEY]
|
||||||
colors:
|
colors:
|
||||||
current: "lightblue"
|
current: "lightblue"
|
||||||
enabled: true
|
enabled: true
|
||||||
|
@ -55,10 +55,12 @@ gerrit:
|
|||||||
height: 2
|
height: 2
|
||||||
width: 2
|
width: 2
|
||||||
refreshInterval: 300
|
refreshInterval: 300
|
||||||
|
domain: https://gerrit-review.googlesource.com
|
||||||
projects:
|
projects:
|
||||||
- org/test-project"
|
- org/test-project"
|
||||||
- dotfiles
|
- dotfiles
|
||||||
username: "myname"
|
username: "myname"
|
||||||
|
verifyServerCertificate: false
|
||||||
```
|
```
|
||||||
|
|
||||||
### Attributes
|
### Attributes
|
||||||
@ -75,7 +77,7 @@ How often, in seconds, this module will update its data. <br />
|
|||||||
Values: A positive integer, `0..n`.
|
Values: A positive integer, `0..n`.
|
||||||
|
|
||||||
`domain` <br />
|
`domain` <br />
|
||||||
_Optional_. Your Gerrit corporate domain. <br />
|
Your Gerrit corporate domain. <br />
|
||||||
Values: A valid URI.
|
Values: A valid URI.
|
||||||
|
|
||||||
`projects` <br />
|
`projects` <br />
|
||||||
|
@ -61,6 +61,7 @@ wtf/github/
|
|||||||
```yaml
|
```yaml
|
||||||
github:
|
github:
|
||||||
enabled: true
|
enabled: true
|
||||||
|
enableStatus: true
|
||||||
position:
|
position:
|
||||||
top: 2
|
top: 2
|
||||||
left: 3
|
left: 3
|
||||||
@ -79,6 +80,11 @@ github:
|
|||||||
Determines whether or not this module is executed and if its data displayed onscreen. <br />
|
Determines whether or not this module is executed and if its data displayed onscreen. <br />
|
||||||
Values: `true`, `false`.
|
Values: `true`, `false`.
|
||||||
|
|
||||||
|
`enableStatus` <br />
|
||||||
|
Display pull request mergeability status ('dirty', 'clean', 'unstable',
|
||||||
|
'blocked').<br />
|
||||||
|
Values: `true`, `false`.
|
||||||
|
|
||||||
`position` <br />
|
`position` <br />
|
||||||
Defines where in the grid this module's widget will be displayed. <br />
|
Defines where in the grid this module's widget will be displayed. <br />
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
title: "Gitlab"
|
title: "GitLab"
|
||||||
date: 2018-06-08T13:14:11-07:00
|
date: 2018-06-08T13:14:11-07:00
|
||||||
draft: false
|
draft: false
|
||||||
---
|
---
|
||||||
@ -8,7 +8,7 @@ Added in `v0.0.8`.
|
|||||||
|
|
||||||
<img src="/imgs/modules/gitlab.png" width="640" height="384" alt="gitlab screenshot" />
|
<img src="/imgs/modules/gitlab.png" width="640" height="384" alt="gitlab screenshot" />
|
||||||
|
|
||||||
Displays information about your projects hosted on Gitlab:
|
Displays information about your projects hosted on GitLab:
|
||||||
|
|
||||||
#### Open Approval Requests
|
#### Open Approval Requests
|
||||||
|
|
||||||
@ -27,7 +27,7 @@ wtf/gitlab/
|
|||||||
## Required ENV Variables
|
## Required ENV Variables
|
||||||
|
|
||||||
<span class="caption">Key:</span> `WTF_GITLAB_TOKEN` <br />
|
<span class="caption">Key:</span> `WTF_GITLAB_TOKEN` <br />
|
||||||
<span class="caption">Action:</span> A <a href="https://docs.gitlab.com/ce/user/profile/personal_access_tokens.html">Gitlab personal access token</a>. Requires at least `api` access.
|
<span class="caption">Action:</span> A <a href="https://docs.gitlab.com/ce/user/profile/personal_access_tokens.html">GitLab personal access token</a>. Requires at least `api` access.
|
||||||
|
|
||||||
## Keyboard Commands
|
## Keyboard Commands
|
||||||
|
|
||||||
@ -77,14 +77,14 @@ How often, in seconds, this module will update its data. <br />
|
|||||||
Values: A positive integer, `0..n`.
|
Values: A positive integer, `0..n`.
|
||||||
|
|
||||||
`domain` <br />
|
`domain` <br />
|
||||||
_Optional_. Your Gitlab corporate domain. <br />
|
_Optional_. Your GitLab corporate domain. <br />
|
||||||
Values: A valid URI.
|
Values: A valid URI.
|
||||||
|
|
||||||
`projects` <br />
|
`projects` <br />
|
||||||
A list of key/value pairs each describing a Gitlab project to fetch data
|
A list of key/value pairs each describing a GitLab project to fetch data
|
||||||
for. <br />
|
for. <br />
|
||||||
<span class="caption">Key:</span> The name of the project. <br />
|
<span class="caption">Key:</span> The name of the project. <br />
|
||||||
<span class="caption">Value:</span> The namespace of the project.
|
<span class="caption">Value:</span> The namespace of the project.
|
||||||
|
|
||||||
`username` <br />
|
`username` <br />
|
||||||
Your Gitlab username. Used to figure out which requests require your approval
|
Your GitLab username. Used to figure out which requests require your approval
|
||||||
|
@ -39,6 +39,7 @@ jenkins:
|
|||||||
refreshInterval: 300
|
refreshInterval: 300
|
||||||
url: "https://jenkins.domain.com/jenkins/view_url"
|
url: "https://jenkins.domain.com/jenkins/view_url"
|
||||||
user: "username"
|
user: "username"
|
||||||
|
verifyServerCertificate: true
|
||||||
```
|
```
|
||||||
|
|
||||||
### Attributes
|
### Attributes
|
||||||
@ -61,3 +62,7 @@ Your Jenkins username. <br />
|
|||||||
The url to your Jenkins project or view. <br />
|
The url to your Jenkins project or view. <br />
|
||||||
Values: A valid URI.
|
Values: A valid URI.
|
||||||
|
|
||||||
|
`verifyServerCertificate` <br />
|
||||||
|
_Optional_ <br />
|
||||||
|
Determines whether or not the server's certificate chain and host name are verified. <br />
|
||||||
|
Values: `true`, `false`.
|
||||||
|
@ -21,7 +21,20 @@ wtf/jira/
|
|||||||
|
|
||||||
## Keyboard Commands
|
## Keyboard Commands
|
||||||
|
|
||||||
None.
|
<span class="caption">Key:</span> `[return]` <br />
|
||||||
|
<span class="caption">Action:</span> Open the selected issue in the browser.
|
||||||
|
|
||||||
|
<span class="caption">Key:</span> `j` <br />
|
||||||
|
<span class="caption">Action:</span> Select the next item in the list.
|
||||||
|
|
||||||
|
<span class="caption">Key:</span> `k` <br />
|
||||||
|
<span class="caption">Action:</span> Select the previous item in the list.
|
||||||
|
|
||||||
|
<span class="caption">Key:</span> `↓` <br />
|
||||||
|
<span class="caption">Action:</span> Select the next item in the list.
|
||||||
|
|
||||||
|
<span class="caption">Key:</span> `↑` <br />
|
||||||
|
<span class="caption">Action:</span> Select the previous item in the list.
|
||||||
|
|
||||||
## Configuration
|
## Configuration
|
||||||
|
|
||||||
|
91
_site/content/posts/modules/todoist.md
Normal file
91
_site/content/posts/modules/todoist.md
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
---
|
||||||
|
title: "Todoist"
|
||||||
|
date: 2018-07-05T22:55:55-03:00
|
||||||
|
draft: false
|
||||||
|
---
|
||||||
|
|
||||||
|
Added in `v0.0.11`.
|
||||||
|
|
||||||
|
Displays all items on specified project.
|
||||||
|
|
||||||
|
<img src="/imgs/modules/todoist.png" alt="todoist screenshot" />
|
||||||
|
|
||||||
|
## Source Code
|
||||||
|
|
||||||
|
```bash
|
||||||
|
wtf/todoist/
|
||||||
|
```
|
||||||
|
|
||||||
|
## Required ENV Variables
|
||||||
|
|
||||||
|
<span class="caption">Key:</span> `WTF_TODOIST_TOKEN` <br />
|
||||||
|
<span class="caption">Value:</span> Your Todoist API Token. <br />
|
||||||
|
|
||||||
|
_You can get your API Token at: todoist.com/prefs/integrations._
|
||||||
|
|
||||||
|
## Keyboard Commands
|
||||||
|
|
||||||
|
<span class="caption">Key:</span> `h` <br />
|
||||||
|
<span class="caption">Action:</span> Show the previous project.
|
||||||
|
|
||||||
|
<span class="caption">Key:</span> `←` <br />
|
||||||
|
<span class="caption">Action:</span> Show the previous project.
|
||||||
|
|
||||||
|
<span class="caption">Key:</span> `l` <br />
|
||||||
|
<span class="caption">Action:</span> Show the next project.
|
||||||
|
|
||||||
|
<span class="caption">Key:</span> `→` <br />
|
||||||
|
<span class="caption">Action:</span> Show the next project.
|
||||||
|
|
||||||
|
<span class="caption">Key:</span> `j` <br />
|
||||||
|
<span class="caption">Action:</span> Select the next item in the list.
|
||||||
|
|
||||||
|
<span class="caption">Key:</span> `↓` <br />
|
||||||
|
<span class="caption">Action:</span> Select the next item in the list.
|
||||||
|
|
||||||
|
<span class="caption">Key:</span> `k` <br />
|
||||||
|
<span class="caption">Action:</span> Select the previous item in the list.
|
||||||
|
|
||||||
|
<span class="caption">Key:</span> `↑` <br />
|
||||||
|
<span class="caption">Action:</span> Select the previous item in the list.
|
||||||
|
|
||||||
|
<span class="caption">Key:</span> `c` <br />
|
||||||
|
<span class="caption">Action:</span> Close current item.
|
||||||
|
|
||||||
|
<span class="caption">Key:</span> `d` <br />
|
||||||
|
<span class="caption">Action:</span> Delete current item.
|
||||||
|
|
||||||
|
<span class="caption">Key:</span> `r` <br />
|
||||||
|
<span class="caption">Action:</span> Reload all projects.
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
todoist:
|
||||||
|
enabled: true
|
||||||
|
position:
|
||||||
|
top: 0
|
||||||
|
left: 2
|
||||||
|
height: 1
|
||||||
|
width: 1
|
||||||
|
projects:
|
||||||
|
- 122247497
|
||||||
|
refreshInterval: 3600
|
||||||
|
```
|
||||||
|
|
||||||
|
### Attributes
|
||||||
|
|
||||||
|
`enabled` <br />
|
||||||
|
Determines whether or not this module is executed and if its data displayed onscreen. <br />
|
||||||
|
Values: `true`, `false`.
|
||||||
|
|
||||||
|
`position` <br />
|
||||||
|
Where in the grid this module's widget will be displayed. <br />
|
||||||
|
|
||||||
|
`projects` <br />
|
||||||
|
The todoist projects to fetch items from. <br />
|
||||||
|
Values: The integer ID of the project.
|
||||||
|
|
||||||
|
`refreshInterval` <br />
|
||||||
|
How often, in seconds, this module will update its data. <br />
|
||||||
|
Values: A positive integer, `0..n`.
|
52
_site/content/posts/modules/travisci.md
Normal file
52
_site/content/posts/modules/travisci.md
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
---
|
||||||
|
title: "TravisCI"
|
||||||
|
date: 2018-07-18T14:36:08-04:00
|
||||||
|
draft: false
|
||||||
|
---
|
||||||
|
|
||||||
|
Added in `v0.0.12`.
|
||||||
|
|
||||||
|
Displays build information for your Travis CI account.
|
||||||
|
|
||||||
|
<img src="/imgs/modules/travisci.png" width="609" height="150" alt="travisci screenshot" />
|
||||||
|
|
||||||
|
## Source Code
|
||||||
|
|
||||||
|
```bash
|
||||||
|
wtf/travisci/
|
||||||
|
```
|
||||||
|
|
||||||
|
## Required ENV Variables
|
||||||
|
|
||||||
|
<span class="caption">Key:</span> `WTF_TRAVIS_API_TOKEN` <br />
|
||||||
|
<span class="caption">Value:</span> Your <a href="https://developer.travis-ci.org/authentication">Travis CI API</a> access token.
|
||||||
|
|
||||||
|
## Keyboard Commands
|
||||||
|
|
||||||
|
None.
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
travisci:
|
||||||
|
enabled: true
|
||||||
|
position:
|
||||||
|
top: 4
|
||||||
|
left: 1
|
||||||
|
height: 1
|
||||||
|
width: 2
|
||||||
|
refreshInterval: 900
|
||||||
|
```
|
||||||
|
|
||||||
|
### Attributes
|
||||||
|
|
||||||
|
`enabled` <br />
|
||||||
|
Determines whether or not this module is executed and if its data displayed onscreen. <br />
|
||||||
|
Values: `true`, `false`.
|
||||||
|
|
||||||
|
`position` <br />
|
||||||
|
Defines where in the grid this module's widget will be displayed. <br />
|
||||||
|
|
||||||
|
`refreshInterval` <br />
|
||||||
|
How often, in seconds, this module will update its data. <br />
|
||||||
|
Values: A positive integer, `0..n`.
|
@ -17,8 +17,11 @@ wtf/weather/
|
|||||||
|
|
||||||
## Required ENV Variables
|
## Required ENV Variables
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<span class="caption">Key:</span> `WTF_OWM_API_KEY` <br />
|
<span class="caption">Key:</span> `WTF_OWM_API_KEY` <br />
|
||||||
<span class="caption">Action:</span> Your <a href="https://openweathermap.org/appid">OpenWeatherMap API</a> key.
|
<span class="caption">Action:</span> Your <a href="https://openweathermap.org/appid">OpenWeatherMap API</a> key. <br />
|
||||||
|
<span class="caption">Note:</span> DEPRECATED. See the `apiKey` config value, below.
|
||||||
|
|
||||||
## Keyboard Commands
|
## Keyboard Commands
|
||||||
|
|
||||||
@ -41,6 +44,7 @@ wtf/weather/
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
weather:
|
weather:
|
||||||
|
apiKey: "2dfb3e3650a1950adddb6badf5ba1aaa"
|
||||||
# From http://openweathermap.org/help/city_list.txt
|
# From http://openweathermap.org/help/city_list.txt
|
||||||
cityids:
|
cityids:
|
||||||
- 6173331
|
- 6173331
|
||||||
@ -62,6 +66,9 @@ weather:
|
|||||||
|
|
||||||
### Attributes
|
### Attributes
|
||||||
|
|
||||||
|
`apiKey` <br />
|
||||||
|
Your <a href="https://openweathermap.org/appid">OpenWeatherMap API</a> key.
|
||||||
|
|
||||||
`cityids` <br />
|
`cityids` <br />
|
||||||
A list of the <a
|
A list of the <a
|
||||||
href="http://openweathermap.org/help/city_list.txt">OpenWeatherMap city
|
href="http://openweathermap.org/help/city_list.txt">OpenWeatherMap city
|
||||||
|
BIN
_site/static/imgs/modules/todoist.png
Normal file
BIN
_site/static/imgs/modules/todoist.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.3 KiB |
BIN
_site/static/imgs/modules/travisci.png
Normal file
BIN
_site/static/imgs/modules/travisci.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 44 KiB |
@ -32,7 +32,7 @@
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">Gitlab</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">GitLab</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
||||||
@ -47,6 +47,8 @@
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todoist/">Todoist</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/travisci/">Travis CI</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
187
checklist/checklist.go
Normal file
187
checklist/checklist.go
Normal file
@ -0,0 +1,187 @@
|
|||||||
|
package checklist
|
||||||
|
|
||||||
|
// Checklist is a module for creating generic checklist implementations
|
||||||
|
// See 'Todo' for an implementation example
|
||||||
|
type Checklist struct {
|
||||||
|
Selected int
|
||||||
|
|
||||||
|
Items []*ChecklistItem
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewChecklist() Checklist {
|
||||||
|
list := Checklist{
|
||||||
|
Selected: -1,
|
||||||
|
}
|
||||||
|
|
||||||
|
return list
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------- Exported Functions -------------------- */
|
||||||
|
|
||||||
|
// Add creates a new item in the checklist
|
||||||
|
func (list *Checklist) Add(checked bool, text string) {
|
||||||
|
item := ChecklistItem{
|
||||||
|
Checked: checked,
|
||||||
|
Text: text,
|
||||||
|
}
|
||||||
|
|
||||||
|
list.Items = append([]*ChecklistItem{&item}, list.Items...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// CheckedItems returns a slice of all the checked items
|
||||||
|
func (list *Checklist) CheckedItems() []*ChecklistItem {
|
||||||
|
items := []*ChecklistItem{}
|
||||||
|
|
||||||
|
for _, item := range list.Items {
|
||||||
|
if item.Checked {
|
||||||
|
items = append(items, item)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return items
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete removes the selected item from the checklist
|
||||||
|
func (list *Checklist) Delete() {
|
||||||
|
list.Items = append(list.Items[:list.Selected], list.Items[list.Selected+1:]...)
|
||||||
|
list.Prev()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Demote moves the selected item down in the checklist
|
||||||
|
func (list *Checklist) Demote() {
|
||||||
|
if list.IsUnselectable() {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
j := list.Selected + 1
|
||||||
|
if j >= len(list.Items) {
|
||||||
|
j = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
list.Swap(list.Selected, j)
|
||||||
|
list.Selected = j
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsSelectable returns true if the checklist has selectable items, false if it does not
|
||||||
|
func (list *Checklist) IsSelectable() bool {
|
||||||
|
return list.Selected >= 0 && list.Selected < len(list.Items)
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsUnselectable returns true if the checklist has no selectable items, false if it does
|
||||||
|
func (list *Checklist) IsUnselectable() bool {
|
||||||
|
return !list.IsSelectable()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Next selects the next item in the checklist
|
||||||
|
func (list *Checklist) Next() {
|
||||||
|
list.Selected = list.Selected + 1
|
||||||
|
if list.Selected >= len(list.Items) {
|
||||||
|
list.Selected = 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// LongestLine returns the length of the longest checklist item's text
|
||||||
|
func (list *Checklist) LongestLine() int {
|
||||||
|
maxLen := 0
|
||||||
|
|
||||||
|
for _, item := range list.Items {
|
||||||
|
if len(item.Text) > maxLen {
|
||||||
|
maxLen = len(item.Text)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return maxLen
|
||||||
|
}
|
||||||
|
|
||||||
|
// Prev selects the previous item in the checklist
|
||||||
|
func (list *Checklist) Prev() {
|
||||||
|
list.Selected = list.Selected - 1
|
||||||
|
if list.Selected < 0 {
|
||||||
|
list.Selected = len(list.Items) - 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Promote moves the selected item up in the checklist
|
||||||
|
func (list *Checklist) Promote() {
|
||||||
|
if list.IsUnselectable() {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
j := list.Selected - 1
|
||||||
|
if j < 0 {
|
||||||
|
j = len(list.Items) - 1
|
||||||
|
}
|
||||||
|
|
||||||
|
list.Swap(list.Selected, j)
|
||||||
|
list.Selected = j
|
||||||
|
}
|
||||||
|
|
||||||
|
// SelectedItem returns the currently-selected checklist item or nil if no item is selected
|
||||||
|
func (list *Checklist) SelectedItem() *ChecklistItem {
|
||||||
|
if list.IsUnselectable() {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return list.Items[list.Selected]
|
||||||
|
}
|
||||||
|
|
||||||
|
func (list *Checklist) SetSelectedByItem(selectableItem *ChecklistItem) {
|
||||||
|
for idx, item := range list.Items {
|
||||||
|
if item == selectableItem {
|
||||||
|
list.Selected = idx
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Toggle switches the checked state of the currently-selected item
|
||||||
|
func (list *Checklist) Toggle() {
|
||||||
|
if list.IsUnselectable() {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
list.SelectedItem().Toggle()
|
||||||
|
}
|
||||||
|
|
||||||
|
// UncheckedItems returns a slice of all the unchecked items
|
||||||
|
func (list *Checklist) UncheckedItems() []*ChecklistItem {
|
||||||
|
items := []*ChecklistItem{}
|
||||||
|
|
||||||
|
for _, item := range list.Items {
|
||||||
|
if !item.Checked {
|
||||||
|
items = append(items, item)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return items
|
||||||
|
}
|
||||||
|
|
||||||
|
// Unselect removes the current select such that no item is selected
|
||||||
|
func (list *Checklist) Unselect() {
|
||||||
|
list.Selected = -1
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update sets the text of the currently-selected item to the provided text
|
||||||
|
func (list *Checklist) Update(text string) {
|
||||||
|
item := list.SelectedItem()
|
||||||
|
|
||||||
|
if item == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
item.Text = text
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------- Sort Interface -------------------- */
|
||||||
|
|
||||||
|
func (list *Checklist) Len() int {
|
||||||
|
return len(list.Items)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (list *Checklist) Less(i, j int) bool {
|
||||||
|
return list.Items[i].Text < list.Items[j].Text
|
||||||
|
}
|
||||||
|
|
||||||
|
func (list *Checklist) Swap(i, j int) {
|
||||||
|
list.Items[i], list.Items[j] = list.Items[j], list.Items[i]
|
||||||
|
}
|
27
checklist/checklist_item.go
Normal file
27
checklist/checklist_item.go
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
package checklist
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/senorprogrammer/wtf/wtf"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ChecklistItem is a module for creating generic checklist implementations
|
||||||
|
// See 'Todo' for an implementation example
|
||||||
|
type ChecklistItem struct {
|
||||||
|
Checked bool
|
||||||
|
Text string
|
||||||
|
}
|
||||||
|
|
||||||
|
// CheckMark returns the string used to indicate a ChecklistItem is checked or unchecked
|
||||||
|
func (item *ChecklistItem) CheckMark() string {
|
||||||
|
if item.Checked {
|
||||||
|
return wtf.Config.UString("wtf.mods.todo.checkedIcon", "x")
|
||||||
|
} else {
|
||||||
|
return " "
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Toggle changes the checked state of the ChecklistItem
|
||||||
|
// If checked, it is unchecked. If unchecked, it is checked
|
||||||
|
func (item *ChecklistItem) Toggle() {
|
||||||
|
item.Checked = !item.Checked
|
||||||
|
}
|
43
checklisttests/checklist_item_test.go
Normal file
43
checklisttests/checklist_item_test.go
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
package wtftests
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/olebedev/config"
|
||||||
|
. "github.com/senorprogrammer/wtf/checklist"
|
||||||
|
"github.com/senorprogrammer/wtf/wtf"
|
||||||
|
. "github.com/stretchr/testify/assert"
|
||||||
|
)
|
||||||
|
|
||||||
|
/* -------------------- CheckMark -------------------- */
|
||||||
|
|
||||||
|
func TestCheckMark(t *testing.T) {
|
||||||
|
loadConfig()
|
||||||
|
|
||||||
|
item := ChecklistItem{}
|
||||||
|
Equal(t, " ", item.CheckMark())
|
||||||
|
|
||||||
|
item = ChecklistItem{Checked: true}
|
||||||
|
Equal(t, "x", item.CheckMark())
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------- Toggle -------------------- */
|
||||||
|
|
||||||
|
func TestToggle(t *testing.T) {
|
||||||
|
loadConfig()
|
||||||
|
|
||||||
|
item := ChecklistItem{}
|
||||||
|
Equal(t, false, item.Checked)
|
||||||
|
|
||||||
|
item.Toggle()
|
||||||
|
Equal(t, true, item.Checked)
|
||||||
|
|
||||||
|
item.Toggle()
|
||||||
|
Equal(t, false, item.Checked)
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------- helpers -------------------- */
|
||||||
|
|
||||||
|
func loadConfig() {
|
||||||
|
wtf.Config, _ = config.ParseYamlFile("../_sample_configs/simple_config.yml")
|
||||||
|
}
|
@ -5,6 +5,7 @@ import (
|
|||||||
"os/exec"
|
"os/exec"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"github.com/rivo/tview"
|
||||||
"github.com/senorprogrammer/wtf/wtf"
|
"github.com/senorprogrammer/wtf/wtf"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -33,7 +34,7 @@ func (widget *Widget) Refresh() {
|
|||||||
widget.UpdateRefreshedAt()
|
widget.UpdateRefreshedAt()
|
||||||
widget.execute()
|
widget.execute()
|
||||||
|
|
||||||
title := wtf.Config.UString("wtf.mods.cmdrunner.title", widget.String())
|
title := tview.TranslateANSI(wtf.Config.UString("wtf.mods.cmdrunner.title", widget.String()))
|
||||||
widget.View.SetTitle(title)
|
widget.View.SetTitle(title)
|
||||||
|
|
||||||
widget.View.SetText(widget.result)
|
widget.View.SetText(widget.result)
|
||||||
@ -46,5 +47,5 @@ func (widget *Widget) String() string {
|
|||||||
|
|
||||||
func (widget *Widget) execute() {
|
func (widget *Widget) execute() {
|
||||||
cmd := exec.Command(widget.cmd, widget.args...)
|
cmd := exec.Command(widget.cmd, widget.args...)
|
||||||
widget.result = wtf.ExecuteCommand(cmd)
|
widget.result = tview.TranslateANSI(wtf.ExecuteCommand(cmd))
|
||||||
}
|
}
|
||||||
|
@ -85,7 +85,7 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">Gitlab</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">GitLab</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
||||||
@ -100,6 +100,8 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todoist/">Todoist</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/travisci/">Travis CI</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -87,7 +87,7 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">Gitlab</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">GitLab</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
||||||
@ -102,6 +102,8 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todoist/">Todoist</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/travisci/">Travis CI</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
BIN
docs/imgs/modules/todoist.png
Normal file
BIN
docs/imgs/modules/todoist.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.3 KiB |
BIN
docs/imgs/modules/travisci.png
Normal file
BIN
docs/imgs/modules/travisci.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 44 KiB |
@ -86,7 +86,7 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">Gitlab</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">GitLab</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
||||||
@ -101,6 +101,8 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todoist/">Todoist</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/travisci/">Travis CI</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -6,11 +6,41 @@
|
|||||||
<description>Recent content on WTF - A Terminal Dashboard</description>
|
<description>Recent content on WTF - A Terminal Dashboard</description>
|
||||||
<generator>Hugo -- gohugo.io</generator>
|
<generator>Hugo -- gohugo.io</generator>
|
||||||
<language>en-us</language>
|
<language>en-us</language>
|
||||||
<lastBuildDate>Wed, 27 Jun 2018 15:55:42 -0700</lastBuildDate>
|
<lastBuildDate>Wed, 18 Jul 2018 14:36:08 -0400</lastBuildDate>
|
||||||
|
|
||||||
<atom:link href="https://wtfutil.com/index.xml" rel="self" type="application/rss+xml" />
|
<atom:link href="https://wtfutil.com/index.xml" rel="self" type="application/rss+xml" />
|
||||||
|
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<title>TravisCI</title>
|
||||||
|
<link>https://wtfutil.com/posts/modules/travisci/</link>
|
||||||
|
<pubDate>Wed, 18 Jul 2018 14:36:08 -0400</pubDate>
|
||||||
|
|
||||||
|
<guid>https://wtfutil.com/posts/modules/travisci/</guid>
|
||||||
|
<description>Added in v0.0.12.
|
||||||
|
Displays build information for your Travis CI account.
|
||||||
|
Source Code wtf/travisci/ Required ENV Variables Key: WTF_TRAVIS_API_TOKEN Value: Your Travis CI API access token.
|
||||||
|
Keyboard Commands None.
|
||||||
|
Configuration travisci:enabled:trueposition:top:4left:1height:1width:2refreshInterval:900 Attributes enabled Determines whether or not this module is executed and if its data displayed onscreen. Values: true, false.
|
||||||
|
position Defines where in the grid this module&rsquo;s widget will be displayed. refreshInterval How often, in seconds, this module will update its data.</description>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<title>Todoist</title>
|
||||||
|
<link>https://wtfutil.com/posts/modules/todoist/</link>
|
||||||
|
<pubDate>Thu, 05 Jul 2018 22:55:55 -0300</pubDate>
|
||||||
|
|
||||||
|
<guid>https://wtfutil.com/posts/modules/todoist/</guid>
|
||||||
|
<description>Added in v0.0.11.
|
||||||
|
Displays all items on specified project.
|
||||||
|
Source Code wtf/todoist/ Required ENV Variables Key: WTF_TODOIST_TOKEN Value: Your Todoist API Token. You can get your API Token at: todoist.com/prefs/integrations.
|
||||||
|
Keyboard Commands Key: h Action: Show the previous project.
|
||||||
|
Key: ← Action: Show the previous project.
|
||||||
|
Key: l Action: Show the next project.
|
||||||
|
Key: → Action: Show the next project.
|
||||||
|
Key: j Action: Select the next item in the list.</description>
|
||||||
|
</item>
|
||||||
|
|
||||||
<item>
|
<item>
|
||||||
<title>Gerrit</title>
|
<title>Gerrit</title>
|
||||||
<link>https://wtfutil.com/posts/modules/gerrit/</link>
|
<link>https://wtfutil.com/posts/modules/gerrit/</link>
|
||||||
@ -112,22 +142,22 @@ position Where in the grid this module&rsquo;s widget will be displayed.</de
|
|||||||
Displays jenkins status of given builds in a project or view
|
Displays jenkins status of given builds in a project or view
|
||||||
Source Code wtf/jenkins/ Required ENV Variables Key: WTF_JENKINS_API_KEY Value: Your Jenkins API key.
|
Source Code wtf/jenkins/ Required ENV Variables Key: WTF_JENKINS_API_KEY Value: Your Jenkins API key.
|
||||||
Keyboard Commands None.
|
Keyboard Commands None.
|
||||||
Configuration jenkins:enabled:trueposition:top:2left:3height:2width:3refreshInterval:300url:&#34;https://jenkins.domain.com/jenkins/view_url&#34;user:&#34;username&#34; Attributes enabled Determines whether or not this module is executed and if its data displayed onscreen. Values: true, false.
|
Configuration jenkins:enabled:trueposition:top:2left:3height:2width:3refreshInterval:300url:&#34;https://jenkins.domain.com/jenkins/view_url&#34;user:&#34;username&#34;verifyServerCertificate:true Attributes enabled Determines whether or not this module is executed and if its data displayed onscreen. Values: true, false.
|
||||||
position Defines where in the grid this module&rsquo;s widget will be displayed.
|
position Defines where in the grid this module&rsquo;s widget will be displayed.
|
||||||
refreshInterval How often, in seconds, this module will update its data.</description>
|
refreshInterval How often, in seconds, this module will update its data.</description>
|
||||||
</item>
|
</item>
|
||||||
|
|
||||||
<item>
|
<item>
|
||||||
<title>Gitlab</title>
|
<title>GitLab</title>
|
||||||
<link>https://wtfutil.com/posts/modules/gitlab/</link>
|
<link>https://wtfutil.com/posts/modules/gitlab/</link>
|
||||||
<pubDate>Fri, 08 Jun 2018 13:14:11 -0700</pubDate>
|
<pubDate>Fri, 08 Jun 2018 13:14:11 -0700</pubDate>
|
||||||
|
|
||||||
<guid>https://wtfutil.com/posts/modules/gitlab/</guid>
|
<guid>https://wtfutil.com/posts/modules/gitlab/</guid>
|
||||||
<description>Added in v0.0.8.
|
<description>Added in v0.0.8.
|
||||||
Displays information about your projects hosted on Gitlab:
|
Displays information about your projects hosted on GitLab:
|
||||||
Open Approval Requests All open merge requests that are requesting your approval.
|
Open Approval Requests All open merge requests that are requesting your approval.
|
||||||
Open Merge Requests All open merge requests created by you.
|
Open Merge Requests All open merge requests created by you.
|
||||||
Source Code wtf/gitlab/ Required ENV Variables Key: WTF_GITLAB_TOKEN Action: A Gitlab personal access token. Requires at least api access.
|
Source Code wtf/gitlab/ Required ENV Variables Key: WTF_GITLAB_TOKEN Action: A GitLab personal access token. Requires at least api access.
|
||||||
Keyboard Commands Key: / Action: Open/close the widget&rsquo;s help window.
|
Keyboard Commands Key: / Action: Open/close the widget&rsquo;s help window.
|
||||||
Key: h Action: Show the previous project.</description>
|
Key: h Action: Show the previous project.</description>
|
||||||
</item>
|
</item>
|
||||||
@ -294,9 +324,11 @@ Key: j Action: Select the next item in the list.</description>
|
|||||||
<guid>https://wtfutil.com/posts/modules/jira/</guid>
|
<guid>https://wtfutil.com/posts/modules/jira/</guid>
|
||||||
<description>Displays all Jira issues assigned to you for the specified project.
|
<description>Displays all Jira issues assigned to you for the specified project.
|
||||||
Source Code wtf/jira/ Required ENV Variables Key: WTF_JIRA_API_KEY Value: Your Jira API key.
|
Source Code wtf/jira/ Required ENV Variables Key: WTF_JIRA_API_KEY Value: Your Jira API key.
|
||||||
Keyboard Commands None.
|
Keyboard Commands Key: [return] Action: Open the selected issue in the browser.
|
||||||
Configuration Single Jira Project jira:colors:rows:even:&#34;lightblue&#34;odd:&#34;white&#34;domain:&#34;https://umbrellacorp.atlassian.net&#34;email:&#34;chriscummer@me.com&#34;enabled:truejql:&#34;issueType = Story&#34;position:top:4left:1height:1width:2project:&#34;ProjectA&#34;refreshInterval:900username:&#34;chris.cummer&#34;verifyServerCertificate:true Multiple Jira Projects If you want to monitor multiple Jira projects, use the following configuration (note the difference in project):
|
Key: j Action: Select the next item in the list.
|
||||||
jira:colors:rows:even:&#34;lightblue&#34;odd:&#34;white&#34;domain:&#34;https://umbrellacorp.atlassian.net&#34;email:&#34;chriscummer@me.com&#34;enabled:truejql:&#34;issueType = Story&#34;position:top:4left:1height:1width:2project:[&#34;ProjectA&#34;,&#34;ProjectB&#34;]refreshInterval:900username:&#34;chris.cummer&#34;verifyServerCertificate:true Attributes colors.rows.even Define the foreground color for even-numbered rows. Values: Any X11 color name.</description>
|
Key: k Action: Select the previous item in the list.
|
||||||
|
Key: ↓ Action: Select the next item in the list.
|
||||||
|
Key: ↑ Action: Select the previous item in the list.</description>
|
||||||
</item>
|
</item>
|
||||||
|
|
||||||
<item>
|
<item>
|
||||||
@ -362,12 +394,11 @@ Key: h Action: Show the previous git repository.</description>
|
|||||||
|
|
||||||
<guid>https://wtfutil.com/posts/modules/weather/</guid>
|
<guid>https://wtfutil.com/posts/modules/weather/</guid>
|
||||||
<description>Displays a configurable list of current weather report, including current temperature, sunrise time, and sunset time.
|
<description>Displays a configurable list of current weather report, including current temperature, sunrise time, and sunset time.
|
||||||
Source Code wtf/weather/ Required ENV Variables Key: WTF_OWM_API_KEY Action: Your OpenWeatherMap API key.
|
Source Code wtf/weather/ Required ENV Variables Key: WTF_OWM_API_KEY Action: Your OpenWeatherMap API key. Note: DEPRECATED. See the apiKey config value, below.
|
||||||
Keyboard Commands Key: / Action: Open/close the widget&rsquo;s help window.
|
Keyboard Commands Key: / Action: Open/close the widget&rsquo;s help window.
|
||||||
Key: h Action: Show the previous weather location.
|
Key: h Action: Show the previous weather location.
|
||||||
Key: l Action: Show the next weather location.
|
Key: l Action: Show the next weather location.
|
||||||
Key: ← Action: Show the previous weather location.
|
Key: ← Action: Show the previous weather location.</description>
|
||||||
Key: → Action: Show the next weather location.</description>
|
|
||||||
</item>
|
</item>
|
||||||
|
|
||||||
<item>
|
<item>
|
||||||
|
@ -85,7 +85,7 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">Gitlab</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">GitLab</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
||||||
@ -100,6 +100,8 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todoist/">Todoist</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/travisci/">Travis CI</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -85,7 +85,7 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">Gitlab</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">GitLab</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
||||||
@ -100,6 +100,8 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todoist/">Todoist</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/travisci/">Travis CI</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -85,7 +85,7 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">Gitlab</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">GitLab</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
||||||
@ -100,6 +100,8 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todoist/">Todoist</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/travisci/">Travis CI</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -85,7 +85,7 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">Gitlab</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">GitLab</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
||||||
@ -100,6 +100,8 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todoist/">Todoist</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/travisci/">Travis CI</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -87,7 +87,7 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">Gitlab</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">GitLab</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
||||||
@ -102,6 +102,8 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todoist/">Todoist</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/travisci/">Travis CI</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
@ -120,6 +122,20 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<h1 class="title">Posts</h1>
|
<h1 class="title">Posts</h1>
|
||||||
<ul class="posts">
|
<ul class="posts">
|
||||||
<li>
|
<li>
|
||||||
|
<span>
|
||||||
|
<a href="https://wtfutil.com/posts/modules/travisci/">TravisCI</a>
|
||||||
|
|
||||||
|
<time class="pull-right post-list">Jul 18, 2018</time>
|
||||||
|
|
||||||
|
</span>
|
||||||
|
</li><li>
|
||||||
|
<span>
|
||||||
|
<a href="https://wtfutil.com/posts/modules/todoist/">Todoist</a>
|
||||||
|
|
||||||
|
<time class="pull-right post-list">Jul 05, 2018</time>
|
||||||
|
|
||||||
|
</span>
|
||||||
|
</li><li>
|
||||||
<span>
|
<span>
|
||||||
<a href="https://wtfutil.com/posts/modules/gerrit/">Gerrit</a>
|
<a href="https://wtfutil.com/posts/modules/gerrit/">Gerrit</a>
|
||||||
|
|
||||||
@ -170,7 +186,7 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
</span>
|
</span>
|
||||||
</li><li>
|
</li><li>
|
||||||
<span>
|
<span>
|
||||||
<a href="https://wtfutil.com/posts/modules/gitlab/">Gitlab</a>
|
<a href="https://wtfutil.com/posts/modules/gitlab/">GitLab</a>
|
||||||
|
|
||||||
<time class="pull-right post-list">Jun 08, 2018</time>
|
<time class="pull-right post-list">Jun 08, 2018</time>
|
||||||
|
|
||||||
|
@ -6,11 +6,41 @@
|
|||||||
<description>Recent content in Posts on WTF - A Terminal Dashboard</description>
|
<description>Recent content in Posts on WTF - A Terminal Dashboard</description>
|
||||||
<generator>Hugo -- gohugo.io</generator>
|
<generator>Hugo -- gohugo.io</generator>
|
||||||
<language>en-us</language>
|
<language>en-us</language>
|
||||||
<lastBuildDate>Wed, 27 Jun 2018 15:55:42 -0700</lastBuildDate>
|
<lastBuildDate>Wed, 18 Jul 2018 14:36:08 -0400</lastBuildDate>
|
||||||
|
|
||||||
<atom:link href="https://wtfutil.com/posts/index.xml" rel="self" type="application/rss+xml" />
|
<atom:link href="https://wtfutil.com/posts/index.xml" rel="self" type="application/rss+xml" />
|
||||||
|
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<title>TravisCI</title>
|
||||||
|
<link>https://wtfutil.com/posts/modules/travisci/</link>
|
||||||
|
<pubDate>Wed, 18 Jul 2018 14:36:08 -0400</pubDate>
|
||||||
|
|
||||||
|
<guid>https://wtfutil.com/posts/modules/travisci/</guid>
|
||||||
|
<description>Added in v0.0.12.
|
||||||
|
Displays build information for your Travis CI account.
|
||||||
|
Source Code wtf/travisci/ Required ENV Variables Key: WTF_TRAVIS_API_TOKEN Value: Your Travis CI API access token.
|
||||||
|
Keyboard Commands None.
|
||||||
|
Configuration travisci:enabled:trueposition:top:4left:1height:1width:2refreshInterval:900 Attributes enabled Determines whether or not this module is executed and if its data displayed onscreen. Values: true, false.
|
||||||
|
position Defines where in the grid this module&rsquo;s widget will be displayed. refreshInterval How often, in seconds, this module will update its data.</description>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<title>Todoist</title>
|
||||||
|
<link>https://wtfutil.com/posts/modules/todoist/</link>
|
||||||
|
<pubDate>Thu, 05 Jul 2018 22:55:55 -0300</pubDate>
|
||||||
|
|
||||||
|
<guid>https://wtfutil.com/posts/modules/todoist/</guid>
|
||||||
|
<description>Added in v0.0.11.
|
||||||
|
Displays all items on specified project.
|
||||||
|
Source Code wtf/todoist/ Required ENV Variables Key: WTF_TODOIST_TOKEN Value: Your Todoist API Token. You can get your API Token at: todoist.com/prefs/integrations.
|
||||||
|
Keyboard Commands Key: h Action: Show the previous project.
|
||||||
|
Key: ← Action: Show the previous project.
|
||||||
|
Key: l Action: Show the next project.
|
||||||
|
Key: → Action: Show the next project.
|
||||||
|
Key: j Action: Select the next item in the list.</description>
|
||||||
|
</item>
|
||||||
|
|
||||||
<item>
|
<item>
|
||||||
<title>Gerrit</title>
|
<title>Gerrit</title>
|
||||||
<link>https://wtfutil.com/posts/modules/gerrit/</link>
|
<link>https://wtfutil.com/posts/modules/gerrit/</link>
|
||||||
@ -112,22 +142,22 @@ position Where in the grid this module&rsquo;s widget will be displayed.</de
|
|||||||
Displays jenkins status of given builds in a project or view
|
Displays jenkins status of given builds in a project or view
|
||||||
Source Code wtf/jenkins/ Required ENV Variables Key: WTF_JENKINS_API_KEY Value: Your Jenkins API key.
|
Source Code wtf/jenkins/ Required ENV Variables Key: WTF_JENKINS_API_KEY Value: Your Jenkins API key.
|
||||||
Keyboard Commands None.
|
Keyboard Commands None.
|
||||||
Configuration jenkins:enabled:trueposition:top:2left:3height:2width:3refreshInterval:300url:&#34;https://jenkins.domain.com/jenkins/view_url&#34;user:&#34;username&#34; Attributes enabled Determines whether or not this module is executed and if its data displayed onscreen. Values: true, false.
|
Configuration jenkins:enabled:trueposition:top:2left:3height:2width:3refreshInterval:300url:&#34;https://jenkins.domain.com/jenkins/view_url&#34;user:&#34;username&#34;verifyServerCertificate:true Attributes enabled Determines whether or not this module is executed and if its data displayed onscreen. Values: true, false.
|
||||||
position Defines where in the grid this module&rsquo;s widget will be displayed.
|
position Defines where in the grid this module&rsquo;s widget will be displayed.
|
||||||
refreshInterval How often, in seconds, this module will update its data.</description>
|
refreshInterval How often, in seconds, this module will update its data.</description>
|
||||||
</item>
|
</item>
|
||||||
|
|
||||||
<item>
|
<item>
|
||||||
<title>Gitlab</title>
|
<title>GitLab</title>
|
||||||
<link>https://wtfutil.com/posts/modules/gitlab/</link>
|
<link>https://wtfutil.com/posts/modules/gitlab/</link>
|
||||||
<pubDate>Fri, 08 Jun 2018 13:14:11 -0700</pubDate>
|
<pubDate>Fri, 08 Jun 2018 13:14:11 -0700</pubDate>
|
||||||
|
|
||||||
<guid>https://wtfutil.com/posts/modules/gitlab/</guid>
|
<guid>https://wtfutil.com/posts/modules/gitlab/</guid>
|
||||||
<description>Added in v0.0.8.
|
<description>Added in v0.0.8.
|
||||||
Displays information about your projects hosted on Gitlab:
|
Displays information about your projects hosted on GitLab:
|
||||||
Open Approval Requests All open merge requests that are requesting your approval.
|
Open Approval Requests All open merge requests that are requesting your approval.
|
||||||
Open Merge Requests All open merge requests created by you.
|
Open Merge Requests All open merge requests created by you.
|
||||||
Source Code wtf/gitlab/ Required ENV Variables Key: WTF_GITLAB_TOKEN Action: A Gitlab personal access token. Requires at least api access.
|
Source Code wtf/gitlab/ Required ENV Variables Key: WTF_GITLAB_TOKEN Action: A GitLab personal access token. Requires at least api access.
|
||||||
Keyboard Commands Key: / Action: Open/close the widget&rsquo;s help window.
|
Keyboard Commands Key: / Action: Open/close the widget&rsquo;s help window.
|
||||||
Key: h Action: Show the previous project.</description>
|
Key: h Action: Show the previous project.</description>
|
||||||
</item>
|
</item>
|
||||||
@ -294,9 +324,11 @@ Key: j Action: Select the next item in the list.</description>
|
|||||||
<guid>https://wtfutil.com/posts/modules/jira/</guid>
|
<guid>https://wtfutil.com/posts/modules/jira/</guid>
|
||||||
<description>Displays all Jira issues assigned to you for the specified project.
|
<description>Displays all Jira issues assigned to you for the specified project.
|
||||||
Source Code wtf/jira/ Required ENV Variables Key: WTF_JIRA_API_KEY Value: Your Jira API key.
|
Source Code wtf/jira/ Required ENV Variables Key: WTF_JIRA_API_KEY Value: Your Jira API key.
|
||||||
Keyboard Commands None.
|
Keyboard Commands Key: [return] Action: Open the selected issue in the browser.
|
||||||
Configuration Single Jira Project jira:colors:rows:even:&#34;lightblue&#34;odd:&#34;white&#34;domain:&#34;https://umbrellacorp.atlassian.net&#34;email:&#34;chriscummer@me.com&#34;enabled:truejql:&#34;issueType = Story&#34;position:top:4left:1height:1width:2project:&#34;ProjectA&#34;refreshInterval:900username:&#34;chris.cummer&#34;verifyServerCertificate:true Multiple Jira Projects If you want to monitor multiple Jira projects, use the following configuration (note the difference in project):
|
Key: j Action: Select the next item in the list.
|
||||||
jira:colors:rows:even:&#34;lightblue&#34;odd:&#34;white&#34;domain:&#34;https://umbrellacorp.atlassian.net&#34;email:&#34;chriscummer@me.com&#34;enabled:truejql:&#34;issueType = Story&#34;position:top:4left:1height:1width:2project:[&#34;ProjectA&#34;,&#34;ProjectB&#34;]refreshInterval:900username:&#34;chris.cummer&#34;verifyServerCertificate:true Attributes colors.rows.even Define the foreground color for even-numbered rows. Values: Any X11 color name.</description>
|
Key: k Action: Select the previous item in the list.
|
||||||
|
Key: ↓ Action: Select the next item in the list.
|
||||||
|
Key: ↑ Action: Select the previous item in the list.</description>
|
||||||
</item>
|
</item>
|
||||||
|
|
||||||
<item>
|
<item>
|
||||||
@ -362,12 +394,11 @@ Key: h Action: Show the previous git repository.</description>
|
|||||||
|
|
||||||
<guid>https://wtfutil.com/posts/modules/weather/</guid>
|
<guid>https://wtfutil.com/posts/modules/weather/</guid>
|
||||||
<description>Displays a configurable list of current weather report, including current temperature, sunrise time, and sunset time.
|
<description>Displays a configurable list of current weather report, including current temperature, sunrise time, and sunset time.
|
||||||
Source Code wtf/weather/ Required ENV Variables Key: WTF_OWM_API_KEY Action: Your OpenWeatherMap API key.
|
Source Code wtf/weather/ Required ENV Variables Key: WTF_OWM_API_KEY Action: Your OpenWeatherMap API key. Note: DEPRECATED. See the apiKey config value, below.
|
||||||
Keyboard Commands Key: / Action: Open/close the widget&rsquo;s help window.
|
Keyboard Commands Key: / Action: Open/close the widget&rsquo;s help window.
|
||||||
Key: h Action: Show the previous weather location.
|
Key: h Action: Show the previous weather location.
|
||||||
Key: l Action: Show the next weather location.
|
Key: l Action: Show the next weather location.
|
||||||
Key: ← Action: Show the previous weather location.
|
Key: ← Action: Show the previous weather location.</description>
|
||||||
Key: → Action: Show the next weather location.</description>
|
|
||||||
</item>
|
</item>
|
||||||
|
|
||||||
<item>
|
<item>
|
||||||
|
@ -85,7 +85,7 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">Gitlab</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">GitLab</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
||||||
@ -100,6 +100,8 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todoist/">Todoist</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/travisci/">Travis CI</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -85,7 +85,7 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">Gitlab</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">GitLab</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
||||||
@ -100,6 +100,8 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todoist/">Todoist</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/travisci/">Travis CI</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -85,7 +85,7 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">Gitlab</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">GitLab</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
||||||
@ -100,6 +100,8 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todoist/">Todoist</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/travisci/">Travis CI</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -85,7 +85,7 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">Gitlab</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">GitLab</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
||||||
@ -100,6 +100,8 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todoist/">Todoist</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/travisci/">Travis CI</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -85,7 +85,7 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">Gitlab</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">GitLab</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
||||||
@ -100,6 +100,8 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todoist/">Todoist</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/travisci/">Travis CI</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -85,7 +85,7 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">Gitlab</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">GitLab</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
||||||
@ -100,6 +100,8 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todoist/">Todoist</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/travisci/">Travis CI</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -85,7 +85,7 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">Gitlab</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">GitLab</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
||||||
@ -100,6 +100,8 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todoist/">Todoist</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/travisci/">Travis CI</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -85,7 +85,7 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">Gitlab</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">GitLab</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
||||||
@ -100,6 +100,8 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todoist/">Todoist</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/travisci/">Travis CI</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -85,7 +85,7 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">Gitlab</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">GitLab</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
||||||
@ -100,6 +100,8 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todoist/">Todoist</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/travisci/">Travis CI</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -85,7 +85,7 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">Gitlab</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">GitLab</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
||||||
@ -100,6 +100,8 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todoist/">Todoist</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/travisci/">Travis CI</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
@ -179,10 +181,12 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
</span><span class="w"> </span>height<span class="p">:</span><span class="w"> </span><span class="m">2</span><span class="w">
|
</span><span class="w"> </span>height<span class="p">:</span><span class="w"> </span><span class="m">2</span><span class="w">
|
||||||
</span><span class="w"> </span>width<span class="p">:</span><span class="w"> </span><span class="m">2</span><span class="w">
|
</span><span class="w"> </span>width<span class="p">:</span><span class="w"> </span><span class="m">2</span><span class="w">
|
||||||
</span><span class="w"> </span>refreshInterval<span class="p">:</span><span class="w"> </span><span class="m">300</span><span class="w">
|
</span><span class="w"> </span>refreshInterval<span class="p">:</span><span class="w"> </span><span class="m">300</span><span class="w">
|
||||||
|
</span><span class="w"> </span>domain<span class="p">:</span><span class="w"> </span>https<span class="p">:</span>//gerrit-review.googlesource.com<span class="w">
|
||||||
</span><span class="w"> </span>projects<span class="p">:</span><span class="w">
|
</span><span class="w"> </span>projects<span class="p">:</span><span class="w">
|
||||||
</span><span class="w"> </span>-<span class="w"> </span>org/test-project<span class="s2">"
|
</span><span class="w"> </span>-<span class="w"> </span>org/test-project<span class="s2">"
|
||||||
</span><span class="s2"> - dotfiles
|
</span><span class="s2"> - dotfiles
|
||||||
</span><span class="s2"> username: "</span>myname"</code></pre></div>
|
</span><span class="s2"> username: "</span>myname"<span class="w">
|
||||||
|
</span><span class="w"> </span>verifyServerCertificate<span class="p">:</span><span class="w"> </span><span class="kc">false</span></code></pre></div>
|
||||||
<h3 id="attributes">Attributes</h3>
|
<h3 id="attributes">Attributes</h3>
|
||||||
|
|
||||||
<p><code>enabled</code> <br />
|
<p><code>enabled</code> <br />
|
||||||
@ -197,7 +201,7 @@ How often, in seconds, this module will update its data. <br />
|
|||||||
Values: A positive integer, <code>0..n</code>.</p>
|
Values: A positive integer, <code>0..n</code>.</p>
|
||||||
|
|
||||||
<p><code>domain</code> <br />
|
<p><code>domain</code> <br />
|
||||||
<em>Optional</em>. Your Gerrit corporate domain. <br />
|
Your Gerrit corporate domain. <br />
|
||||||
Values: A valid URI.</p>
|
Values: A valid URI.</p>
|
||||||
|
|
||||||
<p><code>projects</code> <br />
|
<p><code>projects</code> <br />
|
||||||
|
@ -85,7 +85,7 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">Gitlab</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">GitLab</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
||||||
@ -100,6 +100,8 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todoist/">Todoist</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/travisci/">Travis CI</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -85,7 +85,7 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">Gitlab</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">GitLab</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
||||||
@ -100,6 +100,8 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todoist/">Todoist</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/travisci/">Travis CI</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
@ -184,6 +186,7 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<h2 id="configuration">Configuration</h2>
|
<h2 id="configuration">Configuration</h2>
|
||||||
<div class="highlight"><pre class="chroma"><code class="language-yaml" data-lang="yaml">github<span class="p">:</span><span class="w">
|
<div class="highlight"><pre class="chroma"><code class="language-yaml" data-lang="yaml">github<span class="p">:</span><span class="w">
|
||||||
</span><span class="w"> </span>enabled<span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
|
</span><span class="w"> </span>enabled<span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
|
||||||
|
</span><span class="w"> </span>enableStatus<span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
|
||||||
</span><span class="w"> </span>position<span class="p">:</span><span class="w">
|
</span><span class="w"> </span>position<span class="p">:</span><span class="w">
|
||||||
</span><span class="w"> </span>top<span class="p">:</span><span class="w"> </span><span class="m">2</span><span class="w">
|
</span><span class="w"> </span>top<span class="p">:</span><span class="w"> </span><span class="m">2</span><span class="w">
|
||||||
</span><span class="w"> </span>left<span class="p">:</span><span class="w"> </span><span class="m">3</span><span class="w">
|
</span><span class="w"> </span>left<span class="p">:</span><span class="w"> </span><span class="m">3</span><span class="w">
|
||||||
@ -200,6 +203,11 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
Determines whether or not this module is executed and if its data displayed onscreen. <br />
|
Determines whether or not this module is executed and if its data displayed onscreen. <br />
|
||||||
Values: <code>true</code>, <code>false</code>.</p>
|
Values: <code>true</code>, <code>false</code>.</p>
|
||||||
|
|
||||||
|
<p><code>enableStatus</code> <br />
|
||||||
|
Display pull request mergeability status (‘dirty’, ‘clean’, ‘unstable’,
|
||||||
|
‘blocked’).<br />
|
||||||
|
Values: <code>true</code>, <code>false</code>.</p>
|
||||||
|
|
||||||
<p><code>position</code> <br />
|
<p><code>position</code> <br />
|
||||||
Defines where in the grid this module’s widget will be displayed. <br /></p>
|
Defines where in the grid this module’s widget will be displayed. <br /></p>
|
||||||
|
|
||||||
|
@ -10,8 +10,8 @@
|
|||||||
|
|
||||||
<meta name="generator" content="Hugo 0.38.2" />
|
<meta name="generator" content="Hugo 0.38.2" />
|
||||||
|
|
||||||
<title>Gitlab | WTF - A Terminal Dashboard</title>
|
<title>GitLab | WTF - A Terminal Dashboard</title>
|
||||||
<meta content="Gitlab - WTF - A Terminal Dashboard" property="og:title">
|
<meta content="GitLab - WTF - A Terminal Dashboard" property="og:title">
|
||||||
<meta content=" - " property="og:description">
|
<meta content=" - " property="og:description">
|
||||||
<!-- CSS -->
|
<!-- CSS -->
|
||||||
<link rel="stylesheet" href="//cdn.rawgit.com/milligram/milligram/master/dist/milligram.min.css">
|
<link rel="stylesheet" href="//cdn.rawgit.com/milligram/milligram/master/dist/milligram.min.css">
|
||||||
@ -85,7 +85,7 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">Gitlab</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">GitLab</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
||||||
@ -100,6 +100,8 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todoist/">Todoist</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/travisci/">Travis CI</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
@ -116,7 +118,7 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
|
|
||||||
<div class="content container">
|
<div class="content container">
|
||||||
<div class="post">
|
<div class="post">
|
||||||
<h1>Gitlab</h1>
|
<h1>GitLab</h1>
|
||||||
|
|
||||||
<div class="col-sm-12 col-md-12">
|
<div class="col-sm-12 col-md-12">
|
||||||
<span class="text-left post-date meta">
|
<span class="text-left post-date meta">
|
||||||
@ -138,7 +140,7 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
|
|
||||||
<p><img src="/imgs/modules/gitlab.png" width="640" height="384" alt="gitlab screenshot" /></p>
|
<p><img src="/imgs/modules/gitlab.png" width="640" height="384" alt="gitlab screenshot" /></p>
|
||||||
|
|
||||||
<p>Displays information about your projects hosted on Gitlab:</p>
|
<p>Displays information about your projects hosted on GitLab:</p>
|
||||||
|
|
||||||
<h4 id="open-approval-requests">Open Approval Requests</h4>
|
<h4 id="open-approval-requests">Open Approval Requests</h4>
|
||||||
|
|
||||||
@ -153,7 +155,7 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<h2 id="required-env-variables">Required ENV Variables</h2>
|
<h2 id="required-env-variables">Required ENV Variables</h2>
|
||||||
|
|
||||||
<p><span class="caption">Key:</span> <code>WTF_GITLAB_TOKEN</code> <br />
|
<p><span class="caption">Key:</span> <code>WTF_GITLAB_TOKEN</code> <br />
|
||||||
<span class="caption">Action:</span> A <a href="https://docs.gitlab.com/ce/user/profile/personal_access_tokens.html">Gitlab personal access token</a>. Requires at least <code>api</code> access.</p>
|
<span class="caption">Action:</span> A <a href="https://docs.gitlab.com/ce/user/profile/personal_access_tokens.html">GitLab personal access token</a>. Requires at least <code>api</code> access.</p>
|
||||||
|
|
||||||
<h2 id="keyboard-commands">Keyboard Commands</h2>
|
<h2 id="keyboard-commands">Keyboard Commands</h2>
|
||||||
|
|
||||||
@ -199,17 +201,17 @@ How often, in seconds, this module will update its data. <br />
|
|||||||
Values: A positive integer, <code>0..n</code>.</p>
|
Values: A positive integer, <code>0..n</code>.</p>
|
||||||
|
|
||||||
<p><code>domain</code> <br />
|
<p><code>domain</code> <br />
|
||||||
<em>Optional</em>. Your Gitlab corporate domain. <br />
|
<em>Optional</em>. Your GitLab corporate domain. <br />
|
||||||
Values: A valid URI.</p>
|
Values: A valid URI.</p>
|
||||||
|
|
||||||
<p><code>projects</code> <br />
|
<p><code>projects</code> <br />
|
||||||
A list of key/value pairs each describing a Gitlab project to fetch data
|
A list of key/value pairs each describing a GitLab project to fetch data
|
||||||
for. <br />
|
for. <br />
|
||||||
<span class="caption">Key:</span> The name of the project. <br />
|
<span class="caption">Key:</span> The name of the project. <br />
|
||||||
<span class="caption">Value:</span> The namespace of the project.</p>
|
<span class="caption">Value:</span> The namespace of the project.</p>
|
||||||
|
|
||||||
<p><code>username</code> <br />
|
<p><code>username</code> <br />
|
||||||
Your Gitlab username. Used to figure out which requests require your approval</p>
|
Your GitLab username. Used to figure out which requests require your approval</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -85,7 +85,7 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">Gitlab</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">GitLab</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
||||||
@ -100,6 +100,8 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todoist/">Todoist</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/travisci/">Travis CI</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -85,7 +85,7 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">Gitlab</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">GitLab</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
||||||
@ -100,6 +100,8 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todoist/">Todoist</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/travisci/">Travis CI</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -85,7 +85,7 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">Gitlab</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">GitLab</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
||||||
@ -100,6 +100,8 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todoist/">Todoist</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/travisci/">Travis CI</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -85,7 +85,7 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">Gitlab</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">GitLab</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
||||||
@ -100,6 +100,8 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todoist/">Todoist</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/travisci/">Travis CI</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -85,7 +85,7 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">Gitlab</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">GitLab</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
||||||
@ -100,6 +100,8 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todoist/">Todoist</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/travisci/">Travis CI</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
@ -162,7 +164,8 @@ width="320" height="68" alt="jenkins screenshot" /></p>
|
|||||||
</span><span class="w"> </span>width<span class="p">:</span><span class="w"> </span><span class="m">3</span><span class="w">
|
</span><span class="w"> </span>width<span class="p">:</span><span class="w"> </span><span class="m">3</span><span class="w">
|
||||||
</span><span class="w"> </span>refreshInterval<span class="p">:</span><span class="w"> </span><span class="m">300</span><span class="w">
|
</span><span class="w"> </span>refreshInterval<span class="p">:</span><span class="w"> </span><span class="m">300</span><span class="w">
|
||||||
</span><span class="w"> </span>url<span class="p">:</span><span class="w"> </span><span class="s2">"https://jenkins.domain.com/jenkins/view_url"</span><span class="w">
|
</span><span class="w"> </span>url<span class="p">:</span><span class="w"> </span><span class="s2">"https://jenkins.domain.com/jenkins/view_url"</span><span class="w">
|
||||||
</span><span class="w"> </span>user<span class="p">:</span><span class="w"> </span><span class="s2">"username"</span></code></pre></div>
|
</span><span class="w"> </span>user<span class="p">:</span><span class="w"> </span><span class="s2">"username"</span><span class="w">
|
||||||
|
</span><span class="w"> </span>verifyServerCertificate<span class="p">:</span><span class="w"> </span><span class="kc">true</span></code></pre></div>
|
||||||
<h3 id="attributes">Attributes</h3>
|
<h3 id="attributes">Attributes</h3>
|
||||||
|
|
||||||
<p><code>enabled</code> <br />
|
<p><code>enabled</code> <br />
|
||||||
@ -183,6 +186,11 @@ Your Jenkins username. <br /></p>
|
|||||||
The url to your Jenkins project or view. <br />
|
The url to your Jenkins project or view. <br />
|
||||||
Values: A valid URI.</p>
|
Values: A valid URI.</p>
|
||||||
|
|
||||||
|
<p><code>verifyServerCertificate</code> <br />
|
||||||
|
<em>Optional</em> <br />
|
||||||
|
Determines whether or not the server’s certificate chain and host name are verified. <br />
|
||||||
|
Values: <code>true</code>, <code>false</code>.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="footer">
|
<div class="footer">
|
||||||
|
@ -85,7 +85,7 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">Gitlab</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">GitLab</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
||||||
@ -100,6 +100,8 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todoist/">Todoist</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/travisci/">Travis CI</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
@ -147,7 +149,20 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
|
|
||||||
<h2 id="keyboard-commands">Keyboard Commands</h2>
|
<h2 id="keyboard-commands">Keyboard Commands</h2>
|
||||||
|
|
||||||
<p>None.</p>
|
<p><span class="caption">Key:</span> <code>[return]</code> <br />
|
||||||
|
<span class="caption">Action:</span> Open the selected issue in the browser.</p>
|
||||||
|
|
||||||
|
<p><span class="caption">Key:</span> <code>j</code> <br />
|
||||||
|
<span class="caption">Action:</span> Select the next item in the list.</p>
|
||||||
|
|
||||||
|
<p><span class="caption">Key:</span> <code>k</code> <br />
|
||||||
|
<span class="caption">Action:</span> Select the previous item in the list.</p>
|
||||||
|
|
||||||
|
<p><span class="caption">Key:</span> <code>↓</code> <br />
|
||||||
|
<span class="caption">Action:</span> Select the next item in the list.</p>
|
||||||
|
|
||||||
|
<p><span class="caption">Key:</span> <code>↑</code> <br />
|
||||||
|
<span class="caption">Action:</span> Select the previous item in the list.</p>
|
||||||
|
|
||||||
<h2 id="configuration">Configuration</h2>
|
<h2 id="configuration">Configuration</h2>
|
||||||
|
|
||||||
|
@ -85,7 +85,7 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">Gitlab</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">GitLab</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
||||||
@ -100,6 +100,8 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todoist/">Todoist</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/travisci/">Travis CI</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -85,7 +85,7 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">Gitlab</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">GitLab</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
||||||
@ -100,6 +100,8 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todoist/">Todoist</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/travisci/">Travis CI</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -85,7 +85,7 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">Gitlab</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">GitLab</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
||||||
@ -100,6 +100,8 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todoist/">Todoist</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/travisci/">Travis CI</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -85,7 +85,7 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">Gitlab</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">GitLab</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
||||||
@ -100,6 +100,8 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todoist/">Todoist</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/travisci/">Travis CI</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -85,7 +85,7 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">Gitlab</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">GitLab</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
||||||
@ -100,6 +100,8 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todoist/">Todoist</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/travisci/">Travis CI</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -85,7 +85,7 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">Gitlab</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">GitLab</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
||||||
@ -100,6 +100,8 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todoist/">Todoist</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/travisci/">Travis CI</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -85,7 +85,7 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">Gitlab</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">GitLab</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
||||||
@ -100,6 +100,8 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todoist/">Todoist</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/travisci/">Travis CI</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -85,7 +85,7 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">Gitlab</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">GitLab</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
||||||
@ -100,6 +100,8 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todoist/">Todoist</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/travisci/">Travis CI</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
228
docs/posts/modules/todoist/index.html
Normal file
228
docs/posts/modules/todoist/index.html
Normal file
@ -0,0 +1,228 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en-us" class="wf-firasans-n4-active wf-active">
|
||||||
|
<head>
|
||||||
|
<link href="http://gmpg.org/xfn/11" rel="profile">
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
|
<!-- Enable responsiveness on mobile devices -->
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="generator" content="Hugo 0.38.2" />
|
||||||
|
|
||||||
|
<title>Todoist | WTF - A Terminal Dashboard</title>
|
||||||
|
<meta content="Todoist - WTF - A Terminal Dashboard" property="og:title">
|
||||||
|
<meta content=" - " property="og:description">
|
||||||
|
<!-- CSS -->
|
||||||
|
<link rel="stylesheet" href="//cdn.rawgit.com/milligram/milligram/master/dist/milligram.min.css">
|
||||||
|
<link href="https://fonts.googleapis.com/css?family=Fira+Sans:300,300i,400,400i|Roboto+Mono:300,300i,400,400i" rel="stylesheet">
|
||||||
|
<link rel="stylesheet" href="https://wtfutil.com/css/print.css" media="print">
|
||||||
|
<link rel="stylesheet" href="https://wtfutil.com/css/poole.css">
|
||||||
|
<link rel="stylesheet" href="https://wtfutil.com/css/hyde.css">
|
||||||
|
<link rel="stylesheet" href="https://wtfutil.com/css/syntax.css">
|
||||||
|
<link rel="stylesheet" href="https://wtfutil.com/css/wtf.css">
|
||||||
|
<!-- Font-Awesome -->
|
||||||
|
<script defer src="https://use.fontawesome.com/releases/v5.0.9/js/all.js" integrity="sha384-8iPTk2s/jMVj81dnzb/iFR2sdA7u06vHJyyLlAd4snFpCl/SnyUjRrbdJsw1pGIl" crossorigin="anonymous"></script>
|
||||||
|
|
||||||
|
<!-- Customised CSS -->
|
||||||
|
<link rel="stylesheet" href="https://wtfutil.com/css/custom.css">
|
||||||
|
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
|
||||||
|
<!--[if lt IE 9]>
|
||||||
|
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
|
||||||
|
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
|
||||||
|
<![endif]-->
|
||||||
|
<!-- Icons -->
|
||||||
|
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/apple-touch-icon-144-precomposed.png">
|
||||||
|
<link rel="shortcut icon" href="/favicon.png">
|
||||||
|
|
||||||
|
<script async defer src="https://buttons.github.io/buttons.js"></script>
|
||||||
|
|
||||||
|
|
||||||
|
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
|
||||||
|
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
|
||||||
|
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
|
||||||
|
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
|
||||||
|
})(window,document,'script','dataLayer','GTM-532RMQJ');</script>
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-532RMQJ"
|
||||||
|
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
||||||
|
|
||||||
|
<div class="sidebar">
|
||||||
|
<div class="container">
|
||||||
|
<div class="sidebar-about text-center">
|
||||||
|
|
||||||
|
<a href="https://wtfutil.com/"> <img src="/img/wtf.png" alt="WFT Logo" class="" width=""> </a>
|
||||||
|
<p class="lead">
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<h3 style="color: white;">Content</h3>
|
||||||
|
|
||||||
|
<ul style="list-style-type: none;">
|
||||||
|
<li class="sidebar-list-item-1"><a href="/posts/overview/">Overview</a></li>
|
||||||
|
<li class="sidebar-list-item-1"><a href="/posts/installation/">Installation</a></li>
|
||||||
|
<li class="sidebar-list-item-1"><a href="/posts/configuration/">Configuration</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/configuration/attributes/">Attributes</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/configuration/iterm2/">iTerm2</a></li>
|
||||||
|
<li class="sidebar-list-item-1"><a href="https://github.com/senorprogrammer/wtf/releases">Releases</a></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<ul style="list-style-type: none;">
|
||||||
|
<li class="sidebar-list-item-1"><a href="/posts/modules/">Modules</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/bamboohr/">BambooHR</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/cryptocurrencies/bittrex/">Bittrex</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/cryptocurrencies/blockfolio/">Blockfolio</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/circleci/">CircleCI</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/clocks/">Clocks</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/cryptocurrencies/cryptolive/">CryptoLive</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/cmdrunner/">CmdRunner</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">GitLab</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/ipinfo/">IPInfo</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/jenkins/">Jenkins</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/jira/">Jira</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/logger/">Logger</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/newrelic/">New Relic</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/opsgenie/">OpsGenie</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/power/">Power</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/prettyweather/">PrettyWeather</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todoist/">Todoist</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/travisci/">Travis CI</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p class="copyright">
|
||||||
|
© 2018 Chris Cummer.
|
||||||
|
<br />
|
||||||
|
<a href="https://creativecommons.org/licenses/by/4.0">Some Rights Reserved</a>.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="content container">
|
||||||
|
<div class="post">
|
||||||
|
<h1>Todoist</h1>
|
||||||
|
|
||||||
|
<div class="col-sm-12 col-md-12">
|
||||||
|
<span class="text-left post-date meta">
|
||||||
|
|
||||||
|
|
||||||
|
Jul 05, 2018
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<br/>
|
||||||
|
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p>Added in <code>v0.0.11</code>.</p>
|
||||||
|
|
||||||
|
<p>Displays all items on specified project.</p>
|
||||||
|
|
||||||
|
<p><img src="/imgs/modules/todoist.png" alt="todoist screenshot" /></p>
|
||||||
|
|
||||||
|
<h2 id="source-code">Source Code</h2>
|
||||||
|
<div class="highlight"><pre class="chroma"><code class="language-bash" data-lang="bash">wtf/todoist/</code></pre></div>
|
||||||
|
<h2 id="required-env-variables">Required ENV Variables</h2>
|
||||||
|
|
||||||
|
<p><span class="caption">Key:</span> <code>WTF_TODOIST_TOKEN</code> <br />
|
||||||
|
<span class="caption">Value:</span> Your Todoist API Token. <br /></p>
|
||||||
|
|
||||||
|
<p><em>You can get your API Token at: todoist.com/prefs/integrations.</em></p>
|
||||||
|
|
||||||
|
<h2 id="keyboard-commands">Keyboard Commands</h2>
|
||||||
|
|
||||||
|
<p><span class="caption">Key:</span> <code>h</code> <br />
|
||||||
|
<span class="caption">Action:</span> Show the previous project.</p>
|
||||||
|
|
||||||
|
<p><span class="caption">Key:</span> <code>←</code> <br />
|
||||||
|
<span class="caption">Action:</span> Show the previous project.</p>
|
||||||
|
|
||||||
|
<p><span class="caption">Key:</span> <code>l</code> <br />
|
||||||
|
<span class="caption">Action:</span> Show the next project.</p>
|
||||||
|
|
||||||
|
<p><span class="caption">Key:</span> <code>→</code> <br />
|
||||||
|
<span class="caption">Action:</span> Show the next project.</p>
|
||||||
|
|
||||||
|
<p><span class="caption">Key:</span> <code>j</code> <br />
|
||||||
|
<span class="caption">Action:</span> Select the next item in the list.</p>
|
||||||
|
|
||||||
|
<p><span class="caption">Key:</span> <code>↓</code> <br />
|
||||||
|
<span class="caption">Action:</span> Select the next item in the list.</p>
|
||||||
|
|
||||||
|
<p><span class="caption">Key:</span> <code>k</code> <br />
|
||||||
|
<span class="caption">Action:</span> Select the previous item in the list.</p>
|
||||||
|
|
||||||
|
<p><span class="caption">Key:</span> <code>↑</code> <br />
|
||||||
|
<span class="caption">Action:</span> Select the previous item in the list.</p>
|
||||||
|
|
||||||
|
<p><span class="caption">Key:</span> <code>c</code> <br />
|
||||||
|
<span class="caption">Action:</span> Close current item.</p>
|
||||||
|
|
||||||
|
<p><span class="caption">Key:</span> <code>d</code> <br />
|
||||||
|
<span class="caption">Action:</span> Delete current item.</p>
|
||||||
|
|
||||||
|
<p><span class="caption">Key:</span> <code>r</code> <br />
|
||||||
|
<span class="caption">Action:</span> Reload all projects.</p>
|
||||||
|
|
||||||
|
<h2 id="configuration">Configuration</h2>
|
||||||
|
<div class="highlight"><pre class="chroma"><code class="language-yaml" data-lang="yaml">todoist<span class="p">:</span><span class="w">
|
||||||
|
</span><span class="w"> </span>enabled<span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
|
||||||
|
</span><span class="w"> </span>position<span class="p">:</span><span class="w">
|
||||||
|
</span><span class="w"> </span>top<span class="p">:</span><span class="w"> </span><span class="m">0</span><span class="w">
|
||||||
|
</span><span class="w"> </span>left<span class="p">:</span><span class="w"> </span><span class="m">2</span><span class="w">
|
||||||
|
</span><span class="w"> </span>height<span class="p">:</span><span class="w"> </span><span class="m">1</span><span class="w">
|
||||||
|
</span><span class="w"> </span>width<span class="p">:</span><span class="w"> </span><span class="m">1</span><span class="w">
|
||||||
|
</span><span class="w"> </span>projects<span class="p">:</span><span class="w">
|
||||||
|
</span><span class="w"> </span>-<span class="w"> </span><span class="m">122247497</span><span class="w">
|
||||||
|
</span><span class="w"> </span>refreshInterval<span class="p">:</span><span class="w"> </span><span class="m">3600</span></code></pre></div>
|
||||||
|
<h3 id="attributes">Attributes</h3>
|
||||||
|
|
||||||
|
<p><code>enabled</code> <br />
|
||||||
|
Determines whether or not this module is executed and if its data displayed onscreen. <br />
|
||||||
|
Values: <code>true</code>, <code>false</code>.</p>
|
||||||
|
|
||||||
|
<p><code>position</code> <br />
|
||||||
|
Where in the grid this module’s widget will be displayed. <br /></p>
|
||||||
|
|
||||||
|
<p><code>projects</code> <br />
|
||||||
|
The todoist projects to fetch items from. <br />
|
||||||
|
Values: The integer ID of the project.</p>
|
||||||
|
|
||||||
|
<p><code>refreshInterval</code> <br />
|
||||||
|
How often, in seconds, this module will update its data. <br />
|
||||||
|
Values: A positive integer, <code>0..n</code>.</p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="footer">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
189
docs/posts/modules/travisci/index.html
Normal file
189
docs/posts/modules/travisci/index.html
Normal file
@ -0,0 +1,189 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en-us" class="wf-firasans-n4-active wf-active">
|
||||||
|
<head>
|
||||||
|
<link href="http://gmpg.org/xfn/11" rel="profile">
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
|
<!-- Enable responsiveness on mobile devices -->
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="generator" content="Hugo 0.38.2" />
|
||||||
|
|
||||||
|
<title>TravisCI | WTF - A Terminal Dashboard</title>
|
||||||
|
<meta content="TravisCI - WTF - A Terminal Dashboard" property="og:title">
|
||||||
|
<meta content=" - " property="og:description">
|
||||||
|
<!-- CSS -->
|
||||||
|
<link rel="stylesheet" href="//cdn.rawgit.com/milligram/milligram/master/dist/milligram.min.css">
|
||||||
|
<link href="https://fonts.googleapis.com/css?family=Fira+Sans:300,300i,400,400i|Roboto+Mono:300,300i,400,400i" rel="stylesheet">
|
||||||
|
<link rel="stylesheet" href="https://wtfutil.com/css/print.css" media="print">
|
||||||
|
<link rel="stylesheet" href="https://wtfutil.com/css/poole.css">
|
||||||
|
<link rel="stylesheet" href="https://wtfutil.com/css/hyde.css">
|
||||||
|
<link rel="stylesheet" href="https://wtfutil.com/css/syntax.css">
|
||||||
|
<link rel="stylesheet" href="https://wtfutil.com/css/wtf.css">
|
||||||
|
<!-- Font-Awesome -->
|
||||||
|
<script defer src="https://use.fontawesome.com/releases/v5.0.9/js/all.js" integrity="sha384-8iPTk2s/jMVj81dnzb/iFR2sdA7u06vHJyyLlAd4snFpCl/SnyUjRrbdJsw1pGIl" crossorigin="anonymous"></script>
|
||||||
|
|
||||||
|
<!-- Customised CSS -->
|
||||||
|
<link rel="stylesheet" href="https://wtfutil.com/css/custom.css">
|
||||||
|
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
|
||||||
|
<!--[if lt IE 9]>
|
||||||
|
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
|
||||||
|
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
|
||||||
|
<![endif]-->
|
||||||
|
<!-- Icons -->
|
||||||
|
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/apple-touch-icon-144-precomposed.png">
|
||||||
|
<link rel="shortcut icon" href="/favicon.png">
|
||||||
|
|
||||||
|
<script async defer src="https://buttons.github.io/buttons.js"></script>
|
||||||
|
|
||||||
|
|
||||||
|
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
|
||||||
|
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
|
||||||
|
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
|
||||||
|
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
|
||||||
|
})(window,document,'script','dataLayer','GTM-532RMQJ');</script>
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-532RMQJ"
|
||||||
|
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
||||||
|
|
||||||
|
<div class="sidebar">
|
||||||
|
<div class="container">
|
||||||
|
<div class="sidebar-about text-center">
|
||||||
|
|
||||||
|
<a href="https://wtfutil.com/"> <img src="/img/wtf.png" alt="WFT Logo" class="" width=""> </a>
|
||||||
|
<p class="lead">
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<h3 style="color: white;">Content</h3>
|
||||||
|
|
||||||
|
<ul style="list-style-type: none;">
|
||||||
|
<li class="sidebar-list-item-1"><a href="/posts/overview/">Overview</a></li>
|
||||||
|
<li class="sidebar-list-item-1"><a href="/posts/installation/">Installation</a></li>
|
||||||
|
<li class="sidebar-list-item-1"><a href="/posts/configuration/">Configuration</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/configuration/attributes/">Attributes</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/configuration/iterm2/">iTerm2</a></li>
|
||||||
|
<li class="sidebar-list-item-1"><a href="https://github.com/senorprogrammer/wtf/releases">Releases</a></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<ul style="list-style-type: none;">
|
||||||
|
<li class="sidebar-list-item-1"><a href="/posts/modules/">Modules</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/bamboohr/">BambooHR</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/cryptocurrencies/bittrex/">Bittrex</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/cryptocurrencies/blockfolio/">Blockfolio</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/circleci/">CircleCI</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/clocks/">Clocks</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/cryptocurrencies/cryptolive/">CryptoLive</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/cmdrunner/">CmdRunner</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">GitLab</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/ipinfo/">IPInfo</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/jenkins/">Jenkins</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/jira/">Jira</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/logger/">Logger</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/newrelic/">New Relic</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/opsgenie/">OpsGenie</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/power/">Power</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/prettyweather/">PrettyWeather</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todoist/">Todoist</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/travisci/">Travis CI</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p class="copyright">
|
||||||
|
© 2018 Chris Cummer.
|
||||||
|
<br />
|
||||||
|
<a href="https://creativecommons.org/licenses/by/4.0">Some Rights Reserved</a>.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="content container">
|
||||||
|
<div class="post">
|
||||||
|
<h1>TravisCI</h1>
|
||||||
|
|
||||||
|
<div class="col-sm-12 col-md-12">
|
||||||
|
<span class="text-left post-date meta">
|
||||||
|
|
||||||
|
|
||||||
|
Jul 18, 2018
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<br/>
|
||||||
|
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p>Added in <code>v0.0.12</code>.</p>
|
||||||
|
|
||||||
|
<p>Displays build information for your Travis CI account.</p>
|
||||||
|
|
||||||
|
<p><img src="/imgs/modules/travisci.png" width="609" height="150" alt="travisci screenshot" /></p>
|
||||||
|
|
||||||
|
<h2 id="source-code">Source Code</h2>
|
||||||
|
<div class="highlight"><pre class="chroma"><code class="language-bash" data-lang="bash">wtf/travisci/</code></pre></div>
|
||||||
|
<h2 id="required-env-variables">Required ENV Variables</h2>
|
||||||
|
|
||||||
|
<p><span class="caption">Key:</span> <code>WTF_TRAVIS_API_TOKEN</code> <br />
|
||||||
|
<span class="caption">Value:</span> Your <a href="https://developer.travis-ci.org/authentication">Travis CI API</a> access token.</p>
|
||||||
|
|
||||||
|
<h2 id="keyboard-commands">Keyboard Commands</h2>
|
||||||
|
|
||||||
|
<p>None.</p>
|
||||||
|
|
||||||
|
<h2 id="configuration">Configuration</h2>
|
||||||
|
<div class="highlight"><pre class="chroma"><code class="language-yaml" data-lang="yaml">travisci<span class="p">:</span><span class="w">
|
||||||
|
</span><span class="w"> </span>enabled<span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
|
||||||
|
</span><span class="w"> </span>position<span class="p">:</span><span class="w">
|
||||||
|
</span><span class="w"> </span>top<span class="p">:</span><span class="w"> </span><span class="m">4</span><span class="w">
|
||||||
|
</span><span class="w"> </span>left<span class="p">:</span><span class="w"> </span><span class="m">1</span><span class="w">
|
||||||
|
</span><span class="w"> </span>height<span class="p">:</span><span class="w"> </span><span class="m">1</span><span class="w">
|
||||||
|
</span><span class="w"> </span>width<span class="p">:</span><span class="w"> </span><span class="m">2</span><span class="w">
|
||||||
|
</span><span class="w"> </span>refreshInterval<span class="p">:</span><span class="w"> </span><span class="m">900</span></code></pre></div>
|
||||||
|
<h3 id="attributes">Attributes</h3>
|
||||||
|
|
||||||
|
<p><code>enabled</code> <br />
|
||||||
|
Determines whether or not this module is executed and if its data displayed onscreen. <br />
|
||||||
|
Values: <code>true</code>, <code>false</code>.</p>
|
||||||
|
|
||||||
|
<p><code>position</code> <br />
|
||||||
|
Defines where in the grid this module’s widget will be displayed. <br /></p>
|
||||||
|
|
||||||
|
<p><code>refreshInterval</code> <br />
|
||||||
|
How often, in seconds, this module will update its data. <br />
|
||||||
|
Values: A positive integer, <code>0..n</code>.</p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="footer">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -85,7 +85,7 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">Gitlab</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">GitLab</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
||||||
@ -100,6 +100,8 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todoist/">Todoist</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/travisci/">Travis CI</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -85,7 +85,7 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">Gitlab</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">GitLab</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
||||||
@ -100,6 +100,8 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todoist/">Todoist</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/travisci/">Travis CI</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
@ -144,7 +146,8 @@ current temperature, sunrise time, and sunset time.</p>
|
|||||||
<h2 id="required-env-variables">Required ENV Variables</h2>
|
<h2 id="required-env-variables">Required ENV Variables</h2>
|
||||||
|
|
||||||
<p><span class="caption">Key:</span> <code>WTF_OWM_API_KEY</code> <br />
|
<p><span class="caption">Key:</span> <code>WTF_OWM_API_KEY</code> <br />
|
||||||
<span class="caption">Action:</span> Your <a href="https://openweathermap.org/appid">OpenWeatherMap API</a> key.</p>
|
<span class="caption">Action:</span> Your <a href="https://openweathermap.org/appid">OpenWeatherMap API</a> key. <br />
|
||||||
|
<span class="caption">Note:</span> DEPRECATED. See the <code>apiKey</code> config value, below.</p>
|
||||||
|
|
||||||
<h2 id="keyboard-commands">Keyboard Commands</h2>
|
<h2 id="keyboard-commands">Keyboard Commands</h2>
|
||||||
|
|
||||||
@ -165,6 +168,7 @@ current temperature, sunrise time, and sunset time.</p>
|
|||||||
|
|
||||||
<h2 id="configuration">Configuration</h2>
|
<h2 id="configuration">Configuration</h2>
|
||||||
<div class="highlight"><pre class="chroma"><code class="language-yaml" data-lang="yaml">weather<span class="p">:</span><span class="w">
|
<div class="highlight"><pre class="chroma"><code class="language-yaml" data-lang="yaml">weather<span class="p">:</span><span class="w">
|
||||||
|
</span><span class="w"> </span>apiKey<span class="p">:</span><span class="w"> </span><span class="s2">"2dfb3e3650a1950adddb6badf5ba1aaa"</span><span class="w">
|
||||||
</span><span class="w"> </span><span class="c"># From http://openweathermap.org/help/city_list.txt</span><span class="w">
|
</span><span class="w"> </span><span class="c"># From http://openweathermap.org/help/city_list.txt</span><span class="w">
|
||||||
</span><span class="w"> </span>cityids<span class="p">:</span><span class="w">
|
</span><span class="w"> </span>cityids<span class="p">:</span><span class="w">
|
||||||
</span><span class="w"> </span>-<span class="w"> </span><span class="m">6173331</span><span class="w">
|
</span><span class="w"> </span>-<span class="w"> </span><span class="m">6173331</span><span class="w">
|
||||||
@ -184,6 +188,9 @@ current temperature, sunrise time, and sunset time.</p>
|
|||||||
</span><span class="w"> </span>tempUnit<span class="p">:</span><span class="w"> </span><span class="s2">"C"</span></code></pre></div>
|
</span><span class="w"> </span>tempUnit<span class="p">:</span><span class="w"> </span><span class="s2">"C"</span></code></pre></div>
|
||||||
<h3 id="attributes">Attributes</h3>
|
<h3 id="attributes">Attributes</h3>
|
||||||
|
|
||||||
|
<p><code>apiKey</code> <br />
|
||||||
|
Your <a href="https://openweathermap.org/appid">OpenWeatherMap API</a> key.</p>
|
||||||
|
|
||||||
<p><code>cityids</code> <br />
|
<p><code>cityids</code> <br />
|
||||||
A list of the <a
|
A list of the <a
|
||||||
href="http://openweathermap.org/help/city_list.txt">OpenWeatherMap city
|
href="http://openweathermap.org/help/city_list.txt">OpenWeatherMap city
|
||||||
|
@ -85,7 +85,7 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">Gitlab</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">GitLab</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
||||||
@ -100,6 +100,8 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todoist/">Todoist</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/travisci/">Travis CI</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -2,6 +2,16 @@
|
|||||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
|
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
|
||||||
xmlns:xhtml="http://www.w3.org/1999/xhtml">
|
xmlns:xhtml="http://www.w3.org/1999/xhtml">
|
||||||
|
|
||||||
|
<url>
|
||||||
|
<loc>https://wtfutil.com/posts/modules/travisci/</loc>
|
||||||
|
<lastmod>2018-07-18T14:36:08-04:00</lastmod>
|
||||||
|
</url>
|
||||||
|
|
||||||
|
<url>
|
||||||
|
<loc>https://wtfutil.com/posts/modules/todoist/</loc>
|
||||||
|
<lastmod>2018-07-05T22:55:55-03:00</lastmod>
|
||||||
|
</url>
|
||||||
|
|
||||||
<url>
|
<url>
|
||||||
<loc>https://wtfutil.com/posts/modules/gerrit/</loc>
|
<loc>https://wtfutil.com/posts/modules/gerrit/</loc>
|
||||||
<lastmod>2018-06-27T15:55:42-07:00</lastmod>
|
<lastmod>2018-06-27T15:55:42-07:00</lastmod>
|
||||||
@ -179,7 +189,7 @@
|
|||||||
|
|
||||||
<url>
|
<url>
|
||||||
<loc>https://wtfutil.com/posts/</loc>
|
<loc>https://wtfutil.com/posts/</loc>
|
||||||
<lastmod>2018-06-27T15:55:42-07:00</lastmod>
|
<lastmod>2018-07-18T14:36:08-04:00</lastmod>
|
||||||
<priority>0</priority>
|
<priority>0</priority>
|
||||||
</url>
|
</url>
|
||||||
|
|
||||||
@ -190,7 +200,7 @@
|
|||||||
|
|
||||||
<url>
|
<url>
|
||||||
<loc>https://wtfutil.com/</loc>
|
<loc>https://wtfutil.com/</loc>
|
||||||
<lastmod>2018-06-27T15:55:42-07:00</lastmod>
|
<lastmod>2018-07-18T14:36:08-04:00</lastmod>
|
||||||
<priority>0</priority>
|
<priority>0</priority>
|
||||||
</url>
|
</url>
|
||||||
|
|
||||||
|
@ -87,7 +87,7 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gerrit/">Gerrit</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/git/">Git</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/github/">GitHub</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">Gitlab</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gitlab/">GitLab</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gcal/">Google Calendar</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/gspreadsheet">Google Spreadsheet</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/ipapi/">IP-API</a></li>
|
||||||
@ -102,6 +102,8 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
|||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/security/">Security</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/textfile/">Text File</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todo/">Todo</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/todoist/">Todoist</a></li>
|
||||||
|
<li class="sidebar-list-item-2"><a href="/posts/modules/travisci/">Travis CI</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/trello/">Trello</a></li>
|
||||||
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
<li class="sidebar-list-item-2"><a href="/posts/modules/weather/">Weather</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -13,6 +13,7 @@ import (
|
|||||||
type Flags struct {
|
type Flags struct {
|
||||||
Config string `short:"c" long:"config" optional:"yes" description:"Path to config file"`
|
Config string `short:"c" long:"config" optional:"yes" description:"Path to config file"`
|
||||||
Module string `short:"m" long:"module" optional:"yes" description:"Display info about a specific module, i.e.: 'wtf -m=todo'"`
|
Module string `short:"m" long:"module" optional:"yes" description:"Display info about a specific module, i.e.: 'wtf -m=todo'"`
|
||||||
|
Profile bool `short:"p" long:"profile" optional:"yes" description:"Profile application memory usage"`
|
||||||
Version bool `short:"v" long:"version" description:"Show version info"`
|
Version bool `short:"v" long:"version" description:"Show version info"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@ package github
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/google/go-github/github"
|
||||||
"github.com/senorprogrammer/wtf/wtf"
|
"github.com/senorprogrammer/wtf/wtf"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -37,7 +38,7 @@ func (widget *Widget) displayMyPullRequests(repo *GithubRepo, username string) s
|
|||||||
|
|
||||||
str := ""
|
str := ""
|
||||||
for _, pr := range prs {
|
for _, pr := range prs {
|
||||||
str = str + fmt.Sprintf(" [green]%4d[white] %s\n", *pr.Number, *pr.Title)
|
str = str + fmt.Sprintf(" %s[green]%4d[white] %s\n", mergeString(pr), *pr.Number, *pr.Title)
|
||||||
}
|
}
|
||||||
|
|
||||||
return str
|
return str
|
||||||
@ -72,3 +73,24 @@ func (widget *Widget) displayStats(repo *GithubRepo) string {
|
|||||||
func (widget *Widget) title(repo *GithubRepo) string {
|
func (widget *Widget) title(repo *GithubRepo) string {
|
||||||
return fmt.Sprintf("[green]%s - %s[white]", repo.Owner, repo.Name)
|
return fmt.Sprintf("[green]%s - %s[white]", repo.Owner, repo.Name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func showStatus() bool {
|
||||||
|
return wtf.Config.UBool("wtf.mods.github.enableStatus", false)
|
||||||
|
}
|
||||||
|
|
||||||
|
var mergeIcons = map[string]string{
|
||||||
|
"dirty": "[red]![white] ",
|
||||||
|
"clean": "[green]✔[white] ",
|
||||||
|
"unstable": "[red]✖[white] ",
|
||||||
|
"blocked": "[red]✖[white] ",
|
||||||
|
}
|
||||||
|
|
||||||
|
func mergeString(pr *github.PullRequest) string {
|
||||||
|
if !showStatus() {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
if str, ok := mergeIcons[pr.GetMergeableState()]; ok {
|
||||||
|
return str
|
||||||
|
}
|
||||||
|
return "? "
|
||||||
|
}
|
||||||
|
@ -103,9 +103,35 @@ func (repo *GithubRepo) myPullRequests(username string) []*ghb.PullRequest {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if showStatus() {
|
||||||
|
prs = repo.individualPRs(prs)
|
||||||
|
}
|
||||||
|
|
||||||
return prs
|
return prs
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// individualPRs takes a list of pull requests (presumably returned from
|
||||||
|
// github.PullRequests.List) and fetches them individually to get more detailed
|
||||||
|
// status info on each. see: https://developer.github.com/v3/git/#checking-mergeability-of-pull-requests
|
||||||
|
func (repo *GithubRepo) individualPRs(prs []*ghb.PullRequest) []*ghb.PullRequest {
|
||||||
|
github, err := repo.githubClient()
|
||||||
|
if err != nil {
|
||||||
|
return prs
|
||||||
|
}
|
||||||
|
|
||||||
|
var ret []*ghb.PullRequest
|
||||||
|
for i := range prs {
|
||||||
|
pr, _, err := github.PullRequests.Get(context.Background(), repo.Owner, repo.Name, prs[i].GetNumber())
|
||||||
|
if err != nil {
|
||||||
|
// worst case, just keep the original one
|
||||||
|
ret = append(ret, prs[i])
|
||||||
|
} else {
|
||||||
|
ret = append(ret, pr)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret
|
||||||
|
}
|
||||||
|
|
||||||
// myReviewRequests returns a list of pull requests for which username has been
|
// myReviewRequests returns a list of pull requests for which username has been
|
||||||
// requested to do a code review
|
// requested to do a code review
|
||||||
func (repo *GithubRepo) myReviewRequests(username string) []*ghb.PullRequest {
|
func (repo *GithubRepo) myReviewRequests(username string) []*ghb.PullRequest {
|
||||||
|
@ -2,12 +2,15 @@ package jenkins
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"crypto/tls"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"io"
|
"io"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"github.com/senorprogrammer/wtf/wtf"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Create(jenkinsURL string, username string, apiKey string) (*View, error) {
|
func Create(jenkinsURL string, username string, apiKey string) (*View, error) {
|
||||||
@ -26,7 +29,13 @@ func Create(jenkinsURL string, username string, apiKey string) (*View, error) {
|
|||||||
req, _ := http.NewRequest("GET", jenkinsAPIURL.String(), nil)
|
req, _ := http.NewRequest("GET", jenkinsAPIURL.String(), nil)
|
||||||
req.SetBasicAuth(username, apiKey)
|
req.SetBasicAuth(username, apiKey)
|
||||||
|
|
||||||
httpClient := &http.Client{}
|
verifyServerCertificate := wtf.Config.UBool("wtf.mods.jenkins.verifyServerCertificate", true)
|
||||||
|
httpClient := &http.Client{Transport: &http.Transport{
|
||||||
|
TLSClientConfig: &tls.Config{
|
||||||
|
InsecureSkipVerify: !verifyServerCertificate,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
resp, err := httpClient.Do(req)
|
resp, err := httpClient.Do(req)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
126
jira/widget.go
126
jira/widget.go
@ -3,18 +3,24 @@ package jira
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/gdamore/tcell"
|
||||||
"github.com/senorprogrammer/wtf/wtf"
|
"github.com/senorprogrammer/wtf/wtf"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Widget struct {
|
type Widget struct {
|
||||||
wtf.TextWidget
|
wtf.TextWidget
|
||||||
|
|
||||||
|
result *SearchResult
|
||||||
|
selected int
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewWidget() *Widget {
|
func NewWidget() *Widget {
|
||||||
widget := Widget{
|
widget := Widget{
|
||||||
TextWidget: wtf.NewTextWidget(" Jira ", "jira", false),
|
TextWidget: wtf.NewTextWidget(" Jira ", "jira", true),
|
||||||
}
|
}
|
||||||
|
widget.unselect()
|
||||||
|
|
||||||
|
widget.View.SetInputCapture(widget.keyboardIntercept)
|
||||||
return &widget
|
return &widget
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -29,45 +35,94 @@ func (widget *Widget) Refresh() {
|
|||||||
|
|
||||||
widget.UpdateRefreshedAt()
|
widget.UpdateRefreshedAt()
|
||||||
|
|
||||||
var content string
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
widget.result = nil
|
||||||
widget.View.SetWrap(true)
|
widget.View.SetWrap(true)
|
||||||
widget.View.SetTitle(widget.Name)
|
widget.View.SetTitle(widget.Name)
|
||||||
content = err.Error()
|
widget.View.SetText(err.Error())
|
||||||
} else {
|
} else {
|
||||||
widget.View.SetWrap(false)
|
widget.result = searchResult
|
||||||
widget.View.SetTitle(
|
|
||||||
fmt.Sprintf(
|
|
||||||
"%s- [green]%s[white]",
|
|
||||||
widget.Name,
|
|
||||||
wtf.Config.UString("wtf.mods.jira.project"),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
content = widget.contentFrom(searchResult)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
widget.View.SetText(content)
|
widget.display()
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------- Unexported Functions -------------------- */
|
/* -------------------- Unexported Functions -------------------- */
|
||||||
|
|
||||||
|
func (widget *Widget) display() {
|
||||||
|
if widget.result == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
widget.View.SetWrap(false)
|
||||||
|
widget.View.SetTitle(
|
||||||
|
fmt.Sprintf(
|
||||||
|
"%s- [green]%s[white] ",
|
||||||
|
widget.Name,
|
||||||
|
wtf.Config.UString("wtf.mods.jira.project"),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
widget.View.SetText(fmt.Sprintf("%s", widget.contentFrom(widget.result)))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (widget *Widget) next() {
|
||||||
|
widget.selected++
|
||||||
|
if widget.result != nil && widget.selected >= len(widget.result.Issues) {
|
||||||
|
widget.selected = 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (widget *Widget) prev() {
|
||||||
|
widget.selected--
|
||||||
|
if widget.selected < 0 && widget.result != nil {
|
||||||
|
widget.selected = len(widget.result.Issues) - 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (widget *Widget) openItem() {
|
||||||
|
sel := widget.selected
|
||||||
|
if sel >= 0 && widget.result != nil && sel < len(widget.result.Issues) {
|
||||||
|
issue := &widget.result.Issues[widget.selected]
|
||||||
|
wtf.OpenFile(wtf.Config.UString("wtf.mods.jira.domain") + "/browse/" + issue.Key)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (widget *Widget) unselect() {
|
||||||
|
widget.selected = -1
|
||||||
|
}
|
||||||
|
|
||||||
func (widget *Widget) contentFrom(searchResult *SearchResult) string {
|
func (widget *Widget) contentFrom(searchResult *SearchResult) string {
|
||||||
str := " [red]Assigned Issues[white]\n"
|
str := " [red]Assigned Issues[white]\n"
|
||||||
|
|
||||||
for idx, issue := range searchResult.Issues {
|
for idx, issue := range searchResult.Issues {
|
||||||
str = str + fmt.Sprintf(
|
fmtStr := fmt.Sprintf(
|
||||||
" [%s]%-6s[white] [green]%-10s[%s] %s\n",
|
"[%s] [%s]%-6s[white] [green]%-10s[white] [%s]%s",
|
||||||
|
widget.rowColor(idx),
|
||||||
widget.issueTypeColor(&issue),
|
widget.issueTypeColor(&issue),
|
||||||
issue.IssueFields.IssueType.Name,
|
issue.IssueFields.IssueType.Name,
|
||||||
issue.Key,
|
issue.Key,
|
||||||
wtf.RowColor("jira", idx),
|
widget.rowColor(idx),
|
||||||
issue.IssueFields.Summary,
|
issue.IssueFields.Summary,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
_, _, w, _ := widget.View.GetInnerRect()
|
||||||
|
fmtStr = fmtStr + wtf.PadRow(len(issue.IssueFields.Summary), w+1)
|
||||||
|
|
||||||
|
str = str + fmtStr + "\n"
|
||||||
}
|
}
|
||||||
|
|
||||||
return str
|
return str
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (widget *Widget) rowColor(idx int) string {
|
||||||
|
if widget.View.HasFocus() && (idx == widget.selected) {
|
||||||
|
foreColor := wtf.Config.UString("wtf.colors.highlight.fore", "black")
|
||||||
|
backColor := wtf.Config.UString("wtf.colors.highlight.back", "orange")
|
||||||
|
|
||||||
|
return fmt.Sprintf("%s:%s", foreColor, backColor)
|
||||||
|
}
|
||||||
|
return wtf.RowColor("jira", idx)
|
||||||
|
}
|
||||||
|
|
||||||
func (widget *Widget) issueTypeColor(issue *Issue) string {
|
func (widget *Widget) issueTypeColor(issue *Issue) string {
|
||||||
switch issue.IssueFields.IssueType.Name {
|
switch issue.IssueFields.IssueType.Name {
|
||||||
case "Bug":
|
case "Bug":
|
||||||
@ -98,3 +153,42 @@ func getProjects() []string {
|
|||||||
}
|
}
|
||||||
return ret
|
return ret
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (widget *Widget) keyboardIntercept(event *tcell.EventKey) *tcell.EventKey {
|
||||||
|
switch string(event.Rune()) {
|
||||||
|
case "j":
|
||||||
|
// Select the next item down
|
||||||
|
widget.next()
|
||||||
|
widget.display()
|
||||||
|
return nil
|
||||||
|
case "k":
|
||||||
|
// Select the next item up
|
||||||
|
widget.prev()
|
||||||
|
widget.display()
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
switch event.Key() {
|
||||||
|
case tcell.KeyDown:
|
||||||
|
// Select the next item down
|
||||||
|
widget.next()
|
||||||
|
widget.display()
|
||||||
|
return nil
|
||||||
|
case tcell.KeyEnter:
|
||||||
|
widget.openItem()
|
||||||
|
return nil
|
||||||
|
case tcell.KeyEsc:
|
||||||
|
// Unselect the current row
|
||||||
|
widget.unselect()
|
||||||
|
widget.display()
|
||||||
|
return event
|
||||||
|
case tcell.KeyUp:
|
||||||
|
// Select the next item up
|
||||||
|
widget.prev()
|
||||||
|
widget.display()
|
||||||
|
return nil
|
||||||
|
default:
|
||||||
|
// Pass it along
|
||||||
|
return event
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -3,6 +3,8 @@ package todo
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/rivo/tview"
|
||||||
|
"github.com/senorprogrammer/wtf/checklist"
|
||||||
"github.com/senorprogrammer/wtf/wtf"
|
"github.com/senorprogrammer/wtf/wtf"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -10,38 +12,35 @@ const checkWidth = 4
|
|||||||
|
|
||||||
func (widget *Widget) display() {
|
func (widget *Widget) display() {
|
||||||
str := ""
|
str := ""
|
||||||
newList := List{selected: -1}
|
newList := checklist.NewChecklist()
|
||||||
|
|
||||||
selectedItem := widget.list.Selected()
|
|
||||||
maxLineLen := widget.list.LongestLine()
|
|
||||||
|
|
||||||
for _, item := range widget.list.UncheckedItems() {
|
for _, item := range widget.list.UncheckedItems() {
|
||||||
str = str + widget.formattedItemLine(item, selectedItem, maxLineLen)
|
str = str + widget.formattedItemLine(item, widget.list.SelectedItem(), widget.list.LongestLine())
|
||||||
newList.Items = append(newList.Items, item)
|
newList.Items = append(newList.Items, item)
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, item := range widget.list.CheckedItems() {
|
for _, item := range widget.list.CheckedItems() {
|
||||||
str = str + widget.formattedItemLine(item, selectedItem, maxLineLen)
|
str = str + widget.formattedItemLine(item, widget.list.SelectedItem(), widget.list.LongestLine())
|
||||||
newList.Items = append(newList.Items, item)
|
newList.Items = append(newList.Items, item)
|
||||||
}
|
}
|
||||||
|
|
||||||
newList.SetSelectedByItem(widget.list.Selected())
|
newList.SetSelectedByItem(widget.list.SelectedItem())
|
||||||
widget.SetList(&newList)
|
widget.SetList(newList)
|
||||||
|
|
||||||
widget.View.Clear()
|
widget.View.Clear()
|
||||||
widget.View.SetText(str)
|
widget.View.SetText(str)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (widget *Widget) formattedItemLine(item *Item, selectedItem *Item, maxLen int) string {
|
func (widget *Widget) formattedItemLine(item *checklist.ChecklistItem, selectedItem *checklist.ChecklistItem, maxLen int) string {
|
||||||
foreColor, backColor := "white", wtf.Config.UString("wtf.colors.background", "black")
|
foreColor, backColor := "white", wtf.Config.UString("wtf.colors.background", "black")
|
||||||
|
|
||||||
if item.Checked {
|
if item.Checked {
|
||||||
foreColor = wtf.Config.UString("wtf.mods.todo.colors.checked", "white")
|
foreColor = wtf.Config.UString("wtf.colors.checked", "white")
|
||||||
}
|
}
|
||||||
|
|
||||||
if widget.View.HasFocus() && (item == selectedItem) {
|
if widget.View.HasFocus() && (item == selectedItem) {
|
||||||
foreColor = wtf.Config.UString("wtf.mods.todo.colors.highlight.fore", "black")
|
foreColor = wtf.Config.UString("wtf.colors.highlight.fore", "black")
|
||||||
backColor = wtf.Config.UString("wtf.mods.todo.colors.highlight.back", "white")
|
backColor = wtf.Config.UString("wtf.colors.highlight.back", "orange")
|
||||||
}
|
}
|
||||||
|
|
||||||
str := fmt.Sprintf(
|
str := fmt.Sprintf(
|
||||||
@ -49,10 +48,13 @@ func (widget *Widget) formattedItemLine(item *Item, selectedItem *Item, maxLen i
|
|||||||
foreColor,
|
foreColor,
|
||||||
backColor,
|
backColor,
|
||||||
item.CheckMark(),
|
item.CheckMark(),
|
||||||
item.Text,
|
tview.Escape(item.Text),
|
||||||
)
|
)
|
||||||
|
|
||||||
str = str + wtf.PadRow((checkWidth+len(item.Text)), (checkWidth+maxLen)) + "\n"
|
_, _, w, _ := widget.View.GetInnerRect()
|
||||||
|
if w > maxLen {
|
||||||
|
maxLen = w
|
||||||
|
}
|
||||||
|
|
||||||
return str
|
return str + wtf.PadRow((checkWidth+len(item.Text)), (checkWidth+maxLen+1)) + "\n"
|
||||||
}
|
}
|
||||||
|
22
todo/item.go
22
todo/item.go
@ -1,22 +0,0 @@
|
|||||||
package todo
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/senorprogrammer/wtf/wtf"
|
|
||||||
)
|
|
||||||
|
|
||||||
type Item struct {
|
|
||||||
Checked bool
|
|
||||||
Text string
|
|
||||||
}
|
|
||||||
|
|
||||||
func (item *Item) CheckMark() string {
|
|
||||||
if item.Checked {
|
|
||||||
return wtf.Config.UString("wtf.mods.todo.checkedIcon", "x")
|
|
||||||
} else {
|
|
||||||
return " "
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (item *Item) Toggle() {
|
|
||||||
item.Checked = !item.Checked
|
|
||||||
}
|
|
165
todo/list.go
165
todo/list.go
@ -1,165 +0,0 @@
|
|||||||
package todo
|
|
||||||
|
|
||||||
type List struct {
|
|
||||||
Items []*Item
|
|
||||||
|
|
||||||
selected int
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------- Exported Functions -------------------- */
|
|
||||||
|
|
||||||
func (list *List) Add(text string) {
|
|
||||||
item := Item{
|
|
||||||
Checked: false,
|
|
||||||
Text: text,
|
|
||||||
}
|
|
||||||
|
|
||||||
list.Items = append([]*Item{&item}, list.Items...)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (list *List) CheckedItems() []*Item {
|
|
||||||
items := []*Item{}
|
|
||||||
|
|
||||||
for _, item := range list.Items {
|
|
||||||
if item.Checked {
|
|
||||||
items = append(items, item)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return items
|
|
||||||
}
|
|
||||||
|
|
||||||
func (list *List) Delete() {
|
|
||||||
list.Items = append(list.Items[:list.selected], list.Items[list.selected+1:]...)
|
|
||||||
list.Prev()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (list *List) Demote() {
|
|
||||||
if list.isUnselectable() {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
j := list.selected + 1
|
|
||||||
if j >= len(list.Items) {
|
|
||||||
j = 0
|
|
||||||
}
|
|
||||||
|
|
||||||
list.Swap(list.selected, j)
|
|
||||||
list.selected = j
|
|
||||||
}
|
|
||||||
|
|
||||||
func (list *List) Next() {
|
|
||||||
list.selected = list.selected + 1
|
|
||||||
if list.selected >= len(list.Items) {
|
|
||||||
list.selected = 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (list *List) LongestLine() int {
|
|
||||||
maxLen := 0
|
|
||||||
|
|
||||||
for _, item := range list.Items {
|
|
||||||
if len(item.Text) > maxLen {
|
|
||||||
maxLen = len(item.Text)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return maxLen
|
|
||||||
}
|
|
||||||
|
|
||||||
func (list *List) Prev() {
|
|
||||||
list.selected = list.selected - 1
|
|
||||||
if list.selected < 0 {
|
|
||||||
list.selected = len(list.Items) - 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (list *List) Promote() {
|
|
||||||
if list.isUnselectable() {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
j := list.selected - 1
|
|
||||||
if j < 0 {
|
|
||||||
j = len(list.Items) - 1
|
|
||||||
}
|
|
||||||
|
|
||||||
list.Swap(list.selected, j)
|
|
||||||
list.selected = j
|
|
||||||
}
|
|
||||||
|
|
||||||
func (list *List) Selected() *Item {
|
|
||||||
if list.isUnselectable() {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
return list.Items[list.selected]
|
|
||||||
}
|
|
||||||
|
|
||||||
func (list *List) SetSelectedByItem(selectableItem *Item) {
|
|
||||||
for idx, item := range list.Items {
|
|
||||||
if item == selectableItem {
|
|
||||||
list.selected = idx
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Toggle switches the checked state of the currently-selected item
|
|
||||||
func (list *List) Toggle() {
|
|
||||||
if list.isUnselectable() {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
list.Selected().Toggle()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (list *List) UncheckedItems() []*Item {
|
|
||||||
items := []*Item{}
|
|
||||||
|
|
||||||
for _, item := range list.Items {
|
|
||||||
if !item.Checked {
|
|
||||||
items = append(items, item)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return items
|
|
||||||
}
|
|
||||||
|
|
||||||
func (list *List) Unselect() {
|
|
||||||
list.selected = -1
|
|
||||||
}
|
|
||||||
|
|
||||||
func (list *List) Update(text string) {
|
|
||||||
item := list.Selected()
|
|
||||||
|
|
||||||
if item == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
item.Text = text
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------- Sort Interface -------------------- */
|
|
||||||
|
|
||||||
func (list *List) Len() int {
|
|
||||||
return len(list.Items)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (list *List) Less(i, j int) bool {
|
|
||||||
return list.Items[i].Text < list.Items[j].Text
|
|
||||||
}
|
|
||||||
|
|
||||||
func (list *List) Swap(i, j int) {
|
|
||||||
list.Items[i], list.Items[j] = list.Items[j], list.Items[i]
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------- Unexported Functions -------------------- */
|
|
||||||
|
|
||||||
func (list *List) isSelectable() bool {
|
|
||||||
return list.selected >= 0 && list.selected < len(list.Items)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (list *List) isUnselectable() bool {
|
|
||||||
return !list.isSelectable()
|
|
||||||
}
|
|
@ -7,6 +7,7 @@ import (
|
|||||||
"github.com/gdamore/tcell"
|
"github.com/gdamore/tcell"
|
||||||
"github.com/rivo/tview"
|
"github.com/rivo/tview"
|
||||||
"github.com/senorprogrammer/wtf/cfg"
|
"github.com/senorprogrammer/wtf/cfg"
|
||||||
|
"github.com/senorprogrammer/wtf/checklist"
|
||||||
"github.com/senorprogrammer/wtf/wtf"
|
"github.com/senorprogrammer/wtf/wtf"
|
||||||
"gopkg.in/yaml.v2"
|
"gopkg.in/yaml.v2"
|
||||||
)
|
)
|
||||||
@ -39,7 +40,7 @@ type Widget struct {
|
|||||||
|
|
||||||
app *tview.Application
|
app *tview.Application
|
||||||
filePath string
|
filePath string
|
||||||
list *List
|
list checklist.Checklist
|
||||||
pages *tview.Pages
|
pages *tview.Pages
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -49,7 +50,7 @@ func NewWidget(app *tview.Application, pages *tview.Pages) *Widget {
|
|||||||
|
|
||||||
app: app,
|
app: app,
|
||||||
filePath: wtf.Config.UString("wtf.mods.todo.filename"),
|
filePath: wtf.Config.UString("wtf.mods.todo.filename"),
|
||||||
list: &List{selected: -1},
|
list: checklist.NewChecklist(),
|
||||||
pages: pages,
|
pages: pages,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -67,7 +68,7 @@ func (widget *Widget) Refresh() {
|
|||||||
widget.display()
|
widget.display()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (widget *Widget) SetList(newList *List) {
|
func (widget *Widget) SetList(newList checklist.Checklist) {
|
||||||
widget.list = newList
|
widget.list = newList
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -75,11 +76,11 @@ func (widget *Widget) SetList(newList *List) {
|
|||||||
|
|
||||||
// edit opens a modal dialog that permits editing the text of the currently-selected item
|
// edit opens a modal dialog that permits editing the text of the currently-selected item
|
||||||
func (widget *Widget) editItem() {
|
func (widget *Widget) editItem() {
|
||||||
if widget.list.Selected() == nil {
|
if widget.list.SelectedItem() == nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
form := widget.modalForm("Edit:", widget.list.Selected().Text)
|
form := widget.modalForm("Edit:", widget.list.SelectedItem().Text)
|
||||||
|
|
||||||
saveFctn := func() {
|
saveFctn := func() {
|
||||||
text := form.GetFormItem(0).(*tview.InputField).GetText()
|
text := form.GetFormItem(0).(*tview.InputField).GetText()
|
||||||
@ -191,7 +192,7 @@ func (widget *Widget) newItem() {
|
|||||||
saveFctn := func() {
|
saveFctn := func() {
|
||||||
text := form.GetFormItem(0).(*tview.InputField).GetText()
|
text := form.GetFormItem(0).(*tview.InputField).GetText()
|
||||||
|
|
||||||
widget.list.Add(text)
|
widget.list.Add(false, text)
|
||||||
widget.persist()
|
widget.persist()
|
||||||
widget.pages.RemovePage("modal")
|
widget.pages.RemovePage("modal")
|
||||||
widget.app.SetFocus(widget.View)
|
widget.app.SetFocus(widget.View)
|
||||||
|
49
todoist/display.go
Normal file
49
todoist/display.go
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
package todoist
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/rivo/tview"
|
||||||
|
"github.com/senorprogrammer/wtf/wtf"
|
||||||
|
)
|
||||||
|
|
||||||
|
const checkWidth = 4
|
||||||
|
|
||||||
|
func (widget *Widget) display() {
|
||||||
|
proj := widget.CurrentProject()
|
||||||
|
|
||||||
|
if proj == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
widget.View.SetTitle(fmt.Sprintf("%s- [green]%s[white] ", widget.Name, proj.Project.Name))
|
||||||
|
str := wtf.SigilStr(len(widget.projects), widget.idx, widget.View) + "\n"
|
||||||
|
|
||||||
|
maxLen := proj.LongestLine()
|
||||||
|
|
||||||
|
for index, item := range proj.tasks {
|
||||||
|
foreColor, backColor := "white", wtf.Config.UString("wtf.colors.background", "black")
|
||||||
|
|
||||||
|
if index == proj.index {
|
||||||
|
foreColor = wtf.Config.UString("wtf.colors.highlight.fore", "black")
|
||||||
|
backColor = wtf.Config.UString("wtf.colors.highlight.back", "orange")
|
||||||
|
}
|
||||||
|
|
||||||
|
row := fmt.Sprintf(
|
||||||
|
"[%s:%s]| | %s[white]",
|
||||||
|
foreColor,
|
||||||
|
backColor,
|
||||||
|
tview.Escape(item.Content),
|
||||||
|
)
|
||||||
|
|
||||||
|
_, _, w, _ := widget.View.GetInnerRect()
|
||||||
|
if w > maxLen {
|
||||||
|
maxLen = w
|
||||||
|
}
|
||||||
|
|
||||||
|
str = str + row + wtf.PadRow((checkWidth+len(item.Content)), (checkWidth+maxLen+1)) + "\n"
|
||||||
|
}
|
||||||
|
|
||||||
|
//widget.View.Clear()
|
||||||
|
widget.View.SetText(str)
|
||||||
|
}
|
110
todoist/project.go
Normal file
110
todoist/project.go
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
package todoist
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/darkSasori/todoist"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Project struct {
|
||||||
|
todoist.Project
|
||||||
|
|
||||||
|
index int
|
||||||
|
tasks []todoist.Task
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewProject(id int) *Project {
|
||||||
|
project, err := todoist.GetProject(id)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
proj := &Project{
|
||||||
|
Project: project,
|
||||||
|
|
||||||
|
index: -1,
|
||||||
|
}
|
||||||
|
|
||||||
|
proj.loadTasks()
|
||||||
|
|
||||||
|
return proj
|
||||||
|
}
|
||||||
|
|
||||||
|
func (proj *Project) isFirst() bool {
|
||||||
|
return proj.index == 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (proj *Project) isLast() bool {
|
||||||
|
return proj.index >= len(proj.tasks)-1
|
||||||
|
}
|
||||||
|
|
||||||
|
func (proj *Project) up() {
|
||||||
|
proj.index = proj.index - 1
|
||||||
|
|
||||||
|
if proj.index < 0 {
|
||||||
|
proj.index = len(proj.tasks) - 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (proj *Project) down() {
|
||||||
|
if proj.index == -1 {
|
||||||
|
proj.index = 0
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
proj.index = proj.index + 1
|
||||||
|
if proj.index >= len(proj.tasks) {
|
||||||
|
proj.index = 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (proj *Project) loadTasks() {
|
||||||
|
tasks, err := todoist.ListTask(todoist.QueryParam{"project_id": fmt.Sprintf("%d", proj.ID)})
|
||||||
|
if err == nil {
|
||||||
|
proj.tasks = tasks
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (proj *Project) LongestLine() int {
|
||||||
|
maxLen := 0
|
||||||
|
|
||||||
|
for _, task := range proj.tasks {
|
||||||
|
if len(task.Content) > maxLen {
|
||||||
|
maxLen = len(task.Content)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return maxLen
|
||||||
|
}
|
||||||
|
|
||||||
|
func (proj *Project) currentTask() *todoist.Task {
|
||||||
|
if proj.index < 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return &proj.tasks[proj.index]
|
||||||
|
}
|
||||||
|
|
||||||
|
func (proj *Project) closeSelectedTask() {
|
||||||
|
currTask := proj.currentTask()
|
||||||
|
|
||||||
|
if currTask != nil {
|
||||||
|
if err := currTask.Close(); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
proj.loadTasks()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (proj *Project) deleteSelectedTask() {
|
||||||
|
currTask := proj.currentTask()
|
||||||
|
|
||||||
|
if currTask != nil {
|
||||||
|
if err := currTask.Delete(); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
proj.loadTasks()
|
||||||
|
}
|
||||||
|
}
|
176
todoist/widget.go
Normal file
176
todoist/widget.go
Normal file
@ -0,0 +1,176 @@
|
|||||||
|
package todoist
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
|
||||||
|
"github.com/darkSasori/todoist"
|
||||||
|
"github.com/gdamore/tcell"
|
||||||
|
"github.com/rivo/tview"
|
||||||
|
"github.com/senorprogrammer/wtf/wtf"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Widget struct {
|
||||||
|
wtf.TextWidget
|
||||||
|
|
||||||
|
app *tview.Application
|
||||||
|
pages *tview.Pages
|
||||||
|
projects []*Project
|
||||||
|
idx int
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewWidget(app *tview.Application, pages *tview.Pages) *Widget {
|
||||||
|
widget := Widget{
|
||||||
|
TextWidget: wtf.NewTextWidget(" Todoist ", "todoist", true),
|
||||||
|
|
||||||
|
app: app,
|
||||||
|
pages: pages,
|
||||||
|
}
|
||||||
|
|
||||||
|
todoist.Token = os.Getenv("WTF_TODOIST_TOKEN")
|
||||||
|
widget.projects = loadProjects()
|
||||||
|
widget.View.SetInputCapture(widget.keyboardIntercept)
|
||||||
|
|
||||||
|
return &widget
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------- Exported Functions -------------------- */
|
||||||
|
|
||||||
|
func (widget *Widget) CurrentProject() *Project {
|
||||||
|
return widget.ProjectAt(widget.idx)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (widget *Widget) ProjectAt(idx int) *Project {
|
||||||
|
if len(widget.projects) == 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return widget.projects[idx]
|
||||||
|
}
|
||||||
|
|
||||||
|
func (w *Widget) NextProject() {
|
||||||
|
w.idx = w.idx + 1
|
||||||
|
if w.idx == len(w.projects) {
|
||||||
|
w.idx = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
w.display()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (w *Widget) PreviousProject() {
|
||||||
|
w.idx = w.idx - 1
|
||||||
|
if w.idx < 0 {
|
||||||
|
w.idx = len(w.projects) - 1
|
||||||
|
}
|
||||||
|
|
||||||
|
w.display()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (w *Widget) Refresh() {
|
||||||
|
if w.Disabled() || w.CurrentProject() == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
w.UpdateRefreshedAt()
|
||||||
|
w.display()
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------- Keyboard Movement -------------------- */
|
||||||
|
|
||||||
|
// Down selects the next item in the list
|
||||||
|
func (w *Widget) Down() {
|
||||||
|
w.CurrentProject().down()
|
||||||
|
w.display()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Up selects the previous item in the list
|
||||||
|
func (w *Widget) Up() {
|
||||||
|
w.CurrentProject().up()
|
||||||
|
w.display()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Close closes the currently-selected task in the currently-selected project
|
||||||
|
func (w *Widget) Close() {
|
||||||
|
w.CurrentProject().closeSelectedTask()
|
||||||
|
|
||||||
|
if w.CurrentProject().isLast() {
|
||||||
|
w.Up()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
w.Down()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete deletes the currently-selected task in the currently-selected project
|
||||||
|
func (w *Widget) Delete() {
|
||||||
|
w.CurrentProject().deleteSelectedTask()
|
||||||
|
|
||||||
|
if w.CurrentProject().isLast() {
|
||||||
|
w.Up()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
w.Down()
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------- Unexported Functions -------------------- */
|
||||||
|
|
||||||
|
func (w *Widget) keyboardIntercept(event *tcell.EventKey) *tcell.EventKey {
|
||||||
|
if len(w.projects) == 0 {
|
||||||
|
return event
|
||||||
|
}
|
||||||
|
|
||||||
|
switch string(event.Rune()) {
|
||||||
|
case "r":
|
||||||
|
w.Refresh()
|
||||||
|
return nil
|
||||||
|
case "d":
|
||||||
|
w.Delete()
|
||||||
|
return nil
|
||||||
|
case "c":
|
||||||
|
w.Close()
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
switch w.vimBindings(event) {
|
||||||
|
case tcell.KeyLeft:
|
||||||
|
w.PreviousProject()
|
||||||
|
return nil
|
||||||
|
case tcell.KeyRight:
|
||||||
|
w.NextProject()
|
||||||
|
return nil
|
||||||
|
case tcell.KeyUp:
|
||||||
|
w.Up()
|
||||||
|
return nil
|
||||||
|
case tcell.KeyDown:
|
||||||
|
w.Down()
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return event
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: Rename this List to Projects so the internal can be Checklist
|
||||||
|
func loadProjects() []*Project {
|
||||||
|
projects := []*Project{}
|
||||||
|
|
||||||
|
for _, id := range wtf.Config.UList("wtf.mods.todoist.projects") {
|
||||||
|
proj := NewProject(id.(int))
|
||||||
|
projects = append(projects, proj)
|
||||||
|
}
|
||||||
|
|
||||||
|
return projects
|
||||||
|
}
|
||||||
|
|
||||||
|
func (w *Widget) vimBindings(event *tcell.EventKey) tcell.Key {
|
||||||
|
switch string(event.Rune()) {
|
||||||
|
case "h":
|
||||||
|
return tcell.KeyLeft
|
||||||
|
case "l":
|
||||||
|
return tcell.KeyRight
|
||||||
|
case "k":
|
||||||
|
return tcell.KeyUp
|
||||||
|
case "j":
|
||||||
|
return tcell.KeyDown
|
||||||
|
}
|
||||||
|
return event.Key()
|
||||||
|
}
|
84
travisci/client.go
Normal file
84
travisci/client.go
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
package travisci
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"io/ioutil"
|
||||||
|
"net/http"
|
||||||
|
"net/url"
|
||||||
|
"os"
|
||||||
|
)
|
||||||
|
|
||||||
|
const APIEnvToken = "WTF_TRAVIS_API_TOKEN"
|
||||||
|
|
||||||
|
func BuildsFor() (*Builds, error) {
|
||||||
|
builds := &Builds{}
|
||||||
|
|
||||||
|
resp, err := travisRequest("builds")
|
||||||
|
if err != nil {
|
||||||
|
return builds, err
|
||||||
|
}
|
||||||
|
|
||||||
|
parseJson(&builds, resp.Body)
|
||||||
|
|
||||||
|
return builds, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------- Unexported Functions -------------------- */
|
||||||
|
|
||||||
|
var (
|
||||||
|
travisAPIURL = &url.URL{Scheme: "https", Host: "api.travis-ci.org", Path: "/"}
|
||||||
|
)
|
||||||
|
|
||||||
|
func travisRequest(path string) (*http.Response, error) {
|
||||||
|
params := url.Values{}
|
||||||
|
params.Add("limit", "10")
|
||||||
|
|
||||||
|
url := travisAPIURL.ResolveReference(&url.URL{Path: path, RawQuery: params.Encode()})
|
||||||
|
|
||||||
|
req, err := http.NewRequest("GET", url.String(), nil)
|
||||||
|
req.Header.Add("Accept", "application/json")
|
||||||
|
req.Header.Add("Content-Type", "application/json")
|
||||||
|
req.Header.Add("Travis-API-Version", "3")
|
||||||
|
|
||||||
|
bearer := fmt.Sprintf("token %s", apiToken())
|
||||||
|
req.Header.Add("Authorization", bearer)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
httpClient := &http.Client{}
|
||||||
|
resp, err := httpClient.Do(req)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if resp.StatusCode < 200 || resp.StatusCode > 299 {
|
||||||
|
return nil, fmt.Errorf(resp.Status)
|
||||||
|
}
|
||||||
|
|
||||||
|
return resp, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func apiToken() string {
|
||||||
|
return os.Getenv(APIEnvToken)
|
||||||
|
}
|
||||||
|
|
||||||
|
func parseJson(obj interface{}, text io.Reader) {
|
||||||
|
jsonStream, err := ioutil.ReadAll(text)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
decoder := json.NewDecoder(bytes.NewReader(jsonStream))
|
||||||
|
|
||||||
|
for {
|
||||||
|
if err := decoder.Decode(obj); err == io.EOF {
|
||||||
|
break
|
||||||
|
} else if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
25
travisci/travis.go
Normal file
25
travisci/travis.go
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
package travisci
|
||||||
|
|
||||||
|
type Builds struct {
|
||||||
|
Builds []Build `json:"builds"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type Build struct {
|
||||||
|
CreatedBy Owner `json:"created_by"`
|
||||||
|
Branch Branch `json:"branch"`
|
||||||
|
Number string `json:"number"`
|
||||||
|
Repository Repository `json:"repository"`
|
||||||
|
State string `json:"state"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type Owner struct {
|
||||||
|
Login string `json:"login"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type Branch struct {
|
||||||
|
Name string `json:"name"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type Repository struct {
|
||||||
|
Name string `json:"name"`
|
||||||
|
}
|
82
travisci/widget.go
Normal file
82
travisci/widget.go
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
package travisci
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"github.com/senorprogrammer/wtf/wtf"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Widget struct {
|
||||||
|
wtf.TextWidget
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewWidget() *Widget {
|
||||||
|
widget := Widget{
|
||||||
|
TextWidget: wtf.NewTextWidget(" Travis CI", "travisci", false),
|
||||||
|
}
|
||||||
|
|
||||||
|
return &widget
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------- Exported Functions -------------------- */
|
||||||
|
|
||||||
|
func (widget *Widget) Refresh() {
|
||||||
|
if widget.Disabled() {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
builds, err := BuildsFor()
|
||||||
|
|
||||||
|
widget.UpdateRefreshedAt()
|
||||||
|
|
||||||
|
widget.View.SetTitle(fmt.Sprintf("%s - Builds", widget.Name))
|
||||||
|
|
||||||
|
var content string
|
||||||
|
if err != nil {
|
||||||
|
widget.View.SetWrap(true)
|
||||||
|
content = err.Error()
|
||||||
|
} else {
|
||||||
|
widget.View.SetWrap(false)
|
||||||
|
content = widget.contentFrom(builds)
|
||||||
|
}
|
||||||
|
|
||||||
|
widget.View.SetText(content)
|
||||||
|
}
|
||||||
|
|
||||||
|
/* -------------------- Unexported Functions -------------------- */
|
||||||
|
|
||||||
|
func (widget *Widget) contentFrom(builds *Builds) string {
|
||||||
|
var str string
|
||||||
|
for _, build := range builds.Builds {
|
||||||
|
str = str + fmt.Sprintf(
|
||||||
|
"[%s] %s-%s (%s) [white]%s\n",
|
||||||
|
buildColor(&build),
|
||||||
|
build.Repository.Name,
|
||||||
|
build.Number,
|
||||||
|
build.Branch.Name,
|
||||||
|
build.CreatedBy.Login,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
return str
|
||||||
|
}
|
||||||
|
|
||||||
|
func buildColor(build *Build) string {
|
||||||
|
switch build.State {
|
||||||
|
case "broken":
|
||||||
|
return "red"
|
||||||
|
case "failed":
|
||||||
|
return "red"
|
||||||
|
case "failing":
|
||||||
|
return "red"
|
||||||
|
case "pending":
|
||||||
|
return "yellow"
|
||||||
|
case "started":
|
||||||
|
return "yellow"
|
||||||
|
case "fixed":
|
||||||
|
return "green"
|
||||||
|
case "passed":
|
||||||
|
return "green"
|
||||||
|
default:
|
||||||
|
return "white"
|
||||||
|
}
|
||||||
|
}
|
2
vendor/github.com/darkSasori/todoist/.gitignore
generated
vendored
Normal file
2
vendor/github.com/darkSasori/todoist/.gitignore
generated
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
*.out
|
||||||
|
vendor/*
|
19
vendor/github.com/darkSasori/todoist/.travis.yml
generated
vendored
Normal file
19
vendor/github.com/darkSasori/todoist/.travis.yml
generated
vendored
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
language: go
|
||||||
|
|
||||||
|
notifications:
|
||||||
|
email: false
|
||||||
|
|
||||||
|
go:
|
||||||
|
- "1.10.3"
|
||||||
|
- master
|
||||||
|
|
||||||
|
before_install:
|
||||||
|
- curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh
|
||||||
|
- go get -u github.com/golang/lint/golint
|
||||||
|
|
||||||
|
install:
|
||||||
|
- dep ensure
|
||||||
|
|
||||||
|
script:
|
||||||
|
- golint -set_exit_status
|
||||||
|
- go test -v
|
21
vendor/github.com/darkSasori/todoist/Gopkg.lock
generated
vendored
Normal file
21
vendor/github.com/darkSasori/todoist/Gopkg.lock
generated
vendored
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'.
|
||||||
|
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
branch = "master"
|
||||||
|
name = "github.com/darkSasori/todoist"
|
||||||
|
packages = ["."]
|
||||||
|
revision = "ab3a9f0b9d551ab4e57f1caae9bb20d5aa51ec10"
|
||||||
|
|
||||||
|
[[projects]]
|
||||||
|
branch = "v1"
|
||||||
|
name = "gopkg.in/jarcoal/httpmock.v1"
|
||||||
|
packages = ["."]
|
||||||
|
revision = "16f9a43967d613f0adc2000f0094a17b9f6c4c20"
|
||||||
|
|
||||||
|
[solve-meta]
|
||||||
|
analyzer-name = "dep"
|
||||||
|
analyzer-version = 1
|
||||||
|
inputs-digest = "4d0d4d6dd7b4141be119cb48281ea7c10f05d3037c0e4ac49560cf4af21917a7"
|
||||||
|
solver-name = "gps-cdcl"
|
||||||
|
solver-version = 1
|
34
vendor/github.com/darkSasori/todoist/Gopkg.toml
generated
vendored
Normal file
34
vendor/github.com/darkSasori/todoist/Gopkg.toml
generated
vendored
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
# Gopkg.toml example
|
||||||
|
#
|
||||||
|
# Refer to https://github.com/golang/dep/blob/master/docs/Gopkg.toml.md
|
||||||
|
# for detailed Gopkg.toml documentation.
|
||||||
|
#
|
||||||
|
# required = ["github.com/user/thing/cmd/thing"]
|
||||||
|
# ignored = ["github.com/user/project/pkgX", "bitbucket.org/user/project/pkgA/pkgY"]
|
||||||
|
#
|
||||||
|
# [[constraint]]
|
||||||
|
# name = "github.com/user/project"
|
||||||
|
# version = "1.0.0"
|
||||||
|
#
|
||||||
|
# [[constraint]]
|
||||||
|
# name = "github.com/user/project2"
|
||||||
|
# branch = "dev"
|
||||||
|
# source = "github.com/myfork/project2"
|
||||||
|
#
|
||||||
|
# [[override]]
|
||||||
|
# name = "github.com/x/y"
|
||||||
|
# version = "2.4.0"
|
||||||
|
#
|
||||||
|
# [prune]
|
||||||
|
# non-go = false
|
||||||
|
# go-tests = true
|
||||||
|
# unused-packages = true
|
||||||
|
|
||||||
|
|
||||||
|
[[constraint]]
|
||||||
|
branch = "v1"
|
||||||
|
name = "gopkg.in/jarcoal/httpmock.v1"
|
||||||
|
|
||||||
|
[prune]
|
||||||
|
go-tests = true
|
||||||
|
unused-packages = true
|
21
vendor/github.com/darkSasori/todoist/LICENSE
generated
vendored
Normal file
21
vendor/github.com/darkSasori/todoist/LICENSE
generated
vendored
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2018 Lineu Felipe
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
6
vendor/github.com/darkSasori/todoist/README.md
generated
vendored
Normal file
6
vendor/github.com/darkSasori/todoist/README.md
generated
vendored
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
# todoist
|
||||||
|
[](https://godoc.org/github.com/darkSasori/todoist)
|
||||||
|
[](https://travis-ci.org/darkSasori/todoist)
|
||||||
|
[](https://goreportcard.com/report/github.com/darkSasori/todoist)
|
||||||
|
|
||||||
|
Unofficial todoist api implementation
|
149
vendor/github.com/darkSasori/todoist/projects.go
generated
vendored
Normal file
149
vendor/github.com/darkSasori/todoist/projects.go
generated
vendored
Normal file
@ -0,0 +1,149 @@
|
|||||||
|
package todoist
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Project is a model of todoist project entity
|
||||||
|
type Project struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
CommentCount int `json:"comment_count"`
|
||||||
|
Order int `json:"order"`
|
||||||
|
Indent int `json:"indent"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func decodeProject(body io.ReadCloser) (Project, error) {
|
||||||
|
defer body.Close()
|
||||||
|
decoder := json.NewDecoder(body)
|
||||||
|
var project Project
|
||||||
|
|
||||||
|
if err := decoder.Decode(&project); err != nil {
|
||||||
|
return Project{}, err
|
||||||
|
}
|
||||||
|
return project, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListProject return all projects
|
||||||
|
//
|
||||||
|
// Example:
|
||||||
|
// todoist.Token = "your token"
|
||||||
|
// projects, err := todoist.ListProject()
|
||||||
|
// if err != nil {
|
||||||
|
// panic(err)
|
||||||
|
// }
|
||||||
|
// fmt.Println(projects)
|
||||||
|
func ListProject() ([]Project, error) {
|
||||||
|
res, err := makeRequest(http.MethodGet, "projects", nil)
|
||||||
|
if err != nil {
|
||||||
|
return []Project{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
defer res.Body.Close()
|
||||||
|
decoder := json.NewDecoder(res.Body)
|
||||||
|
var projects []Project
|
||||||
|
|
||||||
|
if err := decoder.Decode(&projects); err != nil {
|
||||||
|
return []Project{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return projects, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetProject return a project by id
|
||||||
|
//
|
||||||
|
// Example:
|
||||||
|
// todoist.Token = "your token"
|
||||||
|
// project, err := todoist.GetProject(1)
|
||||||
|
// if err != nil {
|
||||||
|
// panic(err)
|
||||||
|
// }
|
||||||
|
// fmt.Println(project)
|
||||||
|
func GetProject(id int) (Project, error) {
|
||||||
|
path := fmt.Sprintf("projects/%d", id)
|
||||||
|
res, err := makeRequest(http.MethodGet, path, nil)
|
||||||
|
if err != nil {
|
||||||
|
return Project{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return decodeProject(res.Body)
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateProject create a new project with a name
|
||||||
|
//
|
||||||
|
// Example:
|
||||||
|
// todoist.Token = "your token"
|
||||||
|
// project, err := todoist.CreateProject("New Project")
|
||||||
|
// if err != nil {
|
||||||
|
// panic(err)
|
||||||
|
// }
|
||||||
|
// fmt.Println(project)
|
||||||
|
func CreateProject(name string) (Project, error) {
|
||||||
|
project := struct {
|
||||||
|
Name string `json:"name"`
|
||||||
|
}{
|
||||||
|
name,
|
||||||
|
}
|
||||||
|
|
||||||
|
res, err := makeRequest(http.MethodPost, "projects", project)
|
||||||
|
if err != nil {
|
||||||
|
return Project{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return decodeProject(res.Body)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete project
|
||||||
|
//
|
||||||
|
// Example:
|
||||||
|
// todoist.Token = "your token"
|
||||||
|
// project, err := todoist.GetProject(1)
|
||||||
|
// if err != nil {
|
||||||
|
// panic(err)
|
||||||
|
// }
|
||||||
|
// err = project.Delete()
|
||||||
|
// if err != nil {
|
||||||
|
// panic(err)
|
||||||
|
// }
|
||||||
|
func (p Project) Delete() error {
|
||||||
|
path := fmt.Sprintf("projects/%d", p.ID)
|
||||||
|
_, err := makeRequest(http.MethodDelete, path, nil)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update project
|
||||||
|
//
|
||||||
|
// Example:
|
||||||
|
// todoist.Token = "your token"
|
||||||
|
// project, err := todoist.GetProject(1)
|
||||||
|
// if err != nil {
|
||||||
|
// panic(err)
|
||||||
|
// }
|
||||||
|
// project.Name = "updated"
|
||||||
|
// err = project.Update()
|
||||||
|
// if err != nil {
|
||||||
|
// panic(err)
|
||||||
|
// }
|
||||||
|
// fmt.Println(project)
|
||||||
|
func (p Project) Update() error {
|
||||||
|
path := fmt.Sprintf("projects/%d", p.ID)
|
||||||
|
project := struct {
|
||||||
|
Name string `json:"name"`
|
||||||
|
}{
|
||||||
|
p.Name,
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err := makeRequest(http.MethodPost, path, project)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
158
vendor/github.com/darkSasori/todoist/task.go
generated
vendored
Normal file
158
vendor/github.com/darkSasori/todoist/task.go
generated
vendored
Normal file
@ -0,0 +1,158 @@
|
|||||||
|
package todoist
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Task is a model of todoist project entity
|
||||||
|
type Task struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
CommentCount int `json:"comment_count"`
|
||||||
|
Completed bool `json:"completed"`
|
||||||
|
Content string `json:"content"`
|
||||||
|
Indent int `json:"indent"`
|
||||||
|
LabelIDs []int `json:"label_ids"`
|
||||||
|
Order int `json:"order"`
|
||||||
|
Priority int `json:"priority"`
|
||||||
|
ProjectID int `json:"project_id"`
|
||||||
|
Due Due `json:"due"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Due is a model of todoist project entity
|
||||||
|
type Due struct {
|
||||||
|
String string `json:"string"`
|
||||||
|
Date string `json:"date"`
|
||||||
|
Datetime CustomTime `json:"datetime"`
|
||||||
|
Timezone string `json:"timezone"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t Task) taskSave() taskSave {
|
||||||
|
return taskSave{
|
||||||
|
t.Content,
|
||||||
|
t.ProjectID,
|
||||||
|
t.Order,
|
||||||
|
t.LabelIDs,
|
||||||
|
t.Priority,
|
||||||
|
t.Due.String,
|
||||||
|
t.Due.Datetime,
|
||||||
|
"en",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func decodeTask(body io.ReadCloser) (Task, error) {
|
||||||
|
defer body.Close()
|
||||||
|
decoder := json.NewDecoder(body)
|
||||||
|
var task Task
|
||||||
|
|
||||||
|
if err := decoder.Decode(&task); err != nil {
|
||||||
|
return Task{}, err
|
||||||
|
}
|
||||||
|
return task, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// QueryParam is a map[string]string to build http query
|
||||||
|
type QueryParam map[string]string
|
||||||
|
|
||||||
|
func (qp QueryParam) String() string {
|
||||||
|
if len(qp) == 0 {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
ret := "?"
|
||||||
|
for key, value := range qp {
|
||||||
|
if ret != "?" {
|
||||||
|
ret = ret + "&"
|
||||||
|
}
|
||||||
|
ret = ret + key + "=" + value
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret
|
||||||
|
}
|
||||||
|
|
||||||
|
// ListTask return all task, you can filter using QueryParam
|
||||||
|
// See documentation: https://developer.todoist.com/rest/v8/#get-tasks
|
||||||
|
func ListTask(qp QueryParam) ([]Task, error) {
|
||||||
|
path := fmt.Sprintf("tasks%s", qp)
|
||||||
|
res, err := makeRequest(http.MethodGet, path, nil)
|
||||||
|
if err != nil {
|
||||||
|
return []Task{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
defer res.Body.Close()
|
||||||
|
decoder := json.NewDecoder(res.Body)
|
||||||
|
var tasks []Task
|
||||||
|
|
||||||
|
if err := decoder.Decode(&tasks); err != nil {
|
||||||
|
return []Task{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return tasks, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetTask return a task by id
|
||||||
|
func GetTask(id int) (Task, error) {
|
||||||
|
path := fmt.Sprintf("tasks/%d", id)
|
||||||
|
res, err := makeRequest(http.MethodGet, path, nil)
|
||||||
|
if err != nil {
|
||||||
|
return Task{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return decodeTask(res.Body)
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateTask create a new task
|
||||||
|
func CreateTask(task Task) (Task, error) {
|
||||||
|
res, err := makeRequest(http.MethodPost, "tasks", task.taskSave())
|
||||||
|
if err != nil {
|
||||||
|
return Task{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return decodeTask(res.Body)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete remove a task
|
||||||
|
func (t Task) Delete() error {
|
||||||
|
path := fmt.Sprintf("tasks/%d", t.ID)
|
||||||
|
_, err := makeRequest(http.MethodDelete, path, nil)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update a task
|
||||||
|
func (t Task) Update() error {
|
||||||
|
path := fmt.Sprintf("tasks/%d", t.ID)
|
||||||
|
_, err := makeRequest(http.MethodPost, path, t.taskSave())
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Close mask task as done
|
||||||
|
func (t Task) Close() error {
|
||||||
|
path := fmt.Sprintf("tasks/%d/close", t.ID)
|
||||||
|
_, err := makeRequest(http.MethodPost, path, nil)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reopen a task
|
||||||
|
func (t Task) Reopen() error {
|
||||||
|
path := fmt.Sprintf("tasks/%d/reopen", t.ID)
|
||||||
|
_, err := makeRequest(http.MethodPost, path, nil)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
145
vendor/github.com/darkSasori/todoist/todoist.go
generated
vendored
Normal file
145
vendor/github.com/darkSasori/todoist/todoist.go
generated
vendored
Normal file
@ -0,0 +1,145 @@
|
|||||||
|
package todoist
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"io/ioutil"
|
||||||
|
"net/http"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Token save the personal token from todoist
|
||||||
|
var Token string
|
||||||
|
var todoistURL = "https://beta.todoist.com/API/v8/"
|
||||||
|
|
||||||
|
func makeRequest(method, endpoint string, data interface{}) (*http.Response, error) {
|
||||||
|
url := todoistURL + endpoint
|
||||||
|
body := bytes.NewBuffer([]byte{})
|
||||||
|
|
||||||
|
if data != nil {
|
||||||
|
json, err := json.Marshal(data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
body = bytes.NewBuffer(json)
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := http.NewRequest(method, url, body)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
bearer := fmt.Sprintf("Bearer %s", Token)
|
||||||
|
req.Header.Add("Authorization", bearer)
|
||||||
|
|
||||||
|
if data != nil {
|
||||||
|
req.Header.Add("Content-Type", "application/json")
|
||||||
|
}
|
||||||
|
|
||||||
|
client := &http.Client{}
|
||||||
|
res, err := client.Do(req)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if res.StatusCode >= 400 {
|
||||||
|
defer res.Body.Close()
|
||||||
|
str, err := ioutil.ReadAll(res.Body)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, fmt.Errorf(string(str))
|
||||||
|
}
|
||||||
|
|
||||||
|
return res, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
const ctLayout = "2006-01-02T15:04:05+00:00"
|
||||||
|
|
||||||
|
// CustomTime had a custom json date format
|
||||||
|
type CustomTime struct {
|
||||||
|
time.Time
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnmarshalJSON convert from []byte to CustomTime
|
||||||
|
func (ct *CustomTime) UnmarshalJSON(b []byte) (err error) {
|
||||||
|
s := strings.Trim(string(b), "\"")
|
||||||
|
if s == "null" {
|
||||||
|
ct.Time = time.Time{}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
ct.Time, err = time.Parse(ctLayout, s)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// MarshalJSON convert CustomTime to []byte
|
||||||
|
func (ct CustomTime) MarshalJSON() ([]byte, error) {
|
||||||
|
if ct.Time.IsZero() {
|
||||||
|
return []byte("null"), nil
|
||||||
|
}
|
||||||
|
return []byte(`"` + ct.Time.Format(ctLayout) + `"`), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type taskSave struct {
|
||||||
|
Content string `json:"content"`
|
||||||
|
ProjectID int `json:"project_id,omitempty"`
|
||||||
|
Order int `json:"order,omitempty"`
|
||||||
|
LabelIDs []int `json:"label_ids,omitempty"`
|
||||||
|
Priority int `json:"priority,omitempty"`
|
||||||
|
DueString string `json:"due_string,omitempty"`
|
||||||
|
DueDateTime CustomTime `json:"due_datetime,omitempty"`
|
||||||
|
DueLang string `json:"due_lang,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ts taskSave) MarshalJSON() ([]byte, error) {
|
||||||
|
buffer := bytes.NewBufferString("{")
|
||||||
|
|
||||||
|
if ts.Content == "" {
|
||||||
|
return nil, fmt.Errorf("Content is empty")
|
||||||
|
}
|
||||||
|
buffer.WriteString(fmt.Sprintf("\"content\":\"%s\"", ts.Content))
|
||||||
|
|
||||||
|
if ts.ProjectID != 0 {
|
||||||
|
buffer.WriteString(fmt.Sprintf(",\"project_id\":%d", ts.ProjectID))
|
||||||
|
}
|
||||||
|
|
||||||
|
if ts.Order != 0 {
|
||||||
|
buffer.WriteString(fmt.Sprintf(",\"order\":%d", ts.Order))
|
||||||
|
}
|
||||||
|
|
||||||
|
if !ts.DueDateTime.IsZero() {
|
||||||
|
buffer.WriteString(",\"due_datetime\":")
|
||||||
|
json, err := json.Marshal(ts.DueDateTime)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
buffer.Write(json)
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(ts.LabelIDs) != 0 {
|
||||||
|
buffer.WriteString(",\"label_ids\":")
|
||||||
|
json, err := json.Marshal(ts.LabelIDs)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
buffer.Write(json)
|
||||||
|
}
|
||||||
|
|
||||||
|
if ts.Priority != 0 {
|
||||||
|
buffer.WriteString(fmt.Sprintf(",\"priority\":%d", ts.Priority))
|
||||||
|
}
|
||||||
|
|
||||||
|
if ts.DueString != "" {
|
||||||
|
buffer.WriteString(fmt.Sprintf(",\"due_string\":\"%s\"", ts.DueString))
|
||||||
|
}
|
||||||
|
|
||||||
|
if ts.DueLang != "" {
|
||||||
|
buffer.WriteString(fmt.Sprintf(",\"due_lang\":\"%s\"", ts.DueLang))
|
||||||
|
}
|
||||||
|
|
||||||
|
buffer.WriteString("}")
|
||||||
|
return buffer.Bytes(), nil
|
||||||
|
}
|
2
vendor/github.com/gdamore/tcell/.travis.yml
generated
vendored
2
vendor/github.com/gdamore/tcell/.travis.yml
generated
vendored
@ -5,6 +5,8 @@ go:
|
|||||||
- 1.6.x
|
- 1.6.x
|
||||||
- 1.7.x
|
- 1.7.x
|
||||||
- 1.8.x
|
- 1.8.x
|
||||||
|
- 1.9.x
|
||||||
|
- 1.10.x
|
||||||
- master
|
- master
|
||||||
|
|
||||||
before_install:
|
before_install:
|
||||||
|
108
vendor/github.com/gdamore/tcell/README.md
generated
vendored
108
vendor/github.com/gdamore/tcell/README.md
generated
vendored
@ -1,4 +1,4 @@
|
|||||||
## tcell
|
## tcell <img src=tcell.png align=right>
|
||||||
|
|
||||||
[](https://travis-ci.org/gdamore/tcell)
|
[](https://travis-ci.org/gdamore/tcell)
|
||||||
[](https://ci.appveyor.com/project/gdamore/tcell)
|
[](https://ci.appveyor.com/project/gdamore/tcell)
|
||||||
@ -9,12 +9,6 @@
|
|||||||
[](https://codecov.io/gh/gdamore/tcell)
|
[](https://codecov.io/gh/gdamore/tcell)
|
||||||
|
|
||||||
|
|
||||||
> _Tcell is a work in progress (Gamma).
|
|
||||||
> Please use with caution; interfaces may change in before final release.
|
|
||||||
> That said, our confidence in Tcell's stability is increasing. If you
|
|
||||||
> would like to use it in your own application, it is recommended that
|
|
||||||
> you drop a message to garrett@damore.org before commitment._
|
|
||||||
|
|
||||||
Package tcell provides a cell based view for text terminals, like xterm.
|
Package tcell provides a cell based view for text terminals, like xterm.
|
||||||
It was inspired by termbox, but differs from termbox in some important
|
It was inspired by termbox, but differs from termbox in some important
|
||||||
ways. It also adds substantial functionality beyond termbox.
|
ways. It also adds substantial functionality beyond termbox.
|
||||||
@ -27,32 +21,30 @@ ways. It also adds substantial functionality beyond termbox.
|
|||||||
* [gomatrix](https://github.com/gdamore/gomatrix) - converted from Termbox
|
* [gomatrix](https://github.com/gdamore/gomatrix) - converted from Termbox
|
||||||
* [micro](https://github.com/zyedidia/micro/) - lightweight text editor with syntax-highlighting and themes
|
* [micro](https://github.com/zyedidia/micro/) - lightweight text editor with syntax-highlighting and themes
|
||||||
* [godu](https://github.com/viktomas/godu) - simple golang utility helping to discover large files/folders.
|
* [godu](https://github.com/viktomas/godu) - simple golang utility helping to discover large files/folders.
|
||||||
|
* [tview](https://github.com/rivo/tview) - rich interactive widgets for terminal UIs
|
||||||
|
* [tui-go](https://github.com/marcusolsson/tui-go) - UI library for terminal apps
|
||||||
|
* [gomandelbrot](https://github.com/rgm3/gomandelbrot) - Mandelbrot!
|
||||||
|
* [WTF](https://github.com/senorprogrammer/wtf)- Personal information dashboard for your terminal
|
||||||
|
|
||||||
## Pure Go Terminfo Database
|
## Pure Go Terminfo Database
|
||||||
|
|
||||||
First, it includes a full parser and expander for terminfo capability strings,
|
First, it includes a full parser and expander for terminfo capability strings,
|
||||||
so that it can avoid hard coding escape strings for formatting. It also favors
|
so that it can avoid hard coding escape strings for formatting. It also favors
|
||||||
portability, and includes support for all POSIX systems, at the slight expense
|
portability, and includes support for all POSIX systems.
|
||||||
of needing cgo support for terminal initializations. (This may be corrected
|
|
||||||
when Go provides standard support for terminal handling via termio ioctls on
|
|
||||||
all POSIX platforms.) The database itself, while built using CGO, as well
|
|
||||||
as the parser for it, is implemented in Pure Go.
|
|
||||||
|
|
||||||
The database is also flexible & extensible, and can modified by either running a
|
The database is also flexible & extensible, and can modified by either running
|
||||||
program to build the database, or hand editing of simple JSON files.
|
a program to build the entire database, or an entry for just a single terminal.
|
||||||
|
|
||||||
## More Portable
|
## More Portable
|
||||||
|
|
||||||
Tcell is portable to a wider variety of systems. It relies on standard
|
Tcell is portable to a wider variety of systems. Tcell is believed
|
||||||
POSIX supported function calls (on POSIX platforms) for setting terminal
|
to work with all of the systems officially supported by golang with
|
||||||
modes, which leads to improved support for a broader array of platforms.
|
the exception of nacl (which lacks any kind of a terminal interface).
|
||||||
This does come at the cost of requiring your code to be able to use CGO, but
|
(Plan9 is not supported by Tcell, but it is experimental status only
|
||||||
we believe that the vastly improved portability justifies this
|
in golang.) For all of these systems *except Solaris/illumos*, Tcell
|
||||||
requirement. Note that the functions called are part of the standard C
|
is pure Go, with no need for CGO.
|
||||||
library, so there shouldn't be any additional external requirements beyond
|
|
||||||
that required for every POSIX program.
|
|
||||||
|
|
||||||
## No async IO
|
## No Async IO
|
||||||
|
|
||||||
Tcell is able to operate without requiring SIGIO signals (unlike Termbox),
|
Tcell is able to operate without requiring SIGIO signals (unlike Termbox),
|
||||||
or asynchronous I/O, and can instead use standard Go file
|
or asynchronous I/O, and can instead use standard Go file
|
||||||
@ -63,7 +55,7 @@ to fewer surprises.
|
|||||||
|
|
||||||
## Richer Unicode & non-Unicode support
|
## Richer Unicode & non-Unicode support
|
||||||
|
|
||||||
Tcell includes enhanced support for Unicode, include wide characters and
|
Tcell includes enhanced support for Unicode, including wide characters and
|
||||||
combining characters, provided your terminal can support them. Note that
|
combining characters, provided your terminal can support them. Note that
|
||||||
Windows terminals generally don't support the full Unicode repertoire.
|
Windows terminals generally don't support the full Unicode repertoire.
|
||||||
|
|
||||||
@ -75,10 +67,10 @@ drawing certain characters.
|
|||||||
|
|
||||||
## More Function Keys
|
## More Function Keys
|
||||||
|
|
||||||
It also has richer support for a larger number of
|
It also has richer support for a larger number of special keys that some
|
||||||
special keys that some terminals can send.
|
terminals can send.
|
||||||
|
|
||||||
## Better color handling
|
## Better Color Handling
|
||||||
|
|
||||||
Tcell will respect your terminal's color space as specified within your terminfo
|
Tcell will respect your terminal's color space as specified within your terminfo
|
||||||
entries, so that for example attempts to emit color sequences on VT100 terminals
|
entries, so that for example attempts to emit color sequences on VT100 terminals
|
||||||
@ -88,22 +80,15 @@ In Windows mode, Tcell supports 16 colors, bold, dim, and reverse,
|
|||||||
instead of just termbox's 8 colors with reverse. (Note that there is some
|
instead of just termbox's 8 colors with reverse. (Note that there is some
|
||||||
conflation with bold/dim and colors.)
|
conflation with bold/dim and colors.)
|
||||||
|
|
||||||
Tcell maps 16 colors down to 8, for Terminals that need it. (The upper
|
Tcell maps 16 colors down to 8, for terminals that need it. (The upper
|
||||||
8 colors are just brighter versions of the lower 8.)
|
8 colors are just brighter versions of the lower 8.)
|
||||||
|
|
||||||
## Better mouse support
|
## Better Mouse Support
|
||||||
|
|
||||||
Tcell supports enhanced mouse tracking mode, so your application can receive
|
Tcell supports enhanced mouse tracking mode, so your application can receive
|
||||||
regular mouse motion events, and wheel events, if your terminal supports it.
|
regular mouse motion events, and wheel events, if your terminal supports it.
|
||||||
|
|
||||||
## Why not just patch termbox-go?
|
## Termbox Compatibility
|
||||||
|
|
||||||
I started this project originally by submitting patches to the author of
|
|
||||||
go-termbox, but due to some fundamental differences of opinion, I thought
|
|
||||||
it might be simpler just to start from scratch. At this point, Tcell has
|
|
||||||
far exceeded the capabilities of termbox.
|
|
||||||
|
|
||||||
## Termbox compatibility
|
|
||||||
|
|
||||||
A compatibility layer for termbox is provided in the compat
|
A compatibility layer for termbox is provided in the compat
|
||||||
directory. To use it, try importing "github.com/gdamore/tcell/termbox"
|
directory. To use it, try importing "github.com/gdamore/tcell/termbox"
|
||||||
@ -174,18 +159,18 @@ avoiding repeated sequences or drawing the same cell on refresh updates.
|
|||||||
(Not relevent for Windows users.)
|
(Not relevent for Windows users.)
|
||||||
|
|
||||||
The Terminfo implementation operates with two forms of database. The first
|
The Terminfo implementation operates with two forms of database. The first
|
||||||
is the database.go file, which contains a number of real database entries
|
is the built-in go database, which contains a number of real database entries
|
||||||
that are compiled into the program directly. This should minimize calling
|
that are compiled into the program directly. This should minimize calling
|
||||||
out to database file searches.
|
out to database file searches.
|
||||||
|
|
||||||
The second is a JSON file, that contains the same information, which can
|
The second is in the form of JSON files, that contain the same information,
|
||||||
be located either by the $TCELLDB environment file, $HOME/.tcelldb, or is
|
which can be located either by the $TCELLDB environment file, $HOME/.tcelldb,
|
||||||
located in the Go source directory as database.json.
|
or is located in the Go source directory as database.json.
|
||||||
|
|
||||||
These files (both the Go database.go and the database.json) file can be
|
These files (both the Go and the JSON files) can be generated using the
|
||||||
generated using the mkinfo.go program. If you need to regnerate the
|
mkinfo.go program. If you need to regnerate the entire set for some reason,
|
||||||
entire set for some reason, run the mkdatabase.sh file. The generation
|
run the mkdatabase.sh file. The generation uses the infocmp(1) program on
|
||||||
uses the terminfo routines on the system to populate the data files.
|
the system to collect the necessary information.
|
||||||
|
|
||||||
The mkinfo.go program can also be used to generate specific database entries
|
The mkinfo.go program can also be used to generate specific database entries
|
||||||
for named terminals, in case your favorite terminal is missing. (If you
|
for named terminals, in case your favorite terminal is missing. (If you
|
||||||
@ -227,32 +212,27 @@ and examine "physical" screen contents.
|
|||||||
|
|
||||||
## Platforms
|
## Platforms
|
||||||
|
|
||||||
### Systems (Linux, FreeBSD, MacOS, Solaris, etc.)
|
### POSIX (Linux, FreeBSD, MacOS, Solaris, etc.)
|
||||||
|
|
||||||
On POSIX systems, a POSIX termios implementation with /dev/tty is required.
|
For mainstream systems with a suitably well defined system call interface
|
||||||
On a small subset of these platforms (such as Solaris/illumos), we require
|
to tty settings, everything works using pure Go.
|
||||||
cgo to run, in order to access termios. (Note that Linux and BSD systems
|
|
||||||
do not require CGO for most purposes.)
|
|
||||||
|
|
||||||
(Note: CGO support is required if you wish to rebuild the terminal database
|
For the remainder (right now means only Solaris/illumos) we use POSIX function
|
||||||
from the system's native terminfo binary files. This is because we use the
|
calls to manage termios, which implies that CGO is required on those platforms.
|
||||||
system's native libterminfo to access that binary data. We probably could
|
|
||||||
eliminate that in the future by using a terminfo decompiler such as infocmp.)
|
|
||||||
|
|
||||||
### Windows
|
### Windows
|
||||||
|
|
||||||
Windows console mode applications are supported. Unfortunately mintty
|
Windows console mode applications are supported. Unfortunately mintty
|
||||||
and other cygwin style applications are not supported.
|
and other cygwin style applications are not supported.
|
||||||
|
|
||||||
Modern console applications like ConEmu support all the good features
|
Modern console applications like ConEmu, as well as the Windows 10
|
||||||
(resize, mouse tracking, etc.)
|
console itself, support all the good features (resize, mouse tracking, etc.)
|
||||||
|
|
||||||
I haven't figured out how to cleanly resolve the dichotomy between cygwin
|
I haven't figured out how to cleanly resolve the dichotomy between cygwin
|
||||||
style termios and the Windows Console API; it seems that perhaps nobody else
|
style termios and the Windows Console API; it seems that perhaps nobody else
|
||||||
has either. If anyone has suggestions, let me know! Really, if you're
|
has either. If anyone has suggestions, let me know! Really, if you're
|
||||||
using a Windows application, you should use the native Windows console or a
|
using a Windows application, you should use the native Windows console or a
|
||||||
fully compatible console implementation. Hopefully the Windows 10 console
|
fully compatible console implementation.
|
||||||
is more functional in this regard.
|
|
||||||
|
|
||||||
### Plan9 and Native Client (Nacl)
|
### Plan9 and Native Client (Nacl)
|
||||||
|
|
||||||
@ -260,3 +240,15 @@ The nacl and plan9 platforms won't work, but compilation stubs are supplied
|
|||||||
for folks that want to include parts of this in software targetting those
|
for folks that want to include parts of this in software targetting those
|
||||||
platforms. The Simulation screen works, but as Tcell doesn't know how to
|
platforms. The Simulation screen works, but as Tcell doesn't know how to
|
||||||
allocate a real screen object on those platforms, NewScreen() will fail.
|
allocate a real screen object on those platforms, NewScreen() will fail.
|
||||||
|
|
||||||
|
If anyone has wisdom about how to improve support for either of these,
|
||||||
|
please let me know. PRs are especially welcome.
|
||||||
|
|
||||||
|
### Commercial Support
|
||||||
|
|
||||||
|
This software is absolutely free, but if you want to obtain commercial
|
||||||
|
support (giving prioritized access to the developer, etc. on an hourly
|
||||||
|
rate), please drop a line to info@staysail.tech
|
||||||
|
|
||||||
|
I also welcome donations at Patreon, if you just want to feel good about
|
||||||
|
defraying development costs: https://www.patreon.com/gedamore
|
||||||
|
8
vendor/github.com/gdamore/tcell/cell.go
generated
vendored
8
vendor/github.com/gdamore/tcell/cell.go
generated
vendored
@ -48,12 +48,13 @@ func (cb *CellBuffer) SetContent(x int, y int,
|
|||||||
if x >= 0 && y >= 0 && x < cb.w && y < cb.h {
|
if x >= 0 && y >= 0 && x < cb.w && y < cb.h {
|
||||||
c := &cb.cells[(y*cb.w)+x]
|
c := &cb.cells[(y*cb.w)+x]
|
||||||
|
|
||||||
|
c.currComb = append([]rune{}, combc...)
|
||||||
i := 0
|
i := 0
|
||||||
for i < len(combc) {
|
for i < len(c.currComb) {
|
||||||
r := combc[i]
|
r := c.currComb[i]
|
||||||
if runewidth.RuneWidth(r) != 0 {
|
if runewidth.RuneWidth(r) != 0 {
|
||||||
// not a combining character, yank it
|
// not a combining character, yank it
|
||||||
combc = append(combc[:i-1], combc[i+1:]...)
|
c.currComb = append(c.currComb[:i-1], c.currComb[i+1:]...)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
i++
|
i++
|
||||||
@ -63,7 +64,6 @@ func (cb *CellBuffer) SetContent(x int, y int,
|
|||||||
c.width = runewidth.RuneWidth(mainc)
|
c.width = runewidth.RuneWidth(mainc)
|
||||||
}
|
}
|
||||||
c.currMain = mainc
|
c.currMain = mainc
|
||||||
c.currComb = combc
|
|
||||||
c.currStyle = style
|
c.currStyle = style
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
37
vendor/github.com/gdamore/tcell/console_win.go
generated
vendored
37
vendor/github.com/gdamore/tcell/console_win.go
generated
vendored
@ -17,25 +17,25 @@
|
|||||||
package tcell
|
package tcell
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"sync"
|
"sync"
|
||||||
"syscall"
|
"syscall"
|
||||||
"unicode/utf16"
|
"unicode/utf16"
|
||||||
"unsafe"
|
"unsafe"
|
||||||
"errors"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type cScreen struct {
|
type cScreen struct {
|
||||||
in syscall.Handle
|
in syscall.Handle
|
||||||
out syscall.Handle
|
out syscall.Handle
|
||||||
cancelflag syscall.Handle
|
cancelflag syscall.Handle
|
||||||
scandone chan struct{}
|
scandone chan struct{}
|
||||||
evch chan Event
|
evch chan Event
|
||||||
quit chan struct{}
|
quit chan struct{}
|
||||||
curx int
|
curx int
|
||||||
cury int
|
cury int
|
||||||
style Style
|
style Style
|
||||||
clear bool
|
clear bool
|
||||||
fini bool
|
fini bool
|
||||||
|
|
||||||
w int
|
w int
|
||||||
h int
|
h int
|
||||||
@ -117,7 +117,7 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
w32Infinite = ^uintptr(0)
|
w32Infinite = ^uintptr(0)
|
||||||
w32WaitObject0 = uintptr(0)
|
w32WaitObject0 = uintptr(0)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -183,7 +183,7 @@ func (s *cScreen) CharacterSet() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *cScreen) EnableMouse() {
|
func (s *cScreen) EnableMouse() {
|
||||||
s.setInMode(modeResizeEn | modeMouseEn)
|
s.setInMode(modeResizeEn | modeMouseEn | modeExtndFlg)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *cScreen) DisableMouse() {
|
func (s *cScreen) DisableMouse() {
|
||||||
@ -565,8 +565,14 @@ func (s *cScreen) getConsoleInput() error {
|
|||||||
if krec.ch != 0 {
|
if krec.ch != 0 {
|
||||||
// synthesized key code
|
// synthesized key code
|
||||||
for krec.repeat > 0 {
|
for krec.repeat > 0 {
|
||||||
s.PostEvent(NewEventKey(KeyRune, rune(krec.ch),
|
// convert shift+tab to backtab
|
||||||
mod2mask(krec.mod)))
|
if mod2mask(krec.mod) == ModShift && krec.ch == vkTab {
|
||||||
|
s.PostEvent(NewEventKey(KeyBacktab, 0,
|
||||||
|
ModNone))
|
||||||
|
} else {
|
||||||
|
s.PostEvent(NewEventKey(KeyRune, rune(krec.ch),
|
||||||
|
mod2mask(krec.mod)))
|
||||||
|
}
|
||||||
krec.repeat--
|
krec.repeat--
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
@ -920,6 +926,7 @@ func (s *cScreen) clearScreen(style Style) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
modeExtndFlg uint32 = 0x0080
|
||||||
modeMouseEn uint32 = 0x0010
|
modeMouseEn uint32 = 0x0010
|
||||||
modeResizeEn uint32 = 0x0008
|
modeResizeEn uint32 = 0x0008
|
||||||
modeWrapEOL uint32 = 0x0002
|
modeWrapEOL uint32 = 0x0002
|
||||||
|
12
vendor/github.com/gdamore/tcell/doc.go
generated
vendored
12
vendor/github.com/gdamore/tcell/doc.go
generated
vendored
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2015 The TCell Authors
|
// Copyright 2018 The TCell Authors
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use file except in compliance with the License.
|
// you may not use file except in compliance with the License.
|
||||||
@ -25,7 +25,7 @@
|
|||||||
// of course. (Windows, XTerm, and iTerm 2 are known to work very well.)
|
// of course. (Windows, XTerm, and iTerm 2 are known to work very well.)
|
||||||
//
|
//
|
||||||
// If the environment is not Unicode by default, such as an ISO8859 based
|
// If the environment is not Unicode by default, such as an ISO8859 based
|
||||||
// locale or GB18030, Tcell can convert input and outupt, so that your
|
// locale or GB18030, Tcell can convert input and output, so that your
|
||||||
// terminal can operate in whatever locale is most convenient, while the
|
// terminal can operate in whatever locale is most convenient, while the
|
||||||
// application program can just assume "everything is UTF-8". Reasonable
|
// application program can just assume "everything is UTF-8". Reasonable
|
||||||
// defaults are used for updating characters to something suitable for
|
// defaults are used for updating characters to something suitable for
|
||||||
@ -34,6 +34,14 @@
|
|||||||
// not available. If no ACS is available, then some ASCII fallbacks will
|
// not available. If no ACS is available, then some ASCII fallbacks will
|
||||||
// be used.
|
// be used.
|
||||||
//
|
//
|
||||||
|
// Note that support for non-UTF-8 locales (other than C) must be enabled
|
||||||
|
// by the application using RegisterEncoding() -- we don't have them all
|
||||||
|
// enabled by default to avoid bloating the application unneccessarily.
|
||||||
|
// (These days UTF-8 is good enough for almost everyone, and nobody should
|
||||||
|
// be using legacy locales anymore.) Also, actual glyphs for various code
|
||||||
|
// point will only be displayed if your terminal or emulator (or the font
|
||||||
|
// the emulator is using) supports them.
|
||||||
|
//
|
||||||
// A rich set of keycodes is supported, with support for up to 65 function
|
// A rich set of keycodes is supported, with support for up to 65 function
|
||||||
// keys, and various other special keys.
|
// keys, and various other special keys.
|
||||||
//
|
//
|
||||||
|
9
vendor/github.com/gdamore/tcell/simulation.go
generated
vendored
9
vendor/github.com/gdamore/tcell/simulation.go
generated
vendored
@ -109,6 +109,7 @@ type simscreen struct {
|
|||||||
|
|
||||||
func (s *simscreen) Init() error {
|
func (s *simscreen) Init() error {
|
||||||
s.evch = make(chan Event, 10)
|
s.evch = make(chan Event, 10)
|
||||||
|
s.quit = make(chan struct{})
|
||||||
s.fillchar = 'X'
|
s.fillchar = 'X'
|
||||||
s.fillstyle = StyleDefault
|
s.fillstyle = StyleDefault
|
||||||
s.mouse = false
|
s.mouse = false
|
||||||
@ -369,7 +370,7 @@ func (s *simscreen) InjectMouse(x, y int, buttons ButtonMask, mod ModMask) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *simscreen) InjectKey(key Key, r rune, mod ModMask) {
|
func (s *simscreen) InjectKey(key Key, r rune, mod ModMask) {
|
||||||
ev := NewEventKey(KeyRune, r, ModNone)
|
ev := NewEventKey(key, r, mod)
|
||||||
s.PostEvent(ev)
|
s.PostEvent(ev)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -441,8 +442,10 @@ func (s *simscreen) SetSize(w, h int) {
|
|||||||
newc[(row*w)+col] = s.front[(row*s.physw)+col]
|
newc[(row*w)+col] = s.front[(row*s.physw)+col]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
s.physw = w
|
s.cursorx, s.cursory = -1, -1
|
||||||
s.physh = h
|
s.physw, s.physh = w, h
|
||||||
|
s.front = newc
|
||||||
|
s.back.Resize(w, h)
|
||||||
s.Unlock()
|
s.Unlock()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BIN
vendor/github.com/gdamore/tcell/tcell.png
generated
vendored
Normal file
BIN
vendor/github.com/gdamore/tcell/tcell.png
generated
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.2 KiB |
93
vendor/github.com/gdamore/tcell/tcell.svg
generated
vendored
Normal file
93
vendor/github.com/gdamore/tcell/tcell.svg
generated
vendored
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
id="svg8"
|
||||||
|
version="1.1"
|
||||||
|
viewBox="0 0 210 297"
|
||||||
|
height="297mm"
|
||||||
|
width="210mm">
|
||||||
|
<defs
|
||||||
|
id="defs2">
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient2680">
|
||||||
|
<stop
|
||||||
|
id="stop2676"
|
||||||
|
offset="0"
|
||||||
|
style="stop-color:#ababab;stop-opacity:1;" />
|
||||||
|
<stop
|
||||||
|
id="stop2678"
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#ababab;stop-opacity:0;" />
|
||||||
|
</linearGradient>
|
||||||
|
<marker
|
||||||
|
style="overflow:visible"
|
||||||
|
id="Arrow1Lstart"
|
||||||
|
refX="0.0"
|
||||||
|
refY="0.0"
|
||||||
|
orient="auto">
|
||||||
|
<path
|
||||||
|
transform="scale(0.8) translate(12.5,0)"
|
||||||
|
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
|
||||||
|
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
|
||||||
|
id="path848" />
|
||||||
|
</marker>
|
||||||
|
<radialGradient
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1,0,0,0.28804762,0,94.764912)"
|
||||||
|
r="19.622099"
|
||||||
|
fy="133.10568"
|
||||||
|
fx="111.58373"
|
||||||
|
cy="133.10568"
|
||||||
|
cx="111.58373"
|
||||||
|
id="radialGradient2684"
|
||||||
|
xlink:href="#linearGradient2680" />
|
||||||
|
</defs>
|
||||||
|
<metadata
|
||||||
|
id="metadata5">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
id="layer1">
|
||||||
|
<rect
|
||||||
|
y="99.44445"
|
||||||
|
x="31.750006"
|
||||||
|
height="86.430557"
|
||||||
|
width="129.64584"
|
||||||
|
id="rect1130"
|
||||||
|
style="opacity:1;fill:#5d6c53;fill-opacity:1;stroke:#244f24;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||||
|
<text
|
||||||
|
transform="scale(0.99941234,1.000588)"
|
||||||
|
id="text1128"
|
||||||
|
y="160.47581"
|
||||||
|
x="44.689861"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-size:46.0962944px;line-height:1.25;font-family:'Glass TTY VT220';-inkscape-font-specification:'Glass TTY VT220, Medium';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#5ef86d;fill-opacity:1;stroke:#59ff32;stroke-width:0.80994618;stroke-opacity:0.94520545;"
|
||||||
|
xml:space="preserve"><tspan
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-size:46.0962944px;font-family:'Glass TTY VT220';-inkscape-font-specification:'Glass TTY VT220, Medium';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#5ef86d;fill-opacity:1;stroke:#59ff32;stroke-width:0.80994618;stroke-opacity:0.94520545;"
|
||||||
|
y="160.47581"
|
||||||
|
x="44.689861"
|
||||||
|
id="tspan1126">tcell</tspan></text>
|
||||||
|
<flowRoot
|
||||||
|
style="fill:black;fill-opacity:1;stroke:none;font-family:sans-serif;font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;letter-spacing:0px;word-spacing:0px"
|
||||||
|
id="flowRoot1132"
|
||||||
|
xml:space="preserve"><flowRegion
|
||||||
|
id="flowRegion1134"><rect
|
||||||
|
y="432.51968"
|
||||||
|
x="290"
|
||||||
|
height="160"
|
||||||
|
width="330"
|
||||||
|
id="rect1136" /></flowRegion><flowPara
|
||||||
|
id="flowPara1138"></flowPara></flowRoot> </g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 3.7 KiB |
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user