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",
|
||||
"avatar_url": "https://avatars3.githubusercontent.com/u/3717137?v=4",
|
||||
"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": [
|
||||
]
|
||||
}
|
||||
|
2
.gitignore
vendored
2
.gitignore
vendored
@ -16,6 +16,8 @@
|
||||
.DS_Store
|
||||
gcal/client_secret.json
|
||||
gspreadsheets/client_secret.json
|
||||
profile.pdf
|
||||
|
||||
#intellij idea
|
||||
.idea/
|
||||
|
||||
|
30
Gopkg.lock
generated
30
Gopkg.lock
generated
@ -4,8 +4,8 @@
|
||||
[[projects]]
|
||||
name = "cloud.google.com/go"
|
||||
packages = ["compute/metadata"]
|
||||
revision = "777200caa7fb8936aed0f12b1fd79af64cc83ec9"
|
||||
version = "v0.24.0"
|
||||
revision = "aad3f485ee528456e0768f20397b4d9dd941e755"
|
||||
version = "v0.25.0"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
@ -25,6 +25,12 @@
|
||||
packages = ["."]
|
||||
revision = "6a9abf92e34f4de62ac671caee3143f10b98892d"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
name = "github.com/darkSasori/todoist"
|
||||
packages = ["."]
|
||||
revision = "ec6b38b374ab9c60cc9716d2083ae66eb9383d03"
|
||||
|
||||
[[projects]]
|
||||
name = "github.com/davecgh/go-spew"
|
||||
packages = ["spew"]
|
||||
@ -38,13 +44,13 @@
|
||||
revision = "b23993cbb6353f0e6aa98d0ee318a34728f628b9"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
name = "github.com/gdamore/tcell"
|
||||
packages = [
|
||||
".",
|
||||
"terminfo"
|
||||
]
|
||||
revision = "061d51a604c546b48e92253cb65190d76cecf4c6"
|
||||
version = "v1.0.0"
|
||||
revision = "de7e78efa4a71b3f36c7154989c529dbdf9ae623"
|
||||
|
||||
[[projects]]
|
||||
name = "github.com/golang/protobuf"
|
||||
@ -56,7 +62,7 @@
|
||||
branch = "master"
|
||||
name = "github.com/google/go-github"
|
||||
packages = ["github"]
|
||||
revision = "60d040d2dafa18fa3e86cbf22fbc3208ef9ef1e0"
|
||||
revision = "c0b63e2f9bb198baf328c8abf1ddcbe05ff9427e"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
@ -94,6 +100,12 @@
|
||||
revision = "645ef00459ed84a119197bfb8d8205042c6df63d"
|
||||
version = "v0.8.0"
|
||||
|
||||
[[projects]]
|
||||
name = "github.com/pkg/profile"
|
||||
packages = ["."]
|
||||
revision = "5b67d428864e92711fcbd2f8629456121a56d91f"
|
||||
version = "v1.2.1"
|
||||
|
||||
[[projects]]
|
||||
name = "github.com/pmezard/go-difflib"
|
||||
packages = ["difflib"]
|
||||
@ -110,7 +122,7 @@
|
||||
branch = "master"
|
||||
name = "github.com/rivo/tview"
|
||||
packages = ["."]
|
||||
revision = "83483397e826c343edb7b8c1f33fb7983dda9fc5"
|
||||
revision = "c33dd0cf8ef840e1c8905c838d5b1ce93050a825"
|
||||
|
||||
[[projects]]
|
||||
name = "github.com/stretchr/testify"
|
||||
@ -122,7 +134,7 @@
|
||||
branch = "master"
|
||||
name = "github.com/xanzy/go-gitlab"
|
||||
packages = ["."]
|
||||
revision = "6ada444068f460636db26ca0dd66cf2aa518fa8f"
|
||||
revision = "fb3ece09ef3e80cfa5c1e52dc75fcfb56c12e026"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
@ -143,7 +155,7 @@
|
||||
"context",
|
||||
"context/ctxhttp"
|
||||
]
|
||||
revision = "e514e69ffb8bc3c76a71ae40de0118d794855992"
|
||||
revision = "8887df42c721e930089d31b28391090a10a497d7"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
@ -179,7 +191,7 @@
|
||||
"googleapi/internal/uritemplates",
|
||||
"sheets/v4"
|
||||
]
|
||||
revision = "082d671a2a341aa205b22b580fa69747dcc3cdc8"
|
||||
revision = "efcb5f25ac56eae06c8b5672456c0b7767522685"
|
||||
|
||||
[[projects]]
|
||||
name = "google.golang.org/appengine"
|
||||
|
24
Gopkg.toml
24
Gopkg.toml
@ -31,11 +31,11 @@
|
||||
|
||||
[[constraint]]
|
||||
name = "github.com/gdamore/tcell"
|
||||
version = "1.0.0"
|
||||
branch = "master"
|
||||
|
||||
[[constraint]]
|
||||
name = "github.com/go-test/deep"
|
||||
version = "1.0.1"
|
||||
#[[constraint]]
|
||||
#name = "github.com/go-test/deep"
|
||||
#version = "1.0.1"
|
||||
|
||||
[[constraint]]
|
||||
name = "github.com/google/go-github"
|
||||
@ -54,36 +54,40 @@
|
||||
version = "1.4.0"
|
||||
|
||||
[[constraint]]
|
||||
branch = "master"
|
||||
name = "github.com/olebedev/config"
|
||||
branch = "master"
|
||||
|
||||
[[constraint]]
|
||||
name = "github.com/radovskyb/watcher"
|
||||
version = "1.0.2"
|
||||
|
||||
[[constraint]]
|
||||
branch = "master"
|
||||
name = "github.com/rivo/tview"
|
||||
branch = "master"
|
||||
|
||||
[[constraint]]
|
||||
branch = "master"
|
||||
name = "github.com/yfronto/newrelic"
|
||||
branch = "master"
|
||||
|
||||
[[constraint]]
|
||||
branch = "master"
|
||||
name = "golang.org/x/oauth2"
|
||||
branch = "master"
|
||||
|
||||
[[constraint]]
|
||||
branch = "master"
|
||||
name = "google.golang.org/api"
|
||||
branch = "master"
|
||||
|
||||
[[constraint]]
|
||||
name = "gopkg.in/yaml.v2"
|
||||
version = "2.2.1"
|
||||
|
||||
[[constraint]]
|
||||
branch = "master"
|
||||
name = "github.com/adlio/trello"
|
||||
branch = "master"
|
||||
|
||||
[[constraint]]
|
||||
name = "github.com/darkSasori/todoist"
|
||||
branch = "master"
|
||||
|
||||
[prune]
|
||||
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:
|
||||
go build -o bin/wtf
|
||||
@ -8,8 +8,11 @@ contrib_check:
|
||||
|
||||
install:
|
||||
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
|
||||
|
||||
run: build
|
||||
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://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://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 -->
|
||||
|
||||
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
|
||||
refreshInterval: 3600
|
||||
weather:
|
||||
apiKey: [YOUR API KEY]
|
||||
# From http://openweathermap.org/help/city_list.txt
|
||||
cityids:
|
||||
- 3370352
|
||||
- 1283240
|
||||
WTF_OWM_API_KEY: [YOUR API KEY]
|
||||
colors:
|
||||
current: "lightblue"
|
||||
enabled: true
|
||||
|
@ -55,10 +55,12 @@ gerrit:
|
||||
height: 2
|
||||
width: 2
|
||||
refreshInterval: 300
|
||||
domain: https://gerrit-review.googlesource.com
|
||||
projects:
|
||||
- org/test-project"
|
||||
- dotfiles
|
||||
username: "myname"
|
||||
verifyServerCertificate: false
|
||||
```
|
||||
|
||||
### Attributes
|
||||
@ -75,7 +77,7 @@ How often, in seconds, this module will update its data. <br />
|
||||
Values: A positive integer, `0..n`.
|
||||
|
||||
`domain` <br />
|
||||
_Optional_. Your Gerrit corporate domain. <br />
|
||||
Your Gerrit corporate domain. <br />
|
||||
Values: A valid URI.
|
||||
|
||||
`projects` <br />
|
||||
|
@ -61,6 +61,7 @@ wtf/github/
|
||||
```yaml
|
||||
github:
|
||||
enabled: true
|
||||
enableStatus: true
|
||||
position:
|
||||
top: 2
|
||||
left: 3
|
||||
@ -79,6 +80,11 @@ github:
|
||||
Determines whether or not this module is executed and if its data displayed onscreen. <br />
|
||||
Values: `true`, `false`.
|
||||
|
||||
`enableStatus` <br />
|
||||
Display pull request mergeability status ('dirty', 'clean', 'unstable',
|
||||
'blocked').<br />
|
||||
Values: `true`, `false`.
|
||||
|
||||
`position` <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
|
||||
draft: false
|
||||
---
|
||||
@ -8,7 +8,7 @@ Added in `v0.0.8`.
|
||||
|
||||
<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
|
||||
|
||||
@ -27,7 +27,7 @@ wtf/gitlab/
|
||||
## Required ENV Variables
|
||||
|
||||
<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
|
||||
|
||||
@ -77,14 +77,14 @@ How often, in seconds, this module will update its data. <br />
|
||||
Values: A positive integer, `0..n`.
|
||||
|
||||
`domain` <br />
|
||||
_Optional_. Your Gitlab corporate domain. <br />
|
||||
_Optional_. Your GitLab corporate domain. <br />
|
||||
Values: A valid URI.
|
||||
|
||||
`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 />
|
||||
<span class="caption">Key:</span> The name of the project. <br />
|
||||
<span class="caption">Value:</span> The namespace of the project.
|
||||
|
||||
`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
|
||||
url: "https://jenkins.domain.com/jenkins/view_url"
|
||||
user: "username"
|
||||
verifyServerCertificate: true
|
||||
```
|
||||
|
||||
### Attributes
|
||||
@ -61,3 +62,7 @@ Your Jenkins username. <br />
|
||||
The url to your Jenkins project or view. <br />
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
|
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
|
||||
|
||||
|
||||
|
||||
<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
|
||||
|
||||
@ -41,6 +44,7 @@ wtf/weather/
|
||||
|
||||
```yaml
|
||||
weather:
|
||||
apiKey: "2dfb3e3650a1950adddb6badf5ba1aaa"
|
||||
# From http://openweathermap.org/help/city_list.txt
|
||||
cityids:
|
||||
- 6173331
|
||||
@ -62,6 +66,9 @@ weather:
|
||||
|
||||
### Attributes
|
||||
|
||||
`apiKey` <br />
|
||||
Your <a href="https://openweathermap.org/appid">OpenWeatherMap API</a> key.
|
||||
|
||||
`cityids` <br />
|
||||
A list of the <a
|
||||
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/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/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>
|
||||
@ -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/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>
|
||||
|
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"
|
||||
"strings"
|
||||
|
||||
"github.com/rivo/tview"
|
||||
"github.com/senorprogrammer/wtf/wtf"
|
||||
)
|
||||
|
||||
@ -33,7 +34,7 @@ func (widget *Widget) Refresh() {
|
||||
widget.UpdateRefreshedAt()
|
||||
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.SetText(widget.result)
|
||||
@ -46,5 +47,5 @@ func (widget *Widget) String() string {
|
||||
|
||||
func (widget *Widget) execute() {
|
||||
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/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/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>
|
||||
@ -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/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>
|
||||
|
@ -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/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/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>
|
||||
@ -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/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>
|
||||
|
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/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/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>
|
||||
@ -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/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>
|
||||
|
@ -6,11 +6,41 @@
|
||||
<description>Recent content on WTF - A Terminal Dashboard</description>
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<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" />
|
||||
|
||||
|
||||
<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>
|
||||
<title>Gerrit</title>
|
||||
<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
|
||||
Source Code wtf/jenkins/ Required ENV Variables Key: WTF_JENKINS_API_KEY Value: Your Jenkins API key.
|
||||
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.
|
||||
refreshInterval How often, in seconds, this module will update its data.</description>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>Gitlab</title>
|
||||
<title>GitLab</title>
|
||||
<link>https://wtfutil.com/posts/modules/gitlab/</link>
|
||||
<pubDate>Fri, 08 Jun 2018 13:14:11 -0700</pubDate>
|
||||
|
||||
<guid>https://wtfutil.com/posts/modules/gitlab/</guid>
|
||||
<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 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.
|
||||
Key: h Action: Show the previous project.</description>
|
||||
</item>
|
||||
@ -294,9 +324,11 @@ Key: j Action: Select the next item in the list.</description>
|
||||
<guid>https://wtfutil.com/posts/modules/jira/</guid>
|
||||
<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.
|
||||
Keyboard Commands None.
|
||||
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):
|
||||
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>
|
||||
Keyboard Commands Key: [return] Action: Open the selected issue in the browser.
|
||||
Key: j Action: Select the next item in the list.
|
||||
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>
|
||||
@ -362,12 +394,11 @@ Key: h Action: Show the previous git repository.</description>
|
||||
|
||||
<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.
|
||||
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.
|
||||
Key: h Action: Show the previous weather location.
|
||||
Key: l Action: Show the next weather location.
|
||||
Key: ← Action: Show the previous weather location.
|
||||
Key: → Action: Show the next weather location.</description>
|
||||
Key: ← Action: Show the previous weather location.</description>
|
||||
</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/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/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>
|
||||
@ -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/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>
|
||||
|
@ -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/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/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>
|
||||
@ -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/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>
|
||||
|
@ -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/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/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>
|
||||
@ -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/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>
|
||||
|
@ -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/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/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>
|
||||
@ -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/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>
|
||||
|
@ -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/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/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>
|
||||
@ -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/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>
|
||||
@ -120,6 +122,20 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
||||
<h1 class="title">Posts</h1>
|
||||
<ul class="posts">
|
||||
<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>
|
||||
<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>
|
||||
</li><li>
|
||||
<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>
|
||||
|
||||
|
@ -6,11 +6,41 @@
|
||||
<description>Recent content in Posts on WTF - A Terminal Dashboard</description>
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<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" />
|
||||
|
||||
|
||||
<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>
|
||||
<title>Gerrit</title>
|
||||
<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
|
||||
Source Code wtf/jenkins/ Required ENV Variables Key: WTF_JENKINS_API_KEY Value: Your Jenkins API key.
|
||||
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.
|
||||
refreshInterval How often, in seconds, this module will update its data.</description>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>Gitlab</title>
|
||||
<title>GitLab</title>
|
||||
<link>https://wtfutil.com/posts/modules/gitlab/</link>
|
||||
<pubDate>Fri, 08 Jun 2018 13:14:11 -0700</pubDate>
|
||||
|
||||
<guid>https://wtfutil.com/posts/modules/gitlab/</guid>
|
||||
<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 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.
|
||||
Key: h Action: Show the previous project.</description>
|
||||
</item>
|
||||
@ -294,9 +324,11 @@ Key: j Action: Select the next item in the list.</description>
|
||||
<guid>https://wtfutil.com/posts/modules/jira/</guid>
|
||||
<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.
|
||||
Keyboard Commands None.
|
||||
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):
|
||||
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>
|
||||
Keyboard Commands Key: [return] Action: Open the selected issue in the browser.
|
||||
Key: j Action: Select the next item in the list.
|
||||
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>
|
||||
@ -362,12 +394,11 @@ Key: h Action: Show the previous git repository.</description>
|
||||
|
||||
<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.
|
||||
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.
|
||||
Key: h Action: Show the previous weather location.
|
||||
Key: l Action: Show the next weather location.
|
||||
Key: ← Action: Show the previous weather location.
|
||||
Key: → Action: Show the next weather location.</description>
|
||||
Key: ← Action: Show the previous weather location.</description>
|
||||
</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/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/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>
|
||||
@ -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/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>
|
||||
|
@ -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/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/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>
|
||||
@ -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/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>
|
||||
|
@ -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/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/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>
|
||||
@ -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/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>
|
||||
|
@ -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/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/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>
|
||||
@ -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/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>
|
||||
|
@ -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/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/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>
|
||||
@ -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/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>
|
||||
|
@ -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/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/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>
|
||||
@ -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/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>
|
||||
|
@ -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/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/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>
|
||||
@ -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/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>
|
||||
|
@ -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/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/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>
|
||||
@ -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/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>
|
||||
|
@ -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/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/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>
|
||||
@ -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/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>
|
||||
|
@ -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/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/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>
|
||||
@ -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/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>
|
||||
@ -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>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>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>-<span class="w"> </span>org/test-project<span class="s2">"
|
||||
</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>
|
||||
|
||||
<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>
|
||||
|
||||
<p><code>domain</code> <br />
|
||||
<em>Optional</em>. Your Gerrit corporate domain. <br />
|
||||
Your Gerrit corporate domain. <br />
|
||||
Values: A valid URI.</p>
|
||||
|
||||
<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/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/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>
|
||||
@ -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/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>
|
||||
|
@ -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/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/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>
|
||||
@ -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/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>
|
||||
@ -184,6 +186,7 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
||||
<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">
|
||||
</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>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">
|
||||
@ -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 />
|
||||
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 />
|
||||
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" />
|
||||
|
||||
<title>Gitlab | WTF - A Terminal Dashboard</title>
|
||||
<meta content="Gitlab - WTF - A Terminal Dashboard" property="og:title">
|
||||
<title>GitLab | WTF - A Terminal Dashboard</title>
|
||||
<meta content="GitLab - 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">
|
||||
@ -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/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/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>
|
||||
@ -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/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>
|
||||
@ -116,7 +118,7 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
||||
|
||||
<div class="content container">
|
||||
<div class="post">
|
||||
<h1>Gitlab</h1>
|
||||
<h1>GitLab</h1>
|
||||
|
||||
<div class="col-sm-12 col-md-12">
|
||||
<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>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>
|
||||
|
||||
@ -153,7 +155,7 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
||||
<h2 id="required-env-variables">Required ENV Variables</h2>
|
||||
|
||||
<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>
|
||||
|
||||
@ -199,17 +201,17 @@ How often, in seconds, this module will update its data. <br />
|
||||
Values: A positive integer, <code>0..n</code>.</p>
|
||||
|
||||
<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>
|
||||
|
||||
<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 />
|
||||
<span class="caption">Key:</span> The name of the project. <br />
|
||||
<span class="caption">Value:</span> The namespace of the project.</p>
|
||||
|
||||
<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>
|
||||
|
||||
|
@ -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/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/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>
|
||||
@ -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/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>
|
||||
|
@ -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/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/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>
|
||||
@ -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/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>
|
||||
|
@ -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/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/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>
|
||||
@ -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/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>
|
||||
|
@ -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/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/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>
|
||||
@ -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/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>
|
||||
|
@ -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/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/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>
|
||||
@ -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/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>
|
||||
@ -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>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>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>
|
||||
|
||||
<p><code>enabled</code> <br />
|
||||
@ -183,6 +186,11 @@ Your Jenkins username. <br /></p>
|
||||
The url to your Jenkins project or view. <br />
|
||||
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 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/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/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>
|
||||
@ -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/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>
|
||||
@ -147,7 +149,20 @@ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
||||
|
||||
<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>
|
||||
|
||||
|
@ -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/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/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>
|
||||
@ -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/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>
|
||||
|
@ -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/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/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>
|
||||
@ -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/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>
|
||||
|
@ -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/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/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>
|
||||
@ -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/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>
|
||||
|
@ -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/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/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>
|
||||
@ -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/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>
|
||||
|
@ -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/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/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>
|
||||
@ -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/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>
|
||||
|
@ -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/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/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>
|
||||
@ -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/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>
|
||||
|
@ -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/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/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>
|
||||
@ -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/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>
|
||||
|
@ -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/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/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>
|
||||
@ -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/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>
|
||||
|
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/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/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>
|
||||
@ -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/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>
|
||||
|
@ -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/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/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>
|
||||
@ -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/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>
|
||||
@ -144,7 +146,8 @@ current temperature, sunrise time, and sunset time.</p>
|
||||
<h2 id="required-env-variables">Required ENV Variables</h2>
|
||||
|
||||
<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>
|
||||
|
||||
@ -165,6 +168,7 @@ current temperature, sunrise time, and sunset time.</p>
|
||||
|
||||
<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">
|
||||
</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>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">
|
||||
@ -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>
|
||||
<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 />
|
||||
A list of the <a
|
||||
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/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/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>
|
||||
@ -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/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>
|
||||
|
@ -2,6 +2,16 @@
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
|
||||
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>
|
||||
<loc>https://wtfutil.com/posts/modules/gerrit/</loc>
|
||||
<lastmod>2018-06-27T15:55:42-07:00</lastmod>
|
||||
@ -179,7 +189,7 @@
|
||||
|
||||
<url>
|
||||
<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>
|
||||
</url>
|
||||
|
||||
@ -190,7 +200,7 @@
|
||||
|
||||
<url>
|
||||
<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>
|
||||
</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/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/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>
|
||||
@ -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/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>
|
||||
|
@ -13,6 +13,7 @@ import (
|
||||
type Flags struct {
|
||||
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'"`
|
||||
Profile bool `short:"p" long:"profile" optional:"yes" description:"Profile application memory usage"`
|
||||
Version bool `short:"v" long:"version" description:"Show version info"`
|
||||
}
|
||||
|
||||
|
@ -3,6 +3,7 @@ package github
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/google/go-github/github"
|
||||
"github.com/senorprogrammer/wtf/wtf"
|
||||
)
|
||||
|
||||
@ -37,7 +38,7 @@ func (widget *Widget) displayMyPullRequests(repo *GithubRepo, username string) s
|
||||
|
||||
str := ""
|
||||
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
|
||||
@ -72,3 +73,24 @@ func (widget *Widget) displayStats(repo *GithubRepo) string {
|
||||
func (widget *Widget) title(repo *GithubRepo) string {
|
||||
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
|
||||
}
|
||||
|
||||
// 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
|
||||
// requested to do a code review
|
||||
func (repo *GithubRepo) myReviewRequests(username string) []*ghb.PullRequest {
|
||||
|
@ -2,12 +2,15 @@ package jenkins
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"crypto/tls"
|
||||
"encoding/json"
|
||||
"io"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"strings"
|
||||
|
||||
"github.com/senorprogrammer/wtf/wtf"
|
||||
)
|
||||
|
||||
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.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)
|
||||
|
||||
if err != nil {
|
||||
|
112
jira/widget.go
112
jira/widget.go
@ -3,18 +3,24 @@ package jira
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/gdamore/tcell"
|
||||
"github.com/senorprogrammer/wtf/wtf"
|
||||
)
|
||||
|
||||
type Widget struct {
|
||||
wtf.TextWidget
|
||||
|
||||
result *SearchResult
|
||||
selected int
|
||||
}
|
||||
|
||||
func NewWidget() *Widget {
|
||||
widget := Widget{
|
||||
TextWidget: wtf.NewTextWidget(" Jira ", "jira", false),
|
||||
TextWidget: wtf.NewTextWidget(" Jira ", "jira", true),
|
||||
}
|
||||
widget.unselect()
|
||||
|
||||
widget.View.SetInputCapture(widget.keyboardIntercept)
|
||||
return &widget
|
||||
}
|
||||
|
||||
@ -29,12 +35,24 @@ func (widget *Widget) Refresh() {
|
||||
|
||||
widget.UpdateRefreshedAt()
|
||||
|
||||
var content string
|
||||
if err != nil {
|
||||
widget.result = nil
|
||||
widget.View.SetWrap(true)
|
||||
widget.View.SetTitle(widget.Name)
|
||||
content = err.Error()
|
||||
widget.View.SetText(err.Error())
|
||||
} else {
|
||||
widget.result = searchResult
|
||||
}
|
||||
|
||||
widget.display()
|
||||
}
|
||||
|
||||
/* -------------------- Unexported Functions -------------------- */
|
||||
|
||||
func (widget *Widget) display() {
|
||||
if widget.result == nil {
|
||||
return
|
||||
}
|
||||
widget.View.SetWrap(false)
|
||||
widget.View.SetTitle(
|
||||
fmt.Sprintf(
|
||||
@ -43,31 +61,68 @@ func (widget *Widget) Refresh() {
|
||||
wtf.Config.UString("wtf.mods.jira.project"),
|
||||
),
|
||||
)
|
||||
content = widget.contentFrom(searchResult)
|
||||
widget.View.SetText(fmt.Sprintf("%s", widget.contentFrom(widget.result)))
|
||||
}
|
||||
|
||||
widget.View.SetText(content)
|
||||
func (widget *Widget) next() {
|
||||
widget.selected++
|
||||
if widget.result != nil && widget.selected >= len(widget.result.Issues) {
|
||||
widget.selected = 0
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------- Unexported Functions -------------------- */
|
||||
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 {
|
||||
str := " [red]Assigned Issues[white]\n"
|
||||
|
||||
for idx, issue := range searchResult.Issues {
|
||||
str = str + fmt.Sprintf(
|
||||
" [%s]%-6s[white] [green]%-10s[%s] %s\n",
|
||||
fmtStr := fmt.Sprintf(
|
||||
"[%s] [%s]%-6s[white] [green]%-10s[white] [%s]%s",
|
||||
widget.rowColor(idx),
|
||||
widget.issueTypeColor(&issue),
|
||||
issue.IssueFields.IssueType.Name,
|
||||
issue.Key,
|
||||
wtf.RowColor("jira", idx),
|
||||
widget.rowColor(idx),
|
||||
issue.IssueFields.Summary,
|
||||
)
|
||||
|
||||
_, _, w, _ := widget.View.GetInnerRect()
|
||||
fmtStr = fmtStr + wtf.PadRow(len(issue.IssueFields.Summary), w+1)
|
||||
|
||||
str = str + fmtStr + "\n"
|
||||
}
|
||||
|
||||
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 {
|
||||
switch issue.IssueFields.IssueType.Name {
|
||||
case "Bug":
|
||||
@ -98,3 +153,42 @@ func getProjects() []string {
|
||||
}
|
||||
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 (
|
||||
"fmt"
|
||||
|
||||
"github.com/rivo/tview"
|
||||
"github.com/senorprogrammer/wtf/checklist"
|
||||
"github.com/senorprogrammer/wtf/wtf"
|
||||
)
|
||||
|
||||
@ -10,38 +12,35 @@ const checkWidth = 4
|
||||
|
||||
func (widget *Widget) display() {
|
||||
str := ""
|
||||
newList := List{selected: -1}
|
||||
|
||||
selectedItem := widget.list.Selected()
|
||||
maxLineLen := widget.list.LongestLine()
|
||||
newList := checklist.NewChecklist()
|
||||
|
||||
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)
|
||||
}
|
||||
|
||||
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.SetSelectedByItem(widget.list.Selected())
|
||||
widget.SetList(&newList)
|
||||
newList.SetSelectedByItem(widget.list.SelectedItem())
|
||||
widget.SetList(newList)
|
||||
|
||||
widget.View.Clear()
|
||||
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")
|
||||
|
||||
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) {
|
||||
foreColor = wtf.Config.UString("wtf.mods.todo.colors.highlight.fore", "black")
|
||||
backColor = wtf.Config.UString("wtf.mods.todo.colors.highlight.back", "white")
|
||||
foreColor = wtf.Config.UString("wtf.colors.highlight.fore", "black")
|
||||
backColor = wtf.Config.UString("wtf.colors.highlight.back", "orange")
|
||||
}
|
||||
|
||||
str := fmt.Sprintf(
|
||||
@ -49,10 +48,13 @@ func (widget *Widget) formattedItemLine(item *Item, selectedItem *Item, maxLen i
|
||||
foreColor,
|
||||
backColor,
|
||||
item.CheckMark(),
|
||||
item.Text,
|
||||
tview.Escape(item.Text),
|
||||
)
|
||||
|
||||
str = str + wtf.PadRow((checkWidth+len(item.Text)), (checkWidth+maxLen)) + "\n"
|
||||
|
||||
return str
|
||||
_, _, w, _ := widget.View.GetInnerRect()
|
||||
if w > maxLen {
|
||||
maxLen = w
|
||||
}
|
||||
|
||||
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/rivo/tview"
|
||||
"github.com/senorprogrammer/wtf/cfg"
|
||||
"github.com/senorprogrammer/wtf/checklist"
|
||||
"github.com/senorprogrammer/wtf/wtf"
|
||||
"gopkg.in/yaml.v2"
|
||||
)
|
||||
@ -39,7 +40,7 @@ type Widget struct {
|
||||
|
||||
app *tview.Application
|
||||
filePath string
|
||||
list *List
|
||||
list checklist.Checklist
|
||||
pages *tview.Pages
|
||||
}
|
||||
|
||||
@ -49,7 +50,7 @@ func NewWidget(app *tview.Application, pages *tview.Pages) *Widget {
|
||||
|
||||
app: app,
|
||||
filePath: wtf.Config.UString("wtf.mods.todo.filename"),
|
||||
list: &List{selected: -1},
|
||||
list: checklist.NewChecklist(),
|
||||
pages: pages,
|
||||
}
|
||||
|
||||
@ -67,7 +68,7 @@ func (widget *Widget) Refresh() {
|
||||
widget.display()
|
||||
}
|
||||
|
||||
func (widget *Widget) SetList(newList *List) {
|
||||
func (widget *Widget) SetList(newList checklist.Checklist) {
|
||||
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
|
||||
func (widget *Widget) editItem() {
|
||||
if widget.list.Selected() == nil {
|
||||
if widget.list.SelectedItem() == nil {
|
||||
return
|
||||
}
|
||||
|
||||
form := widget.modalForm("Edit:", widget.list.Selected().Text)
|
||||
form := widget.modalForm("Edit:", widget.list.SelectedItem().Text)
|
||||
|
||||
saveFctn := func() {
|
||||
text := form.GetFormItem(0).(*tview.InputField).GetText()
|
||||
@ -191,7 +192,7 @@ func (widget *Widget) newItem() {
|
||||
saveFctn := func() {
|
||||
text := form.GetFormItem(0).(*tview.InputField).GetText()
|
||||
|
||||
widget.list.Add(text)
|
||||
widget.list.Add(false, text)
|
||||
widget.persist()
|
||||
widget.pages.RemovePage("modal")
|
||||
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.7.x
|
||||
- 1.8.x
|
||||
- 1.9.x
|
||||
- 1.10.x
|
||||
- master
|
||||
|
||||
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://ci.appveyor.com/project/gdamore/tcell)
|
||||
@ -9,12 +9,6 @@
|
||||
[](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.
|
||||
It was inspired by termbox, but differs from termbox in some important
|
||||
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
|
||||
* [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.
|
||||
* [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
|
||||
|
||||
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
|
||||
portability, and includes support for all POSIX systems, at the slight expense
|
||||
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.
|
||||
portability, and includes support for all POSIX systems.
|
||||
|
||||
The database is also flexible & extensible, and can modified by either running a
|
||||
program to build the database, or hand editing of simple JSON files.
|
||||
The database is also flexible & extensible, and can modified by either running
|
||||
a program to build the entire database, or an entry for just a single terminal.
|
||||
|
||||
## More Portable
|
||||
|
||||
Tcell is portable to a wider variety of systems. It relies on standard
|
||||
POSIX supported function calls (on POSIX platforms) for setting terminal
|
||||
modes, which leads to improved support for a broader array of platforms.
|
||||
This does come at the cost of requiring your code to be able to use CGO, but
|
||||
we believe that the vastly improved portability justifies this
|
||||
requirement. Note that the functions called are part of the standard C
|
||||
library, so there shouldn't be any additional external requirements beyond
|
||||
that required for every POSIX program.
|
||||
Tcell is portable to a wider variety of systems. Tcell is believed
|
||||
to work with all of the systems officially supported by golang with
|
||||
the exception of nacl (which lacks any kind of a terminal interface).
|
||||
(Plan9 is not supported by Tcell, but it is experimental status only
|
||||
in golang.) For all of these systems *except Solaris/illumos*, Tcell
|
||||
is pure Go, with no need for CGO.
|
||||
|
||||
## No async IO
|
||||
## No Async IO
|
||||
|
||||
Tcell is able to operate without requiring SIGIO signals (unlike Termbox),
|
||||
or asynchronous I/O, and can instead use standard Go file
|
||||
@ -63,7 +55,7 @@ to fewer surprises.
|
||||
|
||||
## 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
|
||||
Windows terminals generally don't support the full Unicode repertoire.
|
||||
|
||||
@ -75,10 +67,10 @@ drawing certain characters.
|
||||
|
||||
## More Function Keys
|
||||
|
||||
It also has richer support for a larger number of
|
||||
special keys that some terminals can send.
|
||||
It also has richer support for a larger number of special keys that some
|
||||
terminals can send.
|
||||
|
||||
## Better color handling
|
||||
## Better Color Handling
|
||||
|
||||
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
|
||||
@ -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
|
||||
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.)
|
||||
|
||||
## Better mouse support
|
||||
## Better Mouse Support
|
||||
|
||||
Tcell supports enhanced mouse tracking mode, so your application can receive
|
||||
regular mouse motion events, and wheel events, if your terminal supports it.
|
||||
|
||||
## Why not just patch termbox-go?
|
||||
|
||||
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
|
||||
## Termbox Compatibility
|
||||
|
||||
A compatibility layer for termbox is provided in the compat
|
||||
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.)
|
||||
|
||||
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
|
||||
out to database file searches.
|
||||
|
||||
The second is a JSON file, that contains the same information, which can
|
||||
be located either by the $TCELLDB environment file, $HOME/.tcelldb, or is
|
||||
located in the Go source directory as database.json.
|
||||
The second is in the form of JSON files, that contain the same information,
|
||||
which can be located either by the $TCELLDB environment file, $HOME/.tcelldb,
|
||||
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
|
||||
generated using the mkinfo.go program. If you need to regnerate the
|
||||
entire set for some reason, run the mkdatabase.sh file. The generation
|
||||
uses the terminfo routines on the system to populate the data files.
|
||||
These files (both the Go and the JSON files) can be generated using the
|
||||
mkinfo.go program. If you need to regnerate the entire set for some reason,
|
||||
run the mkdatabase.sh file. The generation uses the infocmp(1) program on
|
||||
the system to collect the necessary information.
|
||||
|
||||
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
|
||||
@ -227,32 +212,27 @@ and examine "physical" screen contents.
|
||||
|
||||
## 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.
|
||||
On a small subset of these platforms (such as Solaris/illumos), we require
|
||||
cgo to run, in order to access termios. (Note that Linux and BSD systems
|
||||
do not require CGO for most purposes.)
|
||||
For mainstream systems with a suitably well defined system call interface
|
||||
to tty settings, everything works using pure Go.
|
||||
|
||||
(Note: CGO support is required if you wish to rebuild the terminal database
|
||||
from the system's native terminfo binary files. This is because we use the
|
||||
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.)
|
||||
For the remainder (right now means only Solaris/illumos) we use POSIX function
|
||||
calls to manage termios, which implies that CGO is required on those platforms.
|
||||
|
||||
### Windows
|
||||
|
||||
Windows console mode applications are supported. Unfortunately mintty
|
||||
and other cygwin style applications are not supported.
|
||||
|
||||
Modern console applications like ConEmu support all the good features
|
||||
(resize, mouse tracking, etc.)
|
||||
Modern console applications like ConEmu, as well as the Windows 10
|
||||
console itself, support all the good features (resize, mouse tracking, etc.)
|
||||
|
||||
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
|
||||
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
|
||||
fully compatible console implementation. Hopefully the Windows 10 console
|
||||
is more functional in this regard.
|
||||
fully compatible console implementation.
|
||||
|
||||
### 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
|
||||
platforms. The Simulation screen works, but as Tcell doesn't know how to
|
||||
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 {
|
||||
c := &cb.cells[(y*cb.w)+x]
|
||||
|
||||
c.currComb = append([]rune{}, combc...)
|
||||
i := 0
|
||||
for i < len(combc) {
|
||||
r := combc[i]
|
||||
for i < len(c.currComb) {
|
||||
r := c.currComb[i]
|
||||
if runewidth.RuneWidth(r) != 0 {
|
||||
// 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
|
||||
}
|
||||
i++
|
||||
@ -63,7 +64,6 @@ func (cb *CellBuffer) SetContent(x int, y int,
|
||||
c.width = runewidth.RuneWidth(mainc)
|
||||
}
|
||||
c.currMain = mainc
|
||||
c.currComb = combc
|
||||
c.currStyle = style
|
||||
}
|
||||
}
|
||||
|
11
vendor/github.com/gdamore/tcell/console_win.go
generated
vendored
11
vendor/github.com/gdamore/tcell/console_win.go
generated
vendored
@ -17,11 +17,11 @@
|
||||
package tcell
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"sync"
|
||||
"syscall"
|
||||
"unicode/utf16"
|
||||
"unsafe"
|
||||
"errors"
|
||||
)
|
||||
|
||||
type cScreen struct {
|
||||
@ -183,7 +183,7 @@ func (s *cScreen) CharacterSet() string {
|
||||
}
|
||||
|
||||
func (s *cScreen) EnableMouse() {
|
||||
s.setInMode(modeResizeEn | modeMouseEn)
|
||||
s.setInMode(modeResizeEn | modeMouseEn | modeExtndFlg)
|
||||
}
|
||||
|
||||
func (s *cScreen) DisableMouse() {
|
||||
@ -565,8 +565,14 @@ func (s *cScreen) getConsoleInput() error {
|
||||
if krec.ch != 0 {
|
||||
// synthesized key code
|
||||
for krec.repeat > 0 {
|
||||
// convert shift+tab to backtab
|
||||
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--
|
||||
}
|
||||
return nil
|
||||
@ -920,6 +926,7 @@ func (s *cScreen) clearScreen(style Style) {
|
||||
}
|
||||
|
||||
const (
|
||||
modeExtndFlg uint32 = 0x0080
|
||||
modeMouseEn uint32 = 0x0010
|
||||
modeResizeEn uint32 = 0x0008
|
||||
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");
|
||||
// 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.)
|
||||
//
|
||||
// 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
|
||||
// application program can just assume "everything is UTF-8". Reasonable
|
||||
// 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
|
||||
// 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
|
||||
// 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 {
|
||||
s.evch = make(chan Event, 10)
|
||||
s.quit = make(chan struct{})
|
||||
s.fillchar = 'X'
|
||||
s.fillstyle = StyleDefault
|
||||
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) {
|
||||
ev := NewEventKey(KeyRune, r, ModNone)
|
||||
ev := NewEventKey(key, r, mod)
|
||||
s.PostEvent(ev)
|
||||
}
|
||||
|
||||
@ -441,8 +442,10 @@ func (s *simscreen) SetSize(w, h int) {
|
||||
newc[(row*w)+col] = s.front[(row*s.physw)+col]
|
||||
}
|
||||
}
|
||||
s.physw = w
|
||||
s.physh = h
|
||||
s.cursorx, s.cursory = -1, -1
|
||||
s.physw, s.physh = w, h
|
||||
s.front = newc
|
||||
s.back.Resize(w, h)
|
||||
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