Files
meshcore-bot-firmware/scripts/verify.sh
2026-05-14 21:52:07 -06:00

62 lines
1.6 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/meshcore-env.sh"
usage() {
cat <<'EOF'
Usage: scripts/verify.sh [--no-build|--build]
Runs local pre-review checks. By default, this applies the MeshCore patch queue
when needed, runs host tests, runs firmware bot safety checks, and compiles
Python helper scripts. Use --build to also run representative firmware builds.
EOF
}
run_build=0
while [ "$#" -gt 0 ]; do
case "$1" in
--help|-h)
usage
exit 0
;;
--no-build)
run_build=0
shift
;;
--build)
run_build=1
shift
;;
*)
echo "Unknown argument: $1" >&2
usage >&2
exit 2
;;
esac
done
if [ ! -d "${MESHCORE_DIR}/.git" ] && [ ! -f "${MESHCORE_DIR}/.git" ]; then
echo "MeshCore submodule is missing at ${MESHCORE_DIR}" >&2
echo "Run: git submodule update --init --recursive" >&2
exit 1
fi
if ! git -C "${MESHCORE_DIR}" diff --quiet --cached || ! git -C "${MESHCORE_DIR}" diff --quiet || [ -n "$(git -C "${MESHCORE_DIR}" ls-files --others --exclude-standard)" ]; then
echo "MeshCore submodule is dirty; verify existing patched tree without applying patches."
else
"${MESHCORE_FW_ROOT}/scripts/apply-patches.sh"
fi
python3 "${MESHCORE_FW_ROOT}/tests/firmware_bot/run_tests.py"
bash "${MESHCORE_FW_ROOT}/scripts/check-bot-safety.sh"
python3 -m py_compile \
"${MESHCORE_FW_ROOT}/scripts/parse-size-report.py" \
"${MESHCORE_FW_ROOT}/tests/firmware_bot/run_tests.py"
if [ "$run_build" -eq 1 ]; then
MESHCORE_SKIP_APPLY_PATCHES=1 bash "${MESHCORE_FW_ROOT}/scripts/build-representative.sh" --baseline
fi
echo "Verification complete."