Skip to content

alecthomas/devtodo2

Repository files navigation

DevTodo2

DevTodo2 is a command-line task management utility. Tasks are hierarchically organised, have priorities, and track creation and completion time.

Task lists are stored in the current directory as the file .todo2.

For much more complete information please refer to the man page (todo2(1)).

Installing

DevTodo2 is written in Go. To install, you will need Go 1 or a release candidate.

Once you have Go installed and your GOPATH set, do the following:

$ go get github.com/alecthomas/kingpin/v2
$ git clone git://github.com/alecthomas/devtodo2.git
$ cd devtodo2
$ make
$ [sudo] make install

This will install to /usr/local by default, but that can be overridden by passing prefix=<dir> to make. The installation directories can be further customized by setting bindir=<dir>, mandir=<dir> and man1dir=<dir> which default to $(prefix)/bin, $(prefix)/share/man and $(mandir)/man1, respectively.

NOTE: You can also install with:

$ go get github.com/alecthomas/devtodo2

But the binary will be named devtodo2 and the man page will not be installed.

Uninstalling ----------If you want to uninstall, do the following:

$ cd devtodo2
$ [sudo] make uninstall

Examples

Task Command
Add a new task todo2 -a Shopping list
Add a new sub-task below task 1 todo2 -ag 1 Buy soap
Add a new sub-task below subtask 1.1 todo2 -ag 1.1 Go to store
Remove a sub-task below subtask 1 todo2 --remove 1.1
List outstanding tasks todo2
List all tasks todo2 -A

DevTodo1?

Yes, this is version 2. Version 1 was written in C++ in 2004, and has been due for a rewrite for a very long time.

Differences between version 1 and 2

New features:

  • Task lists are now stored as JSON.
  • Everything is a lot faster.
  • Much less code.

Not currently supported:

  • Readline-based editing of task text and priority.
  • Filters. Completed tasks are hidden by default, but may be displayed with -A.
  • Linked files.
  • ~/.todorc configuration file.
  • Colour customisation.
  • Custom task formatting.

How do I import my version 1 task lists?

DevTodo2 will load your old .todo files automatically. If you modify the task list with DevTodo2 it will transparently migrate the file to .todo2 in the new format.

You can specify the version 1 filename to load with --legacy-file=<filename>, and the version 2 filename with --file=<filename>.