#!/bin/bash
# Run data monitoring analysis for all dataset versions from v8 to v0
# Usage: ./run_all_versions.sh

# Set strict error handling
set -e

# Configuration
PYTHON=/home/vibert/anaconda3/envs/suno_3/bin/python
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
LOG_DIR=/home/vibert/logs/$(date +%Y-%m-%d)
mkdir -p "$LOG_DIR"

# See config.yaml for how each version is defined
VERSIONS=("v9" "v8" "v7" "v6" "v5" "v4" "v3" "v2" "v1" "v0")

# Log file
LOG_FILE="$LOG_DIR/data_monitor_all_versions_$(date +%Y%m%d_%H%M%S).log"

echo "Starting data monitoring analysis for all versions" | tee -a "$LOG_FILE"
echo "Log file: $LOG_FILE" | tee -a "$LOG_FILE"
echo "Start time: $(date)" | tee -a "$LOG_FILE"
echo "" | tee -a "$LOG_FILE"

# Track start time
START_TIME=$(date +%s)

# Run analysis for each version
for VERSION in "${VERSIONS[@]}"; do
    echo "========================================" | tee -a "$LOG_FILE"
    echo "Analyzing $VERSION" | tee -a "$LOG_FILE"
    echo "Time: $(date)" | tee -a "$LOG_FILE"
    echo "========================================" | tee -a "$LOG_FILE"

    VERSION_START=$(date +%s)

    # Run the analysis (skip v7 if train file is empty)
    if [ "$VERSION" == "v7" ]; then
        echo "WARNING: v7 train file is empty, skipping..." | tee -a "$LOG_FILE"
        continue
    fi

    # Run analysis and capture output
    if $PYTHON "$SCRIPT_DIR/run_pipeline.py" --dataset "$VERSION" --full 2>&1 | tee -a "$LOG_FILE"; then
        VERSION_END=$(date +%s)
        VERSION_DURATION=$((VERSION_END - VERSION_START))
        echo "✓ $VERSION completed successfully in ${VERSION_DURATION}s" | tee -a "$LOG_FILE"
    else
        VERSION_END=$(date +%s)
        VERSION_DURATION=$((VERSION_END - VERSION_START))
        echo "✗ $VERSION failed after ${VERSION_DURATION}s" | tee -a "$LOG_FILE"
        # Continue to next version even if this one fails
        continue
    fi

    echo "" | tee -a "$LOG_FILE"
done

# Calculate total time
END_TIME=$(date +%s)
TOTAL_DURATION=$((END_TIME - START_TIME))
HOURS=$((TOTAL_DURATION / 3600))
MINUTES=$(((TOTAL_DURATION % 3600) / 60))
SECONDS=$((TOTAL_DURATION % 60))

echo "========================================" | tee -a "$LOG_FILE"
echo "All versions analysis complete!" | tee -a "$LOG_FILE"
echo "End time: $(date)" | tee -a "$LOG_FILE"
echo "Total duration: ${HOURS}h ${MINUTES}m ${SECONDS}s" | tee -a "$LOG_FILE"
echo "========================================" | tee -a "$LOG_FILE"