dirt simple todos cli.
$ todo -list # list todos
$ todo -add "Call Bob" # add todo
$ todo -edit # open todo file in $EDITOR
$ todo -check 2 # check off one or more todos
$ todo -clear # remove checked todos
all commands have single letter versions:
-add is -a, -edit is -e, etc. check is -c. clear is -d.
$ todo -list
-> no todos in ~/.todo
$ todo -add Show example usage
-> added "Show example usage"
$ todo -add Eat a Pop Tart
-> added "Eat a Pop Tart"
$ todo -list
1. Show example usage
2. Eat a Pop Tart
$ todo -add Write a poem about dinosaurs
-> added "Write a poem about dinosaurs"
$ todo -check 2
1. Show example usage
X 2. Eat a Pop Tart
3. Write a poem about dinosaurs
$ todo -clear
1. Show example usage
2. Write a poem about dinosaurs
$ todo -check 1 2
X 1. Show example usage
X 2. Write a poem about dinosaurs
requires ldpl 4.3:
lpm install std-list
ldpl todo.ldpl -o=todo
cp todo ~/bin
this tool stores todos in ~/.todo by default.
to use a different todo file, set the env variable TODO:
env TODO=~/work/todo.txt todo -list
in either case, the todo db is a plain text file with one todo per line.
lines that begin with "X " (X and space) are treated as checked.
lines that begin with "#" are treated as headers.
for example:
$ cat ~/.todo
#ldpl-todo
finish README
X write up an example
take screenshots?
#ldpl
upgrade servers at work to 4.3
X test time travel feature
#lute
test ncurses on mac
add sound
becomes:
#ldpl-todo
2. finish README
X 3. write up an example
4. take screenshots?
#ldpl
6. upgrade servers at work to 4.3
X 7. test time travel feature
#lute
9. test ncurses on mac
10. add sound
i use a tiny fish wrapper with this program, t.fish:
$ t # todo -list
$ t "Call Terry" # todo -add "Call Terry"
$ t 2 # todo -check 2
$ t -d # todo -d