doing 0.0.1-alpha.2

A command line tool for remembering what you were doing and tracking what you've done
# doing

[![Build][build-badge]][build-workflow]
[![Version][crates-badge]][crates.io]

A Rust clone of [doing] by Brett Terpstra — a command line tool for remembering what you were doing and tracking what
you've done.

> [!WARNING]
> This project is under active development and is not yet ready for everyday use. Expect breaking changes, missing
> features, and rough edges.

## Installation

### Shell (recommended)

```sh
curl -fsSL https://raw.githubusercontent.com/aaronmallen/doing/main/script/install.sh | sh
```

> [!TIP]
> This installs `doing` to `~/.local/bin`. Make sure it's in your `PATH`:
>
>```sh
>export PATH="$HOME/.local/bin:$PATH"
>```

Override the install directory or pin a specific version:

```sh
DOING_INSTALL_PATH=~/.bin DOING_VERSION=0.1.0 curl -fsSL https://raw.githubusercontent.com/aaronmallen/doing/main/script/install.sh | sh
```

### Cargo

```sh
cargo install doing
```

## Differences from the original

This is a ground-up rewrite of Brett Terpstra's [doing] CLI. While we aim to be fully compatible, there are a few
intentional differences worth knowing about:

### Configuration format

New installations default to TOML for configuration, though YAML and JSON are also supported. If you're coming from
Brett's `doing`, your existing `.doingrc` should still work.

### Command names use hyphens

Multi-word commands use hyphens instead of underscores. For example, `last-note` instead of `last_note` and
`mark-flagged` instead of `mark_flagged`. This follows the convention used by most modern CLI tools.

### fzf is not installed automatically

Brett's `doing` will install [fzf] for you if it's not already on your system. We don't do that — you'll need to
install it yourself if you'd like to use it. If fzf isn't available, a built-in selection menu will be used instead.

### `views` and `sections` output format

`views` and `sections` print one item per line with additional details (e.g., section name, entry count) instead of
tab-separated names on a single line. The new format is more readable but may break scripts that parse the original
tab-separated output.

### `tag --rename` syntax

`tag --rename` takes two positional values (`--rename OLD NEW`) instead of requiring the new tag via the `--tag` flag
(`--tag NEW --rename OLD`).

### `config undo` not supported

Brett's `doing` supports `config undo` to restore the previous config file. We don't currently support this — if you
need to recover a config, use version control or your editor's undo history.

### `config get` output format

`config get` prints the raw value directly instead of wrapping it in YAML. Paths with `~/` are expanded to their full
form. This makes the output more predictable for scripting. The `-o`/`--output` format flag from Brett's `doing` is not
currently supported.

## Documentation

For more details on architecture, contributing, and project policies, see the [docs] directory.

## License

This project is licensed under the [MIT License].

[build-badge]: https://img.shields.io/github/actions/workflow/status/aaronmallen/doing/build.yml?branch=main&style=for-the-badge&logo=githubactions&logoColor=white
[build-workflow]: https://github.com/aaronmallen/doing/actions/workflows/build.yml?query=branch%3Amain
[crates-badge]: https://img.shields.io/crates/v/doing?style=for-the-badge&logo=rust
[crates.io]: https://crates.io/crates/doing
[docs]: https://github.com/aaronmallen/doing/tree/main/docs
[doing]: https://github.com/ttscoff/doing
[fzf]: https://github.com/junegunn/fzf
[MIT License]: https://github.com/aaronmallen/doing/blob/main/LICENSE