#!/usr/bin/env bash
set -u
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
cd "${REPO_ROOT}"
PASS=0
FAIL=0
FAIL_LIST=()
shopt -s nullglob
yaml_files=(src/samples/cpp/*/*.ibmw.yaml)
shopt -u nullglob
if [[ ${#yaml_files[@]} -eq 0 ]]; then
echo "ERROR: no .ibmw.yaml found under src/samples/cpp/*/" >&2
exit 2
fi
for y in "${yaml_files[@]}"; do
sdir=$(dirname "$y")
name=$(python3 -c "import sys, yaml; print(yaml.safe_load(open(sys.argv[1]))['project']['name'])" "$y")
if [[ "$name" == *_gen ]]; then
out="$sdir/$name"
else
out="$sdir/${name}_gen"
fi
log=/tmp/regen_$(basename "$y" .ibmw.yaml).log
if python3 src/tools/ibmw_gen/ibmw_gen.py "$y" -o "$out" --force > "$log" 2>&1; then
PASS=$((PASS+1))
n_new=$(grep -oE '[0-9]+ new' "$log" | head -1)
n_ov=$(grep -oE '[0-9]+ overwrite' "$log" | head -1)
echo "PASS: $(basename "$y") ($n_new, $n_ov) -> $out"
else
FAIL=$((FAIL+1))
FAIL_LIST+=("$y")
echo "FAIL: $y (log: $log)"
fi
done
echo
echo "===== SUMMARY ====="
echo "PASS: $PASS"
echo "FAIL: $FAIL"
if [[ $FAIL -gt 0 ]]; then
for f in "${FAIL_LIST[@]}"; do
echo " - $f"
done
exit 1
fi
exit 0