#!/usr/bin/env bash set -Eeuo pipefail JOBDIR="$1" LAUNCHER="$2" TASK="$3" PROMPT="$4" RESOLUTION="$5" FRAMES="$6" STEPS="$7" SEED="$8" IMAGE="${9:-}" status(){ python3 - "$JOBDIR/status.json" "$1" "$2" "${3:-}" <<'PY' import json, sys, time from pathlib import Path p=Path(sys.argv[1]) data={"status":sys.argv[2],"message":sys.argv[3],"updated_at":time.time()} if len(sys.argv)>4 and sys.argv[4]: data["video"]=sys.argv[4] p.write_text(json.dumps(data,ensure_ascii=False,indent=2),encoding="utf-8") PY } status running "generation started" OUT="$JOBDIR/worker.log" set +e if [[ "$TASK" == "t2v" ]]; then "$LAUNCHER" t2v "$PROMPT" "$RESOLUTION" "$FRAMES" "$STEPS" "$SEED" "" "" >"$OUT" 2>&1 else "$LAUNCHER" i2v "$PROMPT" "$RESOLUTION" "$FRAMES" "$STEPS" "$SEED" "$IMAGE" "" >"$OUT" 2>&1 fi RC=$? set -e if [[ "$RC" -ne 0 ]]; then status failed "launcher rc=$RC" exit "$RC" fi VIDEO="$(sed -n 's/^VIDEO=//p' "$OUT" | tail -n1)" [[ -f "$VIDEO" ]] || { status failed "launcher passed but video missing"; exit 90; } status completed "generation completed" "$VIDEO"