diff --git a/scripts/diffcheck.sh b/scripts/diffcheck.sh index aa9f557cf2..1bc39332f4 100755 --- a/scripts/diffcheck.sh +++ b/scripts/diffcheck.sh @@ -1,10 +1,27 @@ #!/bin/bash +set -euo pipefail + scripts/buildtable.pl >/tmp/table.mediawiki 2> /dev/null diff README.mediawiki /tmp/table.mediawiki | grep '^[<>] |' >/tmp/after.diff || true -if git checkout HEAD^ && scripts/buildtable.pl >/tmp/table.mediawiki 2>/dev/null; then + +orig_branch=$(git symbolic-ref --short HEAD 2>/dev/null || true) +orig_head=$(git rev-parse HEAD) + +cleanup() { + if [[ -n "$orig_branch" ]]; then + git checkout "$orig_branch" >/dev/null 2>&1 || git checkout "$orig_head" >/dev/null 2>&1 + else + git checkout "$orig_head" >/dev/null 2>&1 || true + fi +} +trap cleanup EXIT + +if git checkout HEAD^ >/dev/null 2>&1; then + trap 'cleanup; exit 1' INT TERM HUP + scripts/buildtable.pl >/tmp/table.mediawiki 2>/dev/null diff README.mediawiki /tmp/table.mediawiki | grep '^[<>] |' >/tmp/before.diff || true - newdiff=$(diff -s /tmp/before.diff /tmp/after.diff -u | grep '^+') + newdiff=$(diff -s /tmp/before.diff /tmp/after.diff -u | grep '^[+]') if [ -n "$newdiff" ]; then echo "$newdiff" exit 1