CoolFace
Apppublic

AdamK29/Meta-OpenENV-Hackathon

sourceHugging Faceupdated 6mo agoView on Hugging Face
0likes
validate-submission.sh133 linesDownload Raw Back to scripts
1#!/usr/bin/env bash2#3# validate-submission.sh — OpenEnv Submission Validator (FINAL FIXED)4#5 6set -uo pipefail7 8DOCKER_BUILD_TIMEOUT=6009 10if [ -t 1 ]; then11  RED='\033[0;31m'12  GREEN='\033[0;32m'13  YELLOW='\033[1;33m'14  BOLD='\033[1m'15  NC='\033[0m'16else17  RED='' GREEN='' YELLOW='' BOLD='' NC=''18fi19 20# ---------------- TIMEOUT HANDLER ----------------21 22run_with_timeout() {23  local secs="$1"; shift24  if command -v timeout &>/dev/null; then25    timeout "$secs" "$@"26  elif command -v gtimeout &>/dev/null; then27    gtimeout "$secs" "$@"28  else29    "$@" &30    local pid=$!31    ( sleep "$secs" && kill "$pid" 2>/dev/null ) &32    local watcher=$!33    wait "$pid" 2>/dev/null34    local rc=$?35    kill "$watcher" 2>/dev/null36    wait "$watcher" 2>/dev/null37    return $rc38  fi39}40 41# ---------------- INPUT ----------------42 43PING_URL="${1:-}"44REPO_DIR="${2:-.}"45 46if [ -z "$PING_URL" ]; then47  echo "Usage: $0 <ping_url> [repo_dir]"48  exit 149fi50 51REPO_DIR="$(cd "$REPO_DIR" && pwd)"52PING_URL="${PING_URL%/}"53 54# ---------------- AUTO FIX HF URL ----------------55 56if [[ "$PING_URL" == *"huggingface.co/spaces"* ]]; then57  USER_NAME=$(echo "$PING_URL" | awk -F'/' '{print $4}')58  SPACE_NAME=$(echo "$PING_URL" | awk -F'/' '{print $5}')59 60  # lowercase conversion61  USER_NAME=$(echo "$USER_NAME" | tr '[:upper:]' '[:lower:]')62  SPACE_NAME=$(echo "$SPACE_NAME" | tr '[:upper:]' '[:lower:]')63 64  PING_URL="https://${USER_NAME}-${SPACE_NAME}.hf.space"65fi66 67# ---------------- LOGGING ----------------68 69PASS=070 71log()  { echo "[$(date -u +%H:%M:%S)] $*"; }72pass() { log "PASSED -- $1"; PASS=$((PASS + 1)); }73fail() { log "FAILED -- $1"; }74 75echo "========================================"76echo "  OpenEnv Submission Validator"77echo "========================================"78log "Repo:     $REPO_DIR"79log "Ping URL: $PING_URL"80 81# ---------------- STEP 1 ----------------82 83log "Step 1/3: Checking HF Space..."84 85HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" -X POST \86  "$PING_URL/reset" \87  -H "Content-Type: application/json" \88  --data-raw '{}')89 90if [ "$HTTP_CODE" = "200" ]; then91  pass "HF Space responds correctly"92else93  fail "HF Space failed (HTTP $HTTP_CODE)"94  exit 195fi96 97# ---------------- STEP 2 ----------------98 99log "Step 2/3: Building Docker..."100 101if [ ! -f "$REPO_DIR/Dockerfile" ]; then102  fail "No Dockerfile found"103  exit 1104fi105 106if run_with_timeout "$DOCKER_BUILD_TIMEOUT" docker build -t openenv-test "$REPO_DIR" > /dev/null 2>&1; then107  pass "Docker build succeeded"108else109  fail "Docker build failed"110  exit 1111fi112 113# ---------------- STEP 3 ----------------114 115log "Step 3/3: Running openenv validate..."116 117if ! command -v openenv &>/dev/null; then118  echo "Install openenv-core: pip install openenv-core"119  exit 1120fi121 122if cd "$REPO_DIR" && openenv validate; then123  pass "OpenEnv validation passed"124else125  fail "OpenEnv validation failed"126  exit 1127fi128 129# ---------------- DONE ----------------130 131echo "========================================"132echo "  ALL CHECKS PASSED!"133echo "========================================"