toddi 0.2.0

A TODO focuser built on top of todo.txt
Documentation
# toddi

Want to get things done? Pick a task, do it, and move on to the next one.

`toddi` will tell you exactly what to focus on, per project, based on your
`todo.txt` tasks.

## Why?

Why not?

I've been using `todo.txt` regularly for a few months, and I noticed that:

1. I get distracted by the list of tasks.
1. I can't be bothered to learn the various command line arguments to filter
   out the output
1. I needed a way to _focus_ on _one_ task (the most important)

Hence, `toddi`. I'm building it to fit my purpose.

Which also turned out to be a good excuse to practice some Rust.

## Requirements

At this stage, `toddi` is meant to be used with `todo.txt`, unless you are
willing to spend time manually moving TODOs to `done.txt` with the correct
formatting.

By default, the program assumes the default `todo.txt` paths in the absence of
the relevant optional input:

* `~/.todo-txt/todo.txt`
* `~/.todo-txt/done.txt`

### Task line format specification

The format for a task line should conform to `todo.txt` documentation.

E.g.:

```
(PRIO) Task's short description +project @context
```

The priority `(PRIO)` field is a single capital letter enclosed within
parenthesis. Only one is allowed.

The task description field is a contiguous alphanumerical space-separated
multiple-word sentence. It tolerates the following special non-alphanumerical
characters: `. _ - '` (i.e. dot, underscore, dash and apostrophe). Any other
will invalidate the line.

The project field is an alphanumerical single word preceded by a `+` (plus)
sign. Only one is allowed.

The context field is an alphanumerical single word preceded by a `@` (at) sign.
Only one is allowed.

The context and project fields can switch place between each other.

The format for a done line looks like this:

### Done line format specification

```
x YYYY-MM-DD Task's short description +project @context
```

Note the `x` on the left.

## Usage

If you trust your planning and just need a way to focus on _the next task_,
use:

```sh
$ toddi
```

Display next `todo.txt` task for project `myproject` (i.e. `+myproject` on the
task line) and a progress bar indicating the project's level of completion.

```sh
$ toddi focus myproject
```

Use `--help` for more information:

```sh
$ toddi --help
```

## Configuration

A TOML configuration file is expected at the standard XDG_CONFIG_HOME location:
`$HOME/.config/toddi/config.toml`

If not present, it will be automatically created and populated with mandatory
default values on first use.

```toml
todo_file = "/home/user/.todo-txt/todo.txt"
done_file = "/home/user/.todo-txt/done.txt"
```

## License

source
: [GPL-3.0-or-later](https://spdx.org/licenses/GPL-3.0-or-later.html)