#!/usr/bin/env bash
set -Eeuo pipefail
DIR="${1:?bundle directory required}"
[[ -d "$DIR" && -f "$DIR/manifest.sha256" && -f "$DIR/install.sh" ]] || { echo RESULT=STOP_ROUTER_BUNDLE_GATE_LAYOUT; exit 2; }
(cd "$DIR" && sha256sum -c manifest.sha256) >/dev/null
python3 -m json.tool "$DIR/release-info.json" >/dev/null
while IFS= read -r -d '' f; do
  first="$(head -n1 "$f" 2>/dev/null || true)"
  case "$first" in '#!/usr/bin/env bash'|'#!/bin/bash') bash -n "$f"; chmod 700 "$f";; '#!/bin/sh') sh -n "$f"; chmod 700 "$f";; '#!/usr/bin/env python3'|'#!/usr/bin/python3') python3 -m py_compile "$f"; chmod 600 "$f";; esac
done < <(find "$DIR" -type f -print0)
rm -rf "$DIR"/**/__pycache__ 2>/dev/null || true
LIST="$DIR/tests/mandatory.list"; [[ -f "$LIST" ]] || { echo RESULT=STOP_ROUTER_BUNDLE_GATE_MANDATORY_LIST; exit 2; }
count=0
while IFS= read -r rel; do [[ -n "$rel" && "${rel#\#}" == "$rel" ]] || continue; f="$DIR/tests/$rel"; [[ -f "$f" ]] || { echo RESULT=STOP_ROUTER_BUNDLE_GATE_FIXTURE_MISSING; echo "FIXTURE=$rel"; exit 2; }; bash "$f"; count=$((count+1)); done < "$LIST"
echo RESULT=PASS_ROUTER_BUNDLE_GATE; echo "MANDATORY_FIXTURE_COUNT=$count"; echo DIAGNOSTIC_FIXTURES_EXECUTED=false
