#!/usr/bin/env bash set -euo pipefail # DEVOPS-CLI-43-003: parity diff for CLI golden outputs EXPECTED_DIR=${EXPECTED_DIR:-"tests/goldens"} ACTUAL_DIR=${ACTUAL_DIR:-"out/cli-goldens"} CLI=${CLI:-"dotnet run --project src/Cli/StellaOps.Cli/StellaOps.Cli.csproj --no-build --"} mkdir -p "$ACTUAL_DIR" run_case() { local name=$1 local args=$2 local outfile="${ACTUAL_DIR}/${name}.txt" echo "[parity] running ${name}: ${args}" $CLI $args > "$outfile" } run_case "help" "--help" run_case "scan-help" "scan --help" diffs=0 for expected in $(find "$EXPECTED_DIR" -name '*.txt'); do rel=${expected#$EXPECTED_DIR/} actual="${ACTUAL_DIR}/${rel}" if ! diff -u "$expected" "$actual" > "${ACTUAL_DIR}/${rel}.diff" 2>/dev/null; then echo "[parity] diff for $rel" diffs=$((diffs+1)) else rm -f "${ACTUAL_DIR}/${rel}.diff" fi done echo "[parity] total diffs: $diffs" echo "$diffs" > "${ACTUAL_DIR}/summary.txt"