#!/bin/sh set -eu if git grep FIXME | grep -Ev '^(vendor/|scripts/assert-todos.sh|locale/)'; then echo "Found dangling FIXME markers on the project." echo "You should write them down properly on TODOs.org." exit 1 fi 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 sed "${todo}q;d" TODOs.org | grep -qE '^\*\* (CANCELLED|DONE)'; then ID_OFFSET=3 else ID_OFFSET=2 fi line_n="$((todo+ID_OFFSET))" ID_LINE="$(sed "${line_n}q;d" TODOs.org)" if echo "$ID_LINE" | grep -q '^:CUSTOM_ID: .*$'; then ID="$(echo "$ID_LINE" | awk '{print $2}')" if echo "$KNOWN_IDS" | grep -q "$ID"; then echo "Duplicated ID: $ID" has_error=1 else if [ -z "$KNOWN_IDS" ]; then KNOWN_IDS="$ID" else KNOWN_IDS="$KNOWN_IDS:$ID" fi fi else echo "Missing ID for TODO in line $line_n" has_error=1 fi done exit "$has_error"