| set -euo pipefail | |
| SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" | |
| OPENPI_ROOT="${OPENPI_ROOT:-$(cd -- "$SCRIPT_DIR/.." && pwd)}" | |
| ROOT="${ROOT:-$HOME/pi05prep-work}" | |
| LOGDIR="${LOGDIR:-$ROOT/logs}" | |
| TIMESTAMP="$(date -u +%Y%m%dT%H%M%SZ)" | |
| LOGFILE="$LOGDIR/preprocess_${TIMESTAMP}.log" | |
| PIDFILE="$LOGDIR/preprocess_${TIMESTAMP}.pid" | |
| SESSION_FILE="$LOGDIR/preprocess_${TIMESTAMP}.session" | |
| LATEST_LINK="$LOGDIR/preprocess_latest.log" | |
| LATEST_PID_LINK="$LOGDIR/preprocess_latest.pid" | |
| LATEST_SESSION_LINK="$LOGDIR/preprocess_latest.session" | |
| SESSION_NAME="pi05prep_${TIMESTAMP}" | |
| RUN_SCRIPT_PATH="${RUN_SCRIPT_PATH:-$SCRIPT_DIR/run_preprocess_twin.sh}" | |
| mkdir -p "$LOGDIR" | |
| tmux new-session -d -s "$SESSION_NAME" "cd '$ROOT' && unset LEROBOT_HOME && export SKIP_PREPARE=1 && export OPENPI_ROOT='${OPENPI_ROOT}' && export HF_HOME='${HF_HOME:-$ROOT/hf-home}' && export HF_HUB_CACHE='${HF_HUB_CACHE:-${HF_HOME:-$ROOT/hf-home}/hub}' && export HF_DATASETS_CACHE='${HF_DATASETS_CACHE:-${HF_HOME:-$ROOT/hf-home}/datasets}' && export HF_LEROBOT_HOME='${HF_LEROBOT_HOME:-${HF_HOME:-$ROOT/hf-home}/lerobot}' && bash '$RUN_SCRIPT_PATH' >> '$LOGFILE' 2>&1" | |
| PID="$(tmux list-panes -t "$SESSION_NAME" -F '#{pane_pid}' | head -n 1)" | |
| echo "$PID" >"$PIDFILE" | |
| echo "$SESSION_NAME" >"$SESSION_FILE" | |
| ln -sfn "$LOGFILE" "$LATEST_LINK" | |
| ln -sfn "$PIDFILE" "$LATEST_PID_LINK" | |
| ln -sfn "$SESSION_FILE" "$LATEST_SESSION_LINK" | |
| printf 'session=%s\npid=%s\nlog=%s\npidfile=%s\nsession_file=%s\n' "$SESSION_NAME" "$PID" "$LOGFILE" "$PIDFILE" "$SESSION_FILE" | |