#!/bin/sh set -eu if git grep FIXME | grep -v '^TODOs.md' | grep -v '^aux/workflow/assert-todos.sh'; then echo "Found dangling FIXME markers on the project." echo "You should write them down properly on TODOs.md." exit 1 fi awk -F'{#' ' BEGIN { exitstatus = 0 h2flag = 0 h2status = "" prevline = "" idx = 0 delete ids[0] } h2flag == 1 { split($0, l, " ") timelinestatus = l[2] if (h2status != timelinestatus) { print "h2/timeline status mismatch for line " NR-1 print prevline print $0 exitstatus = 1 } h2status = "" h2flag = 0 } /^## (TODO|DOING|WAITING|MEETING|INACTIVE|NEXT|CANCELLED|DONE|WONTFIX)/ { if (match($0, / \{#.*?\}.*$/) == 0) { print "Missing ID for line " NR ":\n" $0 exitstatus = 1 } id_with_prefix = substr($2, 0, length($2) - 1) match(id_with_prefix, /^\w+-/) id = substr(id_with_prefix, RLENGTH + 1) if (id in arr) { print "Duplicate ID: " id exitstatus = 1 } else { arr[id] = 1 } split($0, l, " ") h2status = l[2] h2flag = 1 prevline = $0 } /^# Scratch$/ { exit exitstatus } ' TODOs.md