#!/usr/bin/env bash # Copyright (C) Viktor Szakats # # SPDX-License-Identifier: curl # Compare git repo files with tarball files and report a mismatch # after excluding exceptions. set -eu gitonly=".git* ^.* ^appveyor.* ^buildconf ^GIT-INFO.md ^README.md ^renovate.json ^REUSE.toml ^SECURITY.md ^LICENSES/* ^docs/examples/adddocsref.pl ^docs/THANKS-filter ^projects/Windows/* ^scripts/ciconfig.pl ^scripts/cijobs.pl ^scripts/contributors.sh ^scripts/contrithanks.sh ^scripts/delta ^scripts/installcheck.sh ^scripts/release-notes.pl ^scripts/singleuse.pl ^src/tool_hugehelp.c.cvs ^tests/CI.md" tarfiles="$(mktemp)" gitfiles="$(mktemp)" tar -tf "$1" \ | sed -E 's|^[^/]+/||g' \ | grep -v -E '(/|^)$' \ | sort > "${tarfiles}" git -C "${2:-.}" ls-files \ | grep -v -E "($(printf '%s' "${gitonly}" | tr $'\n' '|' | sed -e 's|\.|\\.|g' -e 's|\*|.+|g'))$" \ | sort > "${gitfiles}" dif="$(diff -u "${tarfiles}" "${gitfiles}" | tail -n +3 || true)" rm -rf "${tarfiles:?}" "${gitfiles:?}" echo 'Only in tarball:' echo "${dif}" | grep '^-' || true echo echo 'Missing from tarball:' if echo "${dif}" | grep '^+'; then exit 1 fi