#!/usr/bin/env bash 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_aloha_${TIMESTAMP}.log" PIDFILE="$LOGDIR/preprocess_aloha_${TIMESTAMP}.pid" SESSION_FILE="$LOGDIR/preprocess_aloha_${TIMESTAMP}.session" LATEST_LOG_LINK="$LOGDIR/preprocess_aloha_latest.log" LATEST_PID_LINK="$LOGDIR/preprocess_aloha_latest.pid" LATEST_SESSION_LINK="$LOGDIR/preprocess_aloha_latest.session" SESSION_NAME="pi05prep_aloha_${TIMESTAMP}" RUN_SCRIPT_PATH="${RUN_SCRIPT_PATH:-$SCRIPT_DIR/run_preprocess_aloha.sh}" WAIT_FOR_SESSION="${WAIT_FOR_SESSION:-}" WAIT_POLL_SECONDS="${WAIT_POLL_SECONDS:-60}" 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}' && if [[ -n '${WAIT_FOR_SESSION}' ]]; then printf '%s Waiting for session %s before starting ALOHA pipeline\n' \"\$(date -u +%Y-%m-%dT%H:%M:%SZ)\" '${WAIT_FOR_SESSION}' >> '$LOGFILE'; while tmux has-session -t '${WAIT_FOR_SESSION}' 2>/dev/null; do sleep '${WAIT_POLL_SECONDS}'; done; fi && 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_LOG_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"