# 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: |+......| 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`? ,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 --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`? ,y,n: running `echo hello` hello Check: |+| Done #### `--open/-O` `check start --live -O/--open` will open the url in your browser by shelling out to `open` #### `--email ` 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 bob@work.com,steve@work.com 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 1. Fork it 2. Create your feature branch (`git checkout -b my-new-feature`) 3. Commit your changes (`git commit -am 'Add some feature'`) 4. Push to the branch (`git push origin my-new-feature`) 5. Create new Pull Request