LakTEK A Sri Lankan, A Rubyist and A Web Dude

Posted
28 August 2008 @ 9am

Tagged
, , ,

Simple command line todo list

They say pen and paper is the best way to manage a todo list. Following the popular norm, I also started tracking my todos with pen and paper. But after several unsuccessful attempts of finding a pen or deciphering tasks from torn or soaked paper, I felt keyboard and the pixel-screen would be more accessible than the traditional method. Without relying on any sophisticated applications I relied on the most simple form - plain-text. It was better, but after being inspired from efforts like todo.sh and todo.pl, I thought of coming up with a small command line utility of my own.

Enter todo gem!

This resulted in coding my first ruby gem - todo. It is just a simple command line utility for managing todos. I didn’t want to loose the flexibility offered by plain-text lists, hence it will use human readable YAML form, to store the lists. This enables you to use your favorite text editor to edit these todo lists.
Further it supports tags. You could list the tasks by tags, thus making things smart and easy.

Todo gem will run specific to a directory. This enables to keep different task lists in each directory. For example, I keep a todo list in my ‘home’ directory which holds all my housekeeping stuff and then I have separate lists for each project I work on in their respective directories. This separation allows better organization of the things to be done.

Example

Here is a basic example of how todo gem works:

  #visit your project folder
  cd projects/newapp
 
  #create a new todo list for the project
  todo create
 
  #add a new task
  todo add "write the specs"
  - add tags : important, due:24/08/2008
 
  #listing all tasks
  todo list --all
 
  #listing tasks tagged 'important'
  todo list --tag important
 
  #removing a task by name
  todo remove "write the specs"
 
  #removing a task by index
  todo remove -i 1

Get it!

To install todo gem in your machine simply run;

sudo gem install todo

Also the code of the gem is hosted in github, so you could fork and flip it in the way you want (and don’t forget to send me a pull request)


  • Soleone
    Nice and simple!

    It would be cool, if there was a small rails (or merb or whatever) server which would store the tasks globally for a user. So that I also can view/edit the tasks from another pc or even through a simple web interface.
  • I was thinking about this the other day. A cool DSL for todos could be:

    to do |task|
    task.description "Yayz"
    task.priority :high
    task.due 1.day.from_now
    end

    Huzzah!
  • It's nice and simple. Choosing YAML format was a great call, I think.

    Since all I need to run todo is a Ruby installation including the RubyGems system, it's very convenient for me to use.
  • yasith
    looks simple enough... gonna give it a try :)
    cheers!
blog comments powered by Disqus