#!/usr/bin/env bash

set -euo pipefail

tmpdir="$(mktemp -d)"

echo -e "\n========= Running preflights from e2e spec and checking results ========="
./bin/preflight --debug --interactive=false --format=json examples/preflight/e2e.yaml > "$tmpdir/result.json"
if [ $? -ne 0 ]; then
    echo "preflight command failed"
    exit $EXIT_STATUS
fi

cat "$tmpdir/result.json"

EXIT_STATUS=0
if grep -q "was not collected" "$tmpdir/result.json"; then
echo "Some files were not collected"
EXIT_STATUS=1
fi

if (( `jq '.pass | length' "$tmpdir/result.json"` < 1 )); then
echo "No passing preflights found"
EXIT_STATUS=1
fi

if (( `jq '.warn | length' "$tmpdir/result.json"` > 0 )); then
echo "Warnings found"
EXIT_STATUS=1
fi

if (( `jq '.fail | length' "$tmpdir/result.json"` > 0 )); then
echo "Failed preflights found"
EXIT_STATUS=1
fi

echo -e "\n========= Running preflights from stdin using e2e spec ========="
cat examples/preflight/e2e.yaml | ./bin/preflight --debug --interactive=false --format=json - > "$tmpdir/result.json"
EXIT_STATUS=$?
if [ $EXIT_STATUS -ne 0 ]; then
    echo "preflight command failed"
    exit $EXIT_STATUS
fi

rm -rf "$tmpdir"

exit $EXIT_STATUS
