50 lines
1.6 KiB
Bash
50 lines
1.6 KiB
Bash
#!/usr/bin/env bash
|
|
# =============================================================================
|
|
# scripts/verify-genomes.sh
|
|
# Check (default) or --sync the directory structure of every registered genome
|
|
# against the canonical layout in lib/structure.sh.
|
|
#
|
|
# bash scripts/verify-genomes.sh # report drift, non-zero exit on drift
|
|
# bash scripts/verify-genomes.sh --sync # create missing dirs everywhere (safe)
|
|
#
|
|
# No hardware/LLM involved — pure structure check. Run anywhere.
|
|
# =============================================================================
|
|
set -euo pipefail
|
|
source "lib/output.sh"
|
|
source "globals.env"
|
|
source "registry.sh"
|
|
source "lib/structure.sh"
|
|
|
|
MODE="verify"
|
|
[[ "${1:-}" == "--sync" ]] && MODE="sync"
|
|
|
|
step "Genome structure: ${MODE}"
|
|
|
|
TOTAL_MISSING=0
|
|
for entry in "${GENOMES[@]}"; do
|
|
IFS='|' read -r GENOME_NAME _ <<< "$entry" # 4-field registry; only GENOME_NAME used here
|
|
genome_dir="${WORK_DIR}/${MASTER_REPO}/${GENOME_NAME}"
|
|
|
|
if [[ ! -d "$genome_dir" ]]; then
|
|
warn "not found locally, skipping: ${GENOME_NAME}"
|
|
continue
|
|
fi
|
|
|
|
info "Genome: ${GENOME_NAME}"
|
|
if [[ "$MODE" == "sync" ]]; then
|
|
structure_sync "$genome_dir"
|
|
else
|
|
structure_report "$genome_dir" && m=0 || m=$?
|
|
TOTAL_MISSING=$((TOTAL_MISSING + m))
|
|
fi
|
|
done
|
|
|
|
echo ""
|
|
if [[ "$MODE" == "sync" ]]; then
|
|
success "Structure sync complete."
|
|
elif [[ $TOTAL_MISSING -eq 0 ]]; then
|
|
success "Structure verified: all genomes match the canonical layout."
|
|
else
|
|
error "Structure drift: ${TOTAL_MISSING} missing directory(ies). Fix with: make sync-structure"
|
|
exit 1
|
|
fi
|