tdone : because the world really needs yet another
tdone.pl [action] [task]
- 1: have a version of perl installed >= 5.10 (unsure use: perl -v)
- 2: Put tdone.pl some where in your PATH
- 3: set TDONE_FILE in your enviroment to a file like ~/.tdone_list
- priority is determined by the number of +'s at the start of a task. For example +++ is more imporant then + and when you view your list it will be sorted for you with the highest priority first.
- locaiton is marked with an apetail/at sign (@). There is a provided verb (at) that will only look for words that begin with @.
- list : show a list of the file with added indexes (DEFAULT action if no input is given)
- add : add a new task to the file (DEFAULT action if input is given but no action is given)
- did : remove a task from the file, takes any number of id's from list
- find : search file for a given string (treated as a regular expression)
- at : search file for a given location (treated as a regular expression)
- tag : search file for a given tag (treated as a regular expression)
- edit : open up the file in what ever your evniroment states as your prefered editor
> tdone.pl list > tdone.pl add +++ some very important task @office :project > tdone.pl ++ some slightly important task @office :meeting > tdone.pl get milk @store :food :grocieres > tdone.pl list 0: +++ some very important task @office :project 1: ++ some slightly important task @office :meeting 2: get milk @store :food :grocieres > tdone.pl find important 0: +++ some very important task @office :project 1: ++ some slightly important task @office :meeting > tdone.pl tag food 2: get milk @store :food :grocieres > tdone.pl at office 1: ++ some slightly important task @office :meeting > tdone.pl did 2 0 > tdone.pl 0: ++ some slightly important task @office :meeting
The first thing that did was remove the need for the .pl
> ln -s tdone.pl tdone
Then because this is as simple as it get's I am not going to impliment anything like projects. Though that does not imply that you are stuck putting everything in to a single massive file (yuk!). Remember that the todo list file is just an evniroment var thus you can always do this:
> TDONE_FILE=~/.tdone/project_foo tdone ++ make this todo list thing simpler > TDONE_FILE=~/.tdone/project_foo tdone 0: ++ make this todo list thing simpler
But that is ugly and a lot to type so just alias it away:
> alias foo='TDONE_FILE=~/.tdone/project_foo tdone' > foo did 0 > foo ++ setup :gh_pages for project :foo @laptop > foo 0: ++ setup :gh_pages for project :foo @laptop
This method also makes building shopping lists simple:
> alias get='TDONE_FILE=./shopping tdone' > get milk @grocery > get plants @nursery > get nails @hardware
Then using the at filter becomes your location aware shopping list:
> get at grocery 0: milk @grocery > alias got='get did' > got 0 > get 0: plants @nursery 1: nails @hardware
Another handy one for bugtracking is :
> alias bug='TDONE_FILE=./bugs tdone' > cd ~/git/project_foo > bug +++ login with empty :password causes user to :delete there account!
Lastly becase these are just simple text files I have them all stored in my DropBox folder so syncing is doine and I get access via all my devices.
POSSIBLE CHANGES IN FUTURE VERSIONS
Currently I have provided the verbs list and add to be explict though I personaly never use them as the code already can infer them. There is also the possible issue of them being expected for the task in the case of no priority given:
tdone.pl add add a :feature to the site @office
Though the same can be said for all of the other verbs. I have been thinking about how to resolve this issue and so far the only clean way I can think of is to completely remove all verbs. The find verbs can be done by aliasing with something like ack or grep, but they will have to be there own words at that point. In the case of edit, and did it become complex as the TDONE_FILE is harder to infer for the right action to result.
The alternate in these cases would be to result to using flagged options, -e for example in the case of edit) as a way to resolve the syntax issues but I find this a bit ugly but it is reliable. Thus be warned that at some point there might be an alternate version that changes the syntax. In either case I will likely save this off as tdone2.pl and leave it to the user to pick which version they will prefer.
Love it? Hate it? Want to see something changed? Feel free to use the issue tracker to let me know.