diff options
author | Raymaekers Luca <raymaekers.luca@gmail.com> | 2024-06-19 10:30:03 +0200 |
---|---|---|
committer | Raymaekers Luca <raymaekers.luca@gmail.com> | 2024-06-19 10:30:03 +0200 |
commit | ff6c38d3364165a7bae431888a87aab1e53a80b9 (patch) | |
tree | c0ac13cdbf388d59193522eb8775788a6fae3e81 /bin/menuscripts/td | |
parent | 4bf952169c5d94044a6dd3c868c990716d22c58b (diff) | |
parent | 05e1216b45340702f82a4946002015a05cebe9b1 (diff) |
Merge branch 'main' of debuc.com:dotfiles
Diffstat (limited to 'bin/menuscripts/td')
-rwxr-xr-x | bin/menuscripts/td | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/bin/menuscripts/td b/bin/menuscripts/td new file mode 100755 index 0000000..e905d9b --- /dev/null +++ b/bin/menuscripts/td @@ -0,0 +1,65 @@ +#!/bin/sh + +todo="$HOME/docs/filios"/todo + +die() { >&2 printf '%s\n' "$*"; exit 1; } +usage() +{ + cat <<EOF +usage: td [COMMAND] [ARGUMENT] + td lists to-do's +COMMANDS + new TEXT... add a new to-do + clear remove all to-do's + delete NUMBER delete a to-do by number + grep REGEX show to-do's matching regex + help show usage + move NUMBER NUMBER change priority of a to-do + edit edit file in \$EDITOR +EOF + exit 1 +} +wrong_usage() { >&2 printf 'Wrong usage!\n'; usage; } + +list_todos() { + [ ! -r "$todo" ] && die "No to-do's." + [ "$(wc -l < "$todo")" -eq 0 ] && die "No to-do's." + awk '{print NR ": " $0}' "$todo" +} + +# shellcheck disable=SC2142 + +### MAIN + +# Arguments without an option +case "$1" in + c*) rm -f "$todo"; >&2 printf 'Cleared.\n' ;; + h*) usage ;; + e*) $EDITOR "$todo" ;; + "") list_todos ;; + *) false ;; +esac && exit + + +arg="$1" +shift +[ "$1" ] || wrong_usage + +case "$arg" in + n*) + printf '%s\n' "$*" >> "$todo" + list_todos ;; + + d*) + sed -i -n "$1!p" "$todo" + list_todos ;; + g*) list_todos | grep "$*" ;; + + m*) + [ "$2" ] || wrong_usage + line="$(list_todos | sed "/^$1:/!d;s/^$1: //")" + sed -i "${1}d;${2}i${line}" "$todo" + list_todos ;; + + *) wrong_usage ;; +esac |