Files
microdao-daarion/scripts/session/preflight.sh

82 lines
1.8 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
EXPECTED_ROOT="${EXPECTED_ROOT:-/Users/apple/github-projects/microdao-daarion}"
REQUIRE_SESSION_STARTER=1
usage() {
cat <<'USAGE'
Usage:
bash scripts/session/preflight.sh [--expected-root /path/to/repo] [--no-session-starter]
Checks:
- current working directory
- git repository root
- current branch
- latest commit
- docs/SESSION_STARTER.md presence (default required)
- docs directory presence
Exit codes:
0 all checks passed
10 wrong repo root
11 missing SESSION_STARTER.md
12 missing docs directory
13 git not initialized / not a repo
USAGE
}
while [[ $# -gt 0 ]]; do
case "$1" in
--expected-root)
EXPECTED_ROOT="$2"
shift 2
;;
--no-session-starter)
REQUIRE_SESSION_STARTER=0
shift
;;
-h|--help)
usage
exit 0
;;
*)
echo "Unknown arg: $1" >&2
usage
exit 2
;;
esac
done
if ! git_root="$(git rev-parse --show-toplevel 2>/dev/null)"; then
echo "[FAIL] not a git repository" >&2
exit 13
fi
pwd_now="$(pwd)"
branch="$(git branch --show-current || true)"
head_line="$(git log --oneline -n 1 2>/dev/null || echo 'NO_COMMITS')"
printf "[INFO] pwd: %s\n" "$pwd_now"
printf "[INFO] git_root: %s\n" "$git_root"
printf "[INFO] branch: %s\n" "${branch:-DETACHED_OR_NONE}"
printf "[INFO] head: %s\n" "$head_line"
printf "[INFO] expected_root: %s\n" "$EXPECTED_ROOT"
if [[ "$git_root" != "$EXPECTED_ROOT" ]]; then
echo "[FAIL] unexpected repository root" >&2
exit 10
fi
if [[ ! -d "$git_root/docs" ]]; then
echo "[FAIL] missing docs directory: $git_root/docs" >&2
exit 12
fi
if [[ "$REQUIRE_SESSION_STARTER" -eq 1 && ! -f "$git_root/docs/SESSION_STARTER.md" ]]; then
echo "[FAIL] missing SESSION_STARTER: $git_root/docs/SESSION_STARTER.md" >&2
exit 11
fi
echo "[PASS] preflight OK"