Check, Check, It
use checklists, like a boss
CheckCheckIt is a ruby library that exposes the command line program check
and companion web service that makes the process of going through a checklist easy to sync across multiple people.
Right now everything begins at the command line and a directory of checklists.
A "checklist" is just a text file. Every line that starts with a dash '-' is a step. Everything beneath a step is that step's body or description.
Installation
$ gem install checkcheckit
Usage
# it's all text
$ cat ~/checkcheckit/personal/groceries.md
- bacon
- eggs
- coffee
- chicken apple sausage
- avocados
# start a list at the command line and keep it there
$ check start ~/checkcheckit/personal/groceries.md
|.......| Step 1: bacon
Check: <enter>
|+......| Step 2: eggs
Check: ^C
Goodbye!
# start a list, open it in your browser, and skip the CLI interaction
$ check start groceries --live --web-only --open
$ check start groceries --live --no-cli -O
Live at URL: http://checkcheckit.herokuapp.com/4f24b9d933d5467ec913461b8da3f952dbe724cb
# Use it with any text file
$ check start /Users/csquared/checkcheckit/groceries.md
# When files are in `~/checkcheckit`
# list your checklists
$ check list
# Checklists
personal
groceries
work
deploy
# Start with shortcut names
$ check start groceries
# Run commands from the checklist
$ cat ./hello.txt
- say hello
`echo hello`
$ check start ./hello.txt
|.| Step 1: say hello
`echo hello`
Run command `echo hello`?
<enter>,y,n:
running `echo hello`
hello
Check:
|+| Done
start
a checklist
You can go through a checklist by running check start
and then the checklist name.
If there are multiple checklists with the same name use the format folder/checklist
.
When you iterate through a checklist you can just type "enter", "y", or "+" to confirm a step and "no" or "-" to fail one.
--live
mode
This is fun.
check start <listname> --live
will create an interactive companion URL on the web.
This URL is websockets-enabled and communicates with the command line. This means command line 'checks' get pushed to the web. Once a list is on the web you can disconnect the command line and continue finishing it (with others).
$ check start deploy --live
Live at URL: http://checkcheckit.herokuapp.com/4f24b9d933d5467ec913461b8da3f952dbe724cb
Websocket refused connection - using POST
|........| Step 1: Make sure there are no uncommitted changes
> `git status`
Check:
|+.......| Step 2: Pull everything from git
> `git pull`
Check: ^C
bye
During that console session the web UI would be interactively crossing items off the list:
shell out to commands
This is useful.
check
will recognize any text that is surrouned with backticks: `command with args` as a command to potentially run.
It will prompt you if you'd like it to run the command. You will then have the option to check it off.
For example:
$ cat ./hello.txt
- say hello
`echo hello`
$ check start ./hello.txt
|.| Step 1: say hello
`echo hello`
Run command `echo hello`?
<enter>,y,n:
running `echo hello`
hello
Check:
|+| Done
--open/-O
check start <listname> --live -O/--open
will open the url in your browser by shelling out to open
--email <address(es)>
Specify an email (or a comma-separated list) on the command line via the --email
flag and
the address(es) will receive an email with a link to a web version of the checklist.
$ check start deploy --email [email protected],[email protected]
Live at URL: http://checkcheckit.herokuapp.com/4f24b9d933d5467ec913461b8da3f952dbe724cb
Websocket refused connection - using POST
|........| Step 1: Make sure there are no uncommitted changes
> `git status`
Check: ^C
bye
list
the checklists
checkcheckit
works with a normal filename.
However, it also assumes a home directory of ~/checkcheckit
In that directory are folders for your organizations, groups, etc so you can start them by name.
In those folders are your checklists.
$ check list
# Checklists
heroku
todo
personal
todo
vault
deploy
TODO
- resume a run locally from URL
- push notes to web
- emit pass/fail and colorize
- post to campfire
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request