dooby

A very simplistic command-line to-do/note list manager in Ruby.

WARNING!!!

You should know this gem lacks of fancy things, meaning: social, cloud, mobile, web interface, etc.

Why another to-do list manager?

I spend a lot of time in the terminal and I didn't really like any of the current options.

How does Dooby works?

Dooby is directory-based, so you can maintain different to-do/notes lists in every directory you want.

For instance, I use one to-do list per project, that way I don't have all the tasks in one place. So if I want to check my tasks for the project MySite I just cd to the directory and start using Dooby. That's it.

Usage

Special characters

Dooby uses some characters to visually help us to differentiate between things

@ => person (@peter, @john)

# => tag (#today, #tomorrow, #urgent, #work)

% => project (%website, %store)

: => status (:hold, :doing, :done)

^ => priority (^1, ^2, ^3)

Most of the characters doesn't have any meaning, only some of them like:

#today
#urgent
#tomorrow

Creating an alias

$ alias d='dooby'

Initializing Dooby

$ d init

This creates a .dooby/list.yml file in the current directory. Dooby will save all the tasks on it.

Adding items

$ d add "#fix the email error in %website, talk to @peter #today"

$ d a "learn to use the #aliases of the #commands"

Listing items

$ d list @peter

$ d l today

$ d l %website

$ d l @
 > shows tasks related to people

$ d l %
 > shows all the tasks with a related project

Listing items interactively

$ d il

> #today
Showing items containing: #today
 (b954bf)  #fix the email error in %website, talk to @peter #today
 (9cfbf4)  Need to go to the #doctor #today

> #doctor
Showing items containing: #doctor
(9cfbf4)  Need to go to the #doctor #today

> email
Showing items containing: email
(b954bf)  #fix the email error in %website, talk to @peter #today

Note: Dooby uses SHA1 as Task ID.

Editing items

Dooby supports autocompletion of task IDs in the delete and the edit commands, to fire it just do the same as in a bash shell, press TAB TAB.

$ d edit

or

$ d e
Task ID > TAB TAB
b954bf 9cfbf4 (we only have 2 tasks)

$ d e
Task ID > b TAB

and you'll see that the task id have been auto-completed

$ d e
Task ID > b954bf

now press Enter and TAB TAB again if you want the original text of the item:

$ d e
Task ID > b954bf
TAB or up arrow to edit > TAB

$ d e
Task ID > b954bf
TAB or up arrow to edit > #fix the email error in %website, talk to @peter #today

$ d e
Task ID > b954bf
TAB or up arrow to edit > #fix the email error in %website #today

Edit it and press Enter and the task will be saved.

Deleting items

$ d delete

or

$ d d
Task ID > TAB TAB
521a3d 9cfbf4

Note: the SHA1 of the task we edited previously has changed because it's based on the content

$ d d
Task ID > 9cfbf4
9cfbf4 deleted...

Dooby won't ask you if you really want to delete the task.

$ d l
Showing all items...
 (521a3d)  #fix the email error in %website #today

Deleting all the items

$ d flush

or

$ d f
Sure??? (yes/no)
yes
All the task were deleted!

Deleting the .dooby directory and all the tasks

$ d trash

or

$ d t
Sure??? (yes/no)
yes
No more dooby here T_T

Help

You can check the help out using the -h flag

$ d -h

$ d t -h

$ d l -h
NAME
  dooby

SYNOPSIS
  dooby list [what_to_show*] [options]+

DESCRIPTION
  Lists @people, #tags, %projects or tasks (default)

PARAMETERS
  what_to_show (-1 ~> what_to_show) 
  --help, -h 

Special Thanks

Most of the the ideas to code dooby were based on the work of other programmers, here's a list of all of them:

Gina Trapani (http://github.com/ginatrapani/todo.txt-cli)
Lakshan Perera (http://github.com/laktek/todo)
Scott Chacon (http://github.com/schacon/ticgit)

Thanks all of you!

== Note on Patches/Pull Requests

  • Fork the project.
  • Make your feature addition or bug fix.
  • Add tests for it. This is important so I don't break it in a future version unintentionally.
  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
  • Send me a pull request. Bonus points for topic branches.

== Copyright

Copyright (c) 2010 Rafael Magana. See LICENSE for details.