16bc6685f8
- spawn() now respects DRY_RUN, install.sh exports it to child phases, and postinstall.sh wraps every user-home mutation in run() — '--dry-run' no longer runs apt/install/clone or edits dotfiles for real - gen-docs.sh chmods regenerated files to 644 (mktemp mv left them at 0600) - make check now syntax-checks apps/, entertainment/, features/, templates/ - .gitignore protects config/authorized_keys + config/rclone.conf; drop the tracked empty authorized_keys and the stray 6 MB session file - pos-system-health --send prints 'sent:' only when a platform sender exists, otherwise warns on stderr (notify_send is silent-fail) - standardize sourced libs (no shebang); refresh AGENT_Context/DEV/APPS/SCRIPTS doc drift: notify.sh in lib lists, pos-health systemd units, tsui, scripts/, INTERACTIVE_CMDS list, entertainment scheduler (systemd timers only)
43 lines
1.8 KiB
Bash
Executable File
43 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
# Repo self-consistency check — run via `make check` (also as a pre-commit hook).
|
|
# bash -n every script, executability, doc<->code sync (gen-docs --check),
|
|
# and a dispatch smoke test. Exit 1 on any failure.
|
|
|
|
root="$(cd "$(dirname "$0")/.." && pwd)"
|
|
cd "$root"
|
|
|
|
fail=0
|
|
note() { echo " ✗ $*"; }
|
|
|
|
# ── 1. Syntax ───────────────────────────────────────────────────
|
|
for f in bin/pos bin/pos-* lib/*.sh install.sh preinstall.sh postinstall.sh \
|
|
completions/pos.bash scripts/*.sh apps/*/*.sh entertainment/*.sh \
|
|
features/*.sh templates/*.sh; do
|
|
[ -f "$f" ] || continue
|
|
bash -n "$f" 2>/dev/null || { note "syntax error in $f"; fail=1; }
|
|
done
|
|
|
|
# ── 2. Executability ────────────────────────────────────────────
|
|
for f in bin/pos bin/pos-*; do
|
|
[ -x "$f" ] || { note "not executable: $f"; fail=1; }
|
|
done
|
|
|
|
# ── 3. Doc <-> code sync ────────────────────────────────────────
|
|
if ! bash scripts/gen-docs.sh --check >/dev/null 2>&1; then
|
|
note "doc/code drift — run 'make gen' and commit the regenerated files"
|
|
fail=1
|
|
fi
|
|
|
|
# ── 4. Dispatch smoke test ──────────────────────────────────────
|
|
bash bin/pos --help >/dev/null 2>&1 || { note "pos --help failed"; fail=1; }
|
|
bash bin/pos docker --help >/dev/null 2>&1 || { note "pos docker --help failed"; fail=1; }
|
|
bash bin/pos bogus >/dev/null 2>&1 && { note "pos bogus should have failed"; fail=1; }
|
|
|
|
if [ "$fail" -eq 0 ]; then
|
|
echo "check-sync: OK"
|
|
else
|
|
echo "check-sync: FAILED" >&2
|
|
exit 1
|
|
fi
|