diff options
author | EuAndreh <eu@euandre.org> | 2020-12-02 15:41:18 -0300 |
---|---|---|
committer | EuAndreh <eu@euandre.org> | 2020-12-02 15:41:54 -0300 |
commit | b3ee98bbb77d4e6d8ac3f0e0507cdb443b11271b (patch) | |
tree | 761c391c615be51364bf8be2592a3e7ddf10afc2 /scripts/assert-todos.sh | |
parent | with-container.sh: Call $@ with sh -c (diff) | |
download | toph-b3ee98bbb77d4e6d8ac3f0e0507cdb443b11271b.tar.gz toph-b3ee98bbb77d4e6d8ac3f0e0507cdb443b11271b.tar.xz |
Build and publish TODOs.org file
Diffstat (limited to 'scripts/assert-todos.sh')
-rwxr-xr-x | scripts/assert-todos.sh | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/scripts/assert-todos.sh b/scripts/assert-todos.sh index 7c32524..c3139d1 100755 --- a/scripts/assert-todos.sh +++ b/scripts/assert-todos.sh @@ -9,3 +9,35 @@ if grep -R FIXME $(git ls-files) | grep -v '^TODOs.org' | grep -v '^.git/' | gre echo "You should write them down properly on TODOs.org." exit 1 fi + +contains-element() { + local e match="$1" + shift + for e; do [[ "$e" == "$match" ]] && return 0; done + return 1 +} + +KNOWN_IDS=() +has_error=0 +# shellcheck disable=2013 +for todo in $(sed -e '/^\* Tasks$/,/^\* Improvements$/!d' TODOs.org | grep -nE '^\*\* .*$' | cut -d: -f1); do + if grep -E '^\*\* (CANCELLED|DONE)' <(sed "${todo}q;d" TODOs.org) > /dev/null; then + ID_OFFSET=3 + else + ID_OFFSET=2 + fi + ID="$(sed "$((todo+ID_OFFSET))q;d" TODOs.org)" + if grep '^:CUSTOM_ID: .*$' <(echo "$ID") > /dev/null; then + if contains-element "$ID" "${KNOWN_IDS[@]}"; then + echo "Duplicated ID: $ID" + has_error=1 + else + KNOWN_IDS+=("$ID") + fi + else + echo "Missing ID for TODO in line $todo" + has_error=1 + fi +done + +exit "$has_error" |