diff options
Diffstat (limited to '')
| -rwxr-xr-x | scripts/task | 47 |
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" |
