Files
sized/scripts/check-release.sh
gamertan 77b11a8c29
Sized Linux checks / Linux AMD64 / Rust 1.88.0 (push) Successful in 4m57s
Sized Linux checks / Linux AMD64 / Rust 1.88.0 (pull_request) Successful in 5m0s
Keep package targets explicit and reject existing archive symlinks
2026-10-10 04:00:52 -04:00

40 lines
1.7 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
repo_root=$(cd "$(dirname "$0")/.." && pwd)
check_root=$(mktemp -d "${TMPDIR:-/tmp}/sized-package.XXXXXX")
trap 'rm -rf "$check_root"' EXIT
"$repo_root/scripts/release.sh" --output-dir "$check_root/bundle"
mkdir "$check_root/extracted" "$check_root/fixture"
tar -xzf "$check_root/bundle.tar.gz" -C "$check_root/extracted"
for required in sized sized.1 sized.bash _sized sized.fish LICENSE README.md MANUAL.md BUILD-INFO.txt; do
test -s "$check_root/extracted/$required"
done
test -x "$check_root/extracted/sized"
(
cd "$check_root"
if command -v sha256sum >/dev/null 2>&1; then
sha256sum -c bundle.tar.gz.sha256
else
shasum -a 256 -c bundle.tar.gz.sha256
fi
)
printf 'owned package fixture\n' > "$check_root/fixture/payload"
"$check_root/extracted/sized" --version
"$check_root/extracted/sized" "$check_root/fixture" --apparent --format json > "$check_root/result.json"
grep -q 'payload' "$check_root/result.json"
grep -q '"complete":true' "$check_root/result.json"
if "$repo_root/scripts/release.sh" --output-dir "$check_root/bundle" > "$check_root/repeat.log" 2>&1; then
printf 'Packaging unexpectedly replaced an existing output.\n' >&2
exit 1
fi
grep -q 'Refusing to replace' "$check_root/repeat.log"
ln -s "$check_root/untouched" "$check_root/linked.tar.gz"
if "$repo_root/scripts/release.sh" --output-dir "$check_root/linked" > "$check_root/linked.log" 2>&1; then
printf 'Packaging unexpectedly followed an existing archive symlink.\n' >&2
exit 1
fi
grep -q 'Refusing to replace' "$check_root/linked.log"
test ! -e "$check_root/untouched"
printf 'Archive contents, checksum, extracted CLI and overwrite guard passed.\n'