Files
AWatch-rus/scripts/check_install_kit_vs_repo.sh
T

83 lines
2.2 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
cd "$ROOT_DIR"
KIT_DIR="install-kit-awindows-20260427-211240"
TARGET_ROOT="${CARGO_TARGET_DIR:-$ROOT_DIR/adk-rust/target}"
RUST_BIN="${CHECK_INSTALL_KIT_VS_REPO_RUST:-}"
rust_candidates=()
if [[ -n "$RUST_BIN" ]]; then
rust_candidates+=("$RUST_BIN")
fi
rust_candidates+=(
"$TARGET_ROOT/release/check-install-kit-vs-repo"
"$ROOT_DIR/adk-rust/target/release/check-install-kit-vs-repo"
"/usr/local/bin/check-install-kit-vs-repo"
)
for candidate in "${rust_candidates[@]}"; do
if [[ -x "$candidate" ]]; then
exec "$candidate" --root "$ROOT_DIR" --kit-dir "$KIT_DIR" "$@"
fi
done
python3 - <<'PY'
from pathlib import Path
import hashlib
import sys
root=Path('.')
kit=Path('install-kit-awindows-20260427-211240')
if not kit.exists():
raise SystemExit('Install kit directory not found')
def sha(path: Path) -> str:
return hashlib.sha256(path.read_bytes()).hexdigest()
all_compared=[]
mismatches=[]
missing_in_repo=[]
allowed_kit_only_prefixes=('server-configs-' ,)
allowed_kit_only_files={'README-INSTALL-KIT.txt'}
for kp in sorted(p for p in kit.rglob('*') if p.is_file() and p.name!='MANIFEST.txt'):
rel=kp.relative_to(kit)
rp=root/rel
if not rp.exists():
rel_str=str(rel)
if rel_str in allowed_kit_only_files or rel_str.startswith(allowed_kit_only_prefixes):
continue
missing_in_repo.append(str(rel))
continue
all_compared.append(str(rel))
if sha(kp)!=sha(rp):
mismatches.append(str(rel))
ps_mismatches=[
p for p in mismatches
if p.startswith('windows/') and p.endswith(('.ps1', '.psm1', '.psd1'))
]
print(f'Compared files: {len(all_compared)}')
print(f'Missing in repo: {len(missing_in_repo)}')
print(f'Mismatched content: {len(mismatches)}')
if missing_in_repo:
print('--- Missing in repo ---')
for p in missing_in_repo:
print(p)
if mismatches:
print('--- Mismatches ---')
for p in mismatches:
print(p)
print(f'PowerShell mismatches: {len(ps_mismatches)}')
if ps_mismatches:
print('--- PowerShell mismatches ---')
for p in ps_mismatches:
print(p)
if missing_in_repo or mismatches:
sys.exit(1)
PY