← back to Builds Nightly

backfill.sh

30 lines

#!/usr/bin/env bash
# Backfill nightly build films from TODAY backwards to builds.aa's creation (2026-05-27).
# Skips days already built (out/<day>.mp4) and days with zero wins. Shows running $ cost.
# Usage: bash backfill.sh [START_YYYY-MM-DD] [END_YYYY-MM-DD]   (defaults: today -> 2026-05-27)
set -uo pipefail
export PATH="/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:$PATH"
SELF="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"

START="${1:-$(date +%Y-%m-%d)}"
END="${2:-2026-05-27}"       # builds.aa first commit
log() { printf '[%s] %s\n' "$(date +%H:%M:%S)" "$*"; }

# iterate day by day, newest first
cur="$START"; built=0; skipped=0; empty=0; cost=0
while :; do
  if [[ -s "$SELF/out/$cur.mp4" ]]; then
    log "$cur  already built — skip"; skipped=$((skipped+1))
  else
    res="$(bash "$SELF/build-day.sh" "$cur" 2>>"$SELF/backfill.log")" || res="ERR:$cur"
    case "$res" in
      OK:*)   built=$((built+1)); cost=$(python3 -c "print(round($cost+0.11,2))"); log "$cur  ✓ built ($res)  ~\$$cost total" ;;
      SKIP:*) empty=$((empty+1));  log "$cur  · no wins" ;;
      *)      log "$cur  ✗ $res (see backfill.log)" ;;
    esac
  fi
  [[ "$cur" == "$END" ]] && break
  cur="$(date -j -v-1d -f %Y-%m-%d "$cur" +%Y-%m-%d 2>/dev/null)" || break
done
log "BACKFILL DONE — built:$built skipped:$skipped empty:$empty  ~\$$cost ElevenLabs"