aboutsummaryrefslogblamecommitdiff
path: root/aux/workflow/assert-todos.sh
blob: 203d465a5b164101aaf0758b54ff16d54d600fe3 (plain) (tree)
























































                                                                                                                     
#!/bin/sh
set -eu

if git grep FIXME | grep -v '^TODOs.md' | grep -v '^aux/workflow/assert-todos.sh' | grep -v '^aux/docbook-xsl/'; 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)/ {
  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