77 lines
1.9 KiB
Bash
Executable File
77 lines
1.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
cd "$REPO_ROOT"
|
|
|
|
RUN_BUNDLE_CHECK=1
|
|
|
|
usage() {
|
|
cat <<'EOF'
|
|
Usage:
|
|
scripts/github-workflows/check-builds.sh [--skip-bundle-check]
|
|
|
|
Checks the production bundle layout. By default this also verifies generated
|
|
outputs are fresh with scripts/bundle/bundle.sh --check. Use
|
|
--skip-bundle-check only after the current workflow has already run
|
|
scripts/bundle/bundle.sh --clean in the same checkout.
|
|
|
|
Options:
|
|
--skip-bundle-check Skip the generated-output freshness rebuild.
|
|
-h, --help Show this help.
|
|
EOF
|
|
}
|
|
|
|
while [ "$#" -gt 0 ]; do
|
|
case "$1" in
|
|
--skip-bundle-check)
|
|
RUN_BUNDLE_CHECK=0
|
|
;;
|
|
-h|--help)
|
|
usage
|
|
exit 0
|
|
;;
|
|
*)
|
|
echo "Unknown argument: $1" >&2
|
|
usage >&2
|
|
exit 2
|
|
;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
check_no_symlinks() {
|
|
local root="$1"
|
|
local first_link
|
|
|
|
if [ ! -e "$root" ]; then
|
|
echo "Missing production bundle path: $root" >&2
|
|
exit 1
|
|
fi
|
|
|
|
first_link="$(find "$root" -type l -print -quit)"
|
|
if [ -n "$first_link" ]; then
|
|
echo "Production bundle paths must not contain symlinks." >&2
|
|
echo "First symlink: $first_link" >&2
|
|
echo "Run scripts/bundle/bundle.sh --clean and commit the generated outputs." >&2
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
check_no_symlinks "viewer/packages"
|
|
check_no_symlinks "skills/cad/scripts/packages"
|
|
check_no_symlinks "skills/cad-viewer/scripts/viewer"
|
|
check_no_symlinks "skills/urdf/scripts/packages"
|
|
check_no_symlinks "skills/srdf/scripts/packages"
|
|
check_no_symlinks "skills/sdf/scripts/packages"
|
|
check_no_symlinks "plugins/cad/skills"
|
|
|
|
if [ "$RUN_BUNDLE_CHECK" -eq 1 ]; then
|
|
"$REPO_ROOT/scripts/bundle/bundle.sh" --check
|
|
else
|
|
echo "Skipping bundle freshness rebuild; current workflow already bundled outputs."
|
|
fi
|
|
|
|
echo "Production bundle layout is valid."
|