mirror of
https://github.com/wiremock/WireMock.Net.git
synced 2026-08-26 05:14:05 +02:00
Squad Test
This commit is contained in:
@@ -0,0 +1,104 @@
|
||||
#!/bin/bash
|
||||
# sync-mesh.sh — Materialize remote squad state locally
|
||||
#
|
||||
# Reads mesh.json, fetches remote squads into local directories.
|
||||
# Run before agent reads. No daemon. No service. ~40 lines.
|
||||
#
|
||||
# Usage: ./sync-mesh.sh [path-to-mesh.json]
|
||||
# ./sync-mesh.sh --init [path-to-mesh.json]
|
||||
# Requires: jq (https://github.com/jqlang/jq), git, curl
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# Handle --init mode
|
||||
if [ "${1:-}" = "--init" ]; then
|
||||
MESH_JSON="${2:-mesh.json}"
|
||||
|
||||
if [ ! -f "$MESH_JSON" ]; then
|
||||
echo "❌ $MESH_JSON not found"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "🚀 Initializing mesh state repository..."
|
||||
squads=$(jq -r '.squads | keys[]' "$MESH_JSON")
|
||||
|
||||
# Create squad directories with placeholder SUMMARY.md
|
||||
for squad in $squads; do
|
||||
if [ ! -d "$squad" ]; then
|
||||
mkdir -p "$squad"
|
||||
echo " ✓ Created $squad/"
|
||||
else
|
||||
echo " • $squad/ exists (skipped)"
|
||||
fi
|
||||
|
||||
if [ ! -f "$squad/SUMMARY.md" ]; then
|
||||
echo -e "# $squad\n\n_No state published yet._" > "$squad/SUMMARY.md"
|
||||
echo " ✓ Created $squad/SUMMARY.md"
|
||||
else
|
||||
echo " • $squad/SUMMARY.md exists (skipped)"
|
||||
fi
|
||||
done
|
||||
|
||||
# Generate root README.md
|
||||
if [ ! -f "README.md" ]; then
|
||||
{
|
||||
echo "# Squad Mesh State Repository"
|
||||
echo ""
|
||||
echo "This repository tracks published state from participating squads."
|
||||
echo ""
|
||||
echo "## Participating Squads"
|
||||
echo ""
|
||||
for squad in $squads; do
|
||||
zone=$(jq -r ".squads.\"$squad\".zone" "$MESH_JSON")
|
||||
echo "- **$squad** (Zone: $zone)"
|
||||
done
|
||||
echo ""
|
||||
echo "Each squad directory contains a \`SUMMARY.md\` with their latest published state."
|
||||
echo "State is synchronized using \`sync-mesh.sh\` or \`sync-mesh.ps1\`."
|
||||
} > README.md
|
||||
echo " ✓ Created README.md"
|
||||
else
|
||||
echo " • README.md exists (skipped)"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "✅ Mesh state repository initialized"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
MESH_JSON="${1:-mesh.json}"
|
||||
|
||||
# Zone 2: Remote-trusted — git clone/pull
|
||||
for squad in $(jq -r '.squads | to_entries[] | select(.value.zone == "remote-trusted") | .key' "$MESH_JSON"); do
|
||||
source=$(jq -r ".squads.\"$squad\".source" "$MESH_JSON")
|
||||
ref=$(jq -r ".squads.\"$squad\".ref // \"main\"" "$MESH_JSON")
|
||||
target=$(jq -r ".squads.\"$squad\".sync_to" "$MESH_JSON")
|
||||
|
||||
if [ -d "$target/.git" ]; then
|
||||
git -C "$target" pull --rebase --quiet 2>/dev/null \
|
||||
|| echo "⚠ $squad: pull failed (using stale)"
|
||||
else
|
||||
mkdir -p "$(dirname "$target")"
|
||||
git clone --quiet --depth 1 --branch "$ref" "$source" "$target" 2>/dev/null \
|
||||
|| echo "⚠ $squad: clone failed (unavailable)"
|
||||
fi
|
||||
done
|
||||
|
||||
# Zone 3: Remote-opaque — fetch published contracts
|
||||
for squad in $(jq -r '.squads | to_entries[] | select(.value.zone == "remote-opaque") | .key' "$MESH_JSON"); do
|
||||
source=$(jq -r ".squads.\"$squad\".source" "$MESH_JSON")
|
||||
target=$(jq -r ".squads.\"$squad\".sync_to" "$MESH_JSON")
|
||||
auth=$(jq -r ".squads.\"$squad\".auth // \"\"" "$MESH_JSON")
|
||||
|
||||
mkdir -p "$target"
|
||||
auth_flag=""
|
||||
if [ "$auth" = "bearer" ]; then
|
||||
token_var="$(echo "${squad}" | tr '[:lower:]-' '[:upper:]_')_TOKEN"
|
||||
[ -n "${!token_var:-}" ] && auth_flag="--header \"Authorization: Bearer ${!token_var}\""
|
||||
fi
|
||||
|
||||
eval curl --silent --fail $auth_flag "$source" -o "$target/SUMMARY.md" 2>/dev/null \
|
||||
|| echo "# ${squad} — unavailable ($(date))" > "$target/SUMMARY.md"
|
||||
done
|
||||
|
||||
echo "✓ Mesh sync complete"
|
||||
Reference in New Issue
Block a user