73 lines
1.8 KiB
Bash
Executable File
73 lines
1.8 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" "$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"
|