#!/usr/bin/env bash # Pre-submission validation script for TriageFlow # Usage: ./scripts/validate-submission.sh set -e BOLD="\033[1m" GREEN="\033[32m" RED="\033[31m" NC="\033[0m" SPACE_URL="${1:-}" REPO_DIR="$(dirname "$(dirname "$(readlink -f "$0")")")" pass() { printf " ${GREEN}✅ PASS${NC}: %s\n" "$1"; } fail() { printf " ${RED}❌ FAIL${NC}: %s\n" "$1"; } echo "" echo "${BOLD}========================================${NC}" echo "${BOLD} TriageFlow Pre-Submission Validator${NC}" echo "${BOLD}========================================${NC}" echo "" # Step 1: Ping HF Space if [ -n "$SPACE_URL" ]; then echo "${BOLD}Step 1/3: Pinging HF Space${NC} ($SPACE_URL/reset) ..." HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" -X POST \ -H "Content-Type: application/json" -d '{}' \ "$SPACE_URL/reset" --max-time 30 2>/dev/null || printf "000") if [ "$HTTP_CODE" = "200" ]; then pass "HF Space is live and responds to /reset" else fail "HF Space /reset returned HTTP $HTTP_CODE (expected 200)" exit 1 fi else echo "Step 1/3: Skipped (no Space URL provided)" fi # Step 2: Docker build echo "" echo "${BOLD}Step 2/3: Running docker build${NC} ..." if command -v docker &>/dev/null; then if docker build -t triage-flow-test "$REPO_DIR" > /dev/null 2>&1; then pass "Docker build succeeded" else fail "Docker build failed" exit 1 fi else echo " Skipped (docker not found)" fi # Step 3: openenv validate echo "" echo "${BOLD}Step 3/3: Running openenv validate${NC} ..." if command -v openenv &>/dev/null; then if (cd "$REPO_DIR" && openenv validate 2>&1); then pass "openenv validate passed" else fail "openenv validate failed" exit 1 fi else echo " Skipped (openenv not found)" fi echo "" echo "${BOLD}========================================${NC}" echo "${GREEN}${BOLD} All checks passed!${NC}" echo "${GREEN}${BOLD} Your submission is ready.${NC}" echo "${BOLD}========================================${NC}" echo "" exit 0