aboutsummaryrefslogtreecommitdiff
path: root/bin/td.sh
diff options
context:
space:
mode:
Diffstat (limited to 'bin/td.sh')
-rw-r--r--bin/td.sh31
1 files changed, 31 insertions, 0 deletions
diff --git a/bin/td.sh b/bin/td.sh
new file mode 100644
index 00000000..eaae1fd6
--- /dev/null
+++ b/bin/td.sh
@@ -0,0 +1,31 @@
+# Manage to-do files with just $EDITOR and git(1)
+
+# Specify the path and file
+dir=${TODO_DIR:-"$HOME"/Todo}
+file=${1:-"${TODO_NAME:-todo}"}
+
+# If the directory doesn't exist, create it
+[ -d "$dir" ] || mkdir -p -- "$dir" || exit
+
+# Change into the directory
+cd -- "$dir" || exit
+
+# If the current directory isn't a Git repository, try to create one
+if ! command -v isgr >/dev/null 2>&1 ; then
+ printf >&2 'isgr: command not found\n'
+ exit 1
+fi
+isgr || git init || exit
+
+# If the to-do file doesn't exist yet, create it
+[ -e "$file" ] || touch -- "$file" || exit
+
+# Launch an appropriate editor to edit that file
+"${VISUAL:-"${EDITOR:-ed}"}" "$file"
+
+# Add the file to the changeset
+git add -- "$file"
+
+# If there are changes to commit, commit them
+git diff-index --quiet HEAD ||
+git commit --message 'Changed by td(1df)' --quiet