diff options
author | Patrick Spek <p.spek@tyil.nl> | 2022-05-12 22:03:30 +0200 |
---|---|---|
committer | Patrick Spek <p.spek@tyil.nl> | 2022-05-12 22:03:30 +0200 |
commit | f5f8b3d3e41b19fccdff8ef769825a13b13ed4e0 (patch) | |
tree | ac901aaaedc1e712e39146c9284930ea2bada327 | |
parent | bc26254d36c8ae059555b6c0d0e8256174a84fb6 (diff) |
Add todo util
-rwxr-xr-x | .local/bin/todo | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/.local/bin/todo b/.local/bin/todo new file mode 100755 index 0000000..4d4df99 --- /dev/null +++ b/.local/bin/todo @@ -0,0 +1,61 @@ +#!/bin/sh + +# This program is free software: you can redistribute it and/or modify it under +# the terms of the GNU Affero General Public License as published by the Free +# Software Foundation, either version 3 of the License, or (at your option) any +# later version. +# +# This program is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more +# details. + +readonly TODOTXT="$HOME/documents/todo.txt" + +main() +{ + # Handle opts + while getopts ":h" opt + do + case "$opt" in + h) usage && exit 0 ;; + *) + printf "Invalid option passed: %s\n" "$OPTARG" >&2 + ;; + esac + done + + shift $(( OPTIND - 1 )) + + if [ ! -f "$TODOTXT" ] + then + printf "%s\n" "No todo.txt found at $TODOTXT" >&2 + return 3 + fi + + if [ "$#" -lt 1 ] + then + cat "$TODOTXT" + return 0 + fi + + meta="$(date +%F)" + + printf "%s %s gtd:inbox\n" "$meta" "$*" + printf "%s %s gtd:inbox\n" "$meta" "$*" >> "$TODOTXT" +} + +usage() +{ + cat <<EOF +Usage: + ${0##*/} -h + +Add an entry to the todo list. + +Options: + -h Show this help text and exit. +EOF +} + +main "$@" |