Crates.io | todor |
lib.rs | todor |
version | 1.10.0 |
source | src |
created_at | 2024-09-16 17:02:05.725107 |
updated_at | 2024-10-23 16:55:55.126231 |
description | yet another cli TODO in Rust |
homepage | |
repository | https://github.com/jfding/todor |
max_upload_size | |
id | 1376620 |
size | 286,148 |
Usage: todor [OPTIONS] [COMMAND]
Commands:
add -> add todo item to inbox [aliases: a]
mark -> mark item as done [aliases: m]
list -> list all uncompeleted tasks in box [aliases: l, ls]
listall -> list all(including compeleted) tasks [aliases: la]
listbox -> list all todo box in working dir [aliases: lb]
enc -> encrypt todo box file
dec -> decrypt todo box file
edit -> edit todo inbox file [aliases: e, ed]
count -> count items in inbox [aliases: c]
browse -> show items in all inboxes [aliases: b]
purge -> purge all the duplicated lines
sink -> sink all outdated uncompeleted to "today"
shift -> shift all uncompeleted in "today" to "tomorrow"
collect -> collect all uncompeleted in INBOX(or --inbox <which>) to "today"
pool -> pooling all uncompeleted of today to INBOX
import -> import uncompeleted task in any markdown file to current
filemanager -> launch file manager on basedir [aliases: fm]
checkout -> checkout routine tasks to "today"(collect --inbox routine)
routines -> shortcut command to list all routine tasks [aliases: r, rt]
help Print this message or the help of the given subcommand(s)
Options:
-c, --config <CONF> config file
-d, --dir <FOLDER> working dir
-i, --inbox <FILE> inbox file
-h, --help Print help
-V, --version Print version
and with a trick: the last part of execuables' name is the task-box name, so you can create some symlinks like:
ln -sf todor today
ln -sf todor tomorrow
ln -sf todor t.reading
ln -sf todor todo.coding
which will help you to locate the corresponding task-box quickly. ("today", "tomorrow", "reading", "coding", respectively)
These four commands: sink
, shift
, collect
, pool
are designed to move tasks around in the list. And below is a diagram to show how they work.
Many ideas were inspired by mdt, which is a shell script with gum as the UI library. While todor is written in Rust, as a single binary with a lot of more features, meanwhile keeping the simplicity and efficiency.
cli interface design factors:
how to store the tasks in fs
sub-tasks support
edit
command to edit the markdown file manually to manage the levellist
works very well with nice outputsmark
, purge
can work well enough
purge --sort
Routine tasks support, please refer to Routine Tasks