Files
TalkEdit/scripts/collect-diagnostics.sh
2026-04-15 17:13:56 -06:00

73 lines
1.9 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
OUT_BASE="$ROOT_DIR/.diagnostics"
TS="$(date +%Y%m%d_%H%M%S)"
OUT_DIR="$OUT_BASE/diag_$TS"
mkdir -p "$OUT_DIR"
log() {
printf '[collect-diagnostics] %s\n' "$1"
}
capture_cmd() {
local name="$1"
shift
{
echo "# $name"
echo "# cmd: $*"
"$@"
} >"$OUT_DIR/$name.txt" 2>&1 || true
}
log "output: $OUT_DIR"
capture_cmd "env_uname" uname -a
capture_cmd "env_node_version" node --version
capture_cmd "env_npm_version" npm --version
capture_cmd "env_git_status" git -C "$ROOT_DIR" status --short
capture_cmd "env_git_head" git -C "$ROOT_DIR" rev-parse --short HEAD
if [[ -f "$ROOT_DIR/webview.log" ]]; then
cp "$ROOT_DIR/webview.log" "$OUT_DIR/webview.log" || true
fi
if [[ -f "$ROOT_DIR/backend.log" ]]; then
cp "$ROOT_DIR/backend.log" "$OUT_DIR/backend.log" || true
fi
if [[ -f "$ROOT_DIR/frontend/package.json" ]]; then
capture_cmd "frontend_lint" bash -lc "cd '$ROOT_DIR/frontend' && npm run -s lint"
capture_cmd "frontend_build" bash -lc "cd '$ROOT_DIR/frontend' && npm run -s build"
fi
PY=""
for p in \
"$ROOT_DIR/.venv312/bin/python3.12" \
"$ROOT_DIR/.venv312/bin/python" \
"$ROOT_DIR/.venv/bin/python3" \
"$ROOT_DIR/.venv/bin/python" \
"$ROOT_DIR/venv/bin/python3" \
"$ROOT_DIR/venv/bin/python"; do
if [[ -x "$p" ]]; then
PY="$p"
break
fi
done
if [[ -n "$PY" ]]; then
capture_cmd "backend_python_version" "$PY" --version
capture_cmd "backend_health_check" env PYTHONPATH="$ROOT_DIR/backend:$ROOT_DIR" "$PY" -c "import importlib; importlib.import_module('backend.main'); print('backend import OK')"
fi
capture_cmd "list_recent_files" find "$ROOT_DIR" -maxdepth 2 -type f | head -n 200
if command -v tar >/dev/null 2>&1; then
tar -czf "$OUT_DIR.tar.gz" -C "$OUT_BASE" "diag_$TS"
log "archive: $OUT_DIR.tar.gz"
fi
log "done"