diff --git a/README.md b/README.md index 93aa13f..12e83cf 100644 --- a/README.md +++ b/README.md @@ -1,26 +1,105 @@ # Rusty-tasks -A rewrite of an older CLI todo system without python and regex -## Goals +A personal task management system built on plain text and works in your favorite editor -- [ ] BLAZING FAST! -- [ ] replace python with rust -- [ ] replace regex with a markdown parsing library -- [ ] learn some rust along the way -## Ideas +## The General Idea -If you've used the bullet journal technique before, think if this as the +If you've used the bullet journal technique before, think of this as the digital, automated version of that. -- Accessible from anywhere in the terminal (TMUX, bare shell, etc) +- Accessible from anywhere in the terminal (TMUX, bare shell, etc.) * works really well with a drop-down terminal -- Takes advantage of default editor (vim, emacs, etc) -- Take advantage of Markdown for formatting +- Take advantage of your favorite editor (vim, Emacs, etc.) +- Take advantage of plain text formats (Markdown) - Organize tasks at different levels of urgency * Daily - Must get done now * Weekly - Must get done in the near future - * Monthly - I'm going to forget if I don't write it down but It's a ways away + * Monthly - I'm going to forget if I don't write it down, but It's a ways away - Every day start a new file * files should be dated -- Carry over uncompleted tasks from previous day +- Carry over uncompleted tasks from the previous day + + +## Installing + +```bash +git clone https://github.com/andrei-stoica/rusty-tasks.git +cd rusty-task +cargo install --path . +``` + +Alternatively, there is a binary download for AMD64 Linux machines available +on the [releases page](https://github.com/andrei-stoica/rusty-tasks/releases). +Just drop that anywhere on you PATH. I recommend adding `~/bin` to your PATH +and dropping the executable there. + +If you are not on a AMD64 Linux machine, you will need to build from source. +I have not tested this on other platforms, so I hesitate to provide binaries +for them. + +## Usage +***WARNING:*** *This documentation can be ahead of the releases on the GH release page* +```help +Usage: rusty-tasks [OPTIONS] + +Options: + -c, --config set config file to use + -C, --current-config show current config file + -p, --previous view previous day's notes [default: 0] + -l, --list list closest files to date + -n, --number number of files to list [default: 5] + -L, --list-all list closest files to date + -v, --verbose... increase logging level + -h, --help Print help + -V, --version Print version +``` + +Just use `rust-task` to access today's notes file. + +Use `rust-task -p ` to access a previous day's file where `` is the number +of days back you want to go. If a file does not exist for that day, it will +default to the closest to that date. A value of 0 represents today's file. + +Specify a custom config location with `-c`, otherwise, it will scan for a config +in the locations specified in the [config section](#config). If no config +exists it will create one. To see what config is being loaded you can use `-C`. + +To list your existing notes you can use `-L`. For a subset of these use +`-l` combined with `-n` to specify the number of files to list. This will be +the closest `n` files to the specified date, which is today by default. Specify +the target date using the `-p` as mentioned earlier + +## Config + +The config should be located in the following locations: + +- `~/.config/rusty_task.json` +- `~/.rusty_task.json` +- `$PWD/.rusty_task.json` + +If there is no config it will be created at `~/.config/rusty_task.json`. + +Example config: +``` +{ + "editor": "nano", + "sections": [ + "Daily", + "Weekly", + "Monthly" + ], + "notes_dir": "~/notes" +} +``` + +- `editor` is the executable that will be launched to modify the notes file +- `sections` is a list of Sections that will be carried over from the previous +day's notes + * only uncompleted tasks are carried over + * You can use other sections for scratch space and other journaling tasks +- `notes_dir` is the directory that stores your daily notes + * this could be set to your obsidian vault if you want it to work with + all of your other notes (I recommend checking out [obsidian.nvim](https://github.com/epwalsh/obsidian.nvim) + if you want to interact with an obsidian vault in neovim) +