#!/usr/bin/env bash # Create job JSON files under jobs/ based on *_API_* env variables. # Dry-run: by default create job files with "dry_run": "1" set -euo pipefail IFS=$'\n\t' BASE="$(cd "$(dirname "$0")/.." && pwd)" ENV_MASTER="$BASE/env/master.env" JOBS_DIR="$BASE/jobs" mkdir -p "$JOBS_DIR" # Load sanitized env into a subshell only (safe) # We use eval of the sanitizer directly rather than sourcing raw files SANITIZER="$BASE/scripts/sanitize_env.sh" if [ -x "$SANITIZER" ]; then # This will set variables in this shell (safe because sanitizer filters) eval "$("$SANITIZER")" else echo "ERROR: sanitizer missing ($SANITIZER)" >&2 exit 1 fi # gather *_API_* variables and create one job per API counter=0 for var in $(compgen -v | grep -E '_API_[0-9]+$' || true); do url="${!var}" [ -n "$url" ] || continue counter=$((counter+1)) jobfile="$JOBS_DIR/job_$(printf "%04d" "$counter").json" cat > "$jobfile" </dev/null || date)" } JSON done echo "Generated $counter job(s) into $JOBS_DIR"