aboutsummaryrefslogtreecommitdiff
path: root/scripts/task
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2021-03-08 12:32:25 -0300
committerEuAndreh <eu@euandre.org>2021-03-08 12:32:25 -0300
commitd44c3e53d2ca24a81a1637f22bef3f89ea0b40e0 (patch)
tree48a4a182b28afaea67c7920d8af03720e262ab4f /scripts/task
parentfake-symlinks: Remove default.nix (diff)
downloaddotfiles-d44c3e53d2ca24a81a1637f22bef3f89ea0b40e0.tar.gz
dotfiles-d44c3e53d2ca24a81a1637f22bef3f89ea0b40e0.tar.xz
Move task() from sh/util.sh to scripts/task
Diffstat (limited to 'scripts/task')
-rwxr-xr-xscripts/task47
1 files changed, 47 insertions, 0 deletions
diff --git a/scripts/task b/scripts/task
new file mode 100755
index 00000000..6a7cba1e
--- /dev/null
+++ b/scripts/task
@@ -0,0 +1,47 @@
+#!/bin/sh
+set -eu
+
+uuid() {
+ # Taken from:
+ # https://serverfault.com/a/799198
+ od -xN20 /dev/urandom | \
+ head -1 | \
+ awk '{OFS="-"; print $2$3,$4,$5,$6,$7$8$9}'
+}
+
+insert_at_line() {
+ N="$1"
+ F="$2"
+ TMP="$(mktemp)"
+ printf '%s\n\n%s\n\n%s\n' \
+ "$(head "-n$N" "$F")" \
+ "$(cat -)" \
+ "$(tail "-n+$((N+1))" "$F")" \
+ > "$TMP"
+ mv "$TMP" "$F"
+}
+
+SHORT=
+while getopts 'c' flag; do
+ case "$flag" in
+ c)
+ SHORT=1
+ ;;
+ *)
+ ;;
+ esac
+done
+
+TITLE="${1:-FIXME}"
+ID="#task-$(uuid)"
+TITLE_LINE="$(printf '## TODO %s {%s}\n- TODO in %s\n' "$TITLE" "$ID" "$(date -I)")"
+
+if [ "$SHORT" = '1' ] && [ "$TITLE" != 'FIXME' ]; then
+ echo "$TITLE_LINE" | insert_at_line 2 TODOs.md
+else
+ printf '%s\n\n---\n\nFIXME\n' "$TITLE_LINE" | vipe | insert_at_line 2 TODOs.md
+fi
+
+git reset .
+git add TODOs.md
+git commit -m "TODOs.md: Add $ID"