#!/usr/bin/env bash # Render thesis-defense Manim clips. Run from anywhere (script cd's to its dir). # # ./render_defense # main reel: final-full, medium quality # ./render_defense --quality qh # high quality for recording # ./render_defense core # shorter committee cut (final-core) # ./render_defense all # everything: main + poster + both appendices # ./render_defense appendix # behavior + COI appendix only # ./render_defense poster # ./render_defense list # ./render_defense --scene DefenseOpening --scene CardMarketAnalogyScene # # Env: MANIM_PYTHON=/path/to/python overrides auto-detected venv. set -euo pipefail ROOT="$(cd "$(dirname "$0")" && pwd)" cd "$ROOT" if [[ -n "${MANIM_PYTHON:-}" ]]; then PY="$MANIM_PYTHON" elif [[ -x "$ROOT/../.venv/bin/python" ]]; then PY="$ROOT/../.venv/bin/python" else PY="$(command -v python3 2>/dev/null || command -v python)" fi if [[ ! -x "$PY" ]] && ! command -v "$PY" &>/dev/null; then echo "No Python found. Set MANIM_PYTHON or create paper/defense/.venv" >&2 exit 1 fi export PYTHONPATH="$ROOT" run() { "$PY" "$ROOT/render.py" "$@" } CMD=full case "${1-}" in full|core|all|appendix|poster|list|help|-h|--help) CMD="$1" shift ;; esac case "$CMD" in help|-h|--help) cat <<'EOF' Render thesis-defense Manim clips (cd to paper/defense/manim is automatic). ./render_defense main reel (final-full), default quality qm ./render_defense --quality qh same, high quality for recording ./render_defense core shorter cut (final-core) ./render_defense all main + poster + both appendices ./render_defense appendix behavior-appendix + coi-appendix ./render_defense poster ./render_defense list scene names and source files ./render_defense --scene Name [--scene Name2 ...] Env MANIM_PYTHON overrides Python (default: ../.venv/bin/python next to this dir). EOF exit 0 ;; list) run --list "$@" exit 0 ;; full) run --group final-full "$@" ;; core) run --group final-core "$@" ;; all) run --all "$@" ;; appendix) run --group behavior-appendix "$@" run --group coi-appendix "$@" ;; poster) run --group poster "$@" ;; *) echo "Unknown command: $CMD" >&2 exit 1 ;; esac