#!/bin/bash
set -euo pipefail

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"

usage() {
    cat <<EOF
Usage: $(basename "$0") [--help]

Start Azaion AI Training services via Docker Compose.

Environment:
  AZAION_ROOT_DIR     Root data directory (default: /azaion)
EOF
    exit 0
}

[[ "${1:-}" == "--help" ]] && usage

if [[ -f "$PROJECT_ROOT/.env" ]]; then
    set -a
    source "$PROJECT_ROOT/.env"
    set +a
fi

AZAION_ROOT_DIR="${AZAION_ROOT_DIR:-/azaion}"

dirs=(
    "$AZAION_ROOT_DIR"
    "$AZAION_ROOT_DIR/${AZAION_DATA_DIR:-data}/images"
    "$AZAION_ROOT_DIR/${AZAION_DATA_DIR:-data}/labels"
    "$AZAION_ROOT_DIR/${AZAION_DATA_SEED_DIR:-data-seed}/images"
    "$AZAION_ROOT_DIR/${AZAION_DATA_SEED_DIR:-data-seed}/labels"
    "$AZAION_ROOT_DIR/${AZAION_DATA_DELETED_DIR:-data_deleted}/images"
    "$AZAION_ROOT_DIR/${AZAION_DATA_DELETED_DIR:-data_deleted}/labels"
    "$AZAION_ROOT_DIR/datasets"
    "$AZAION_ROOT_DIR/models"
)

echo "Ensuring directory structure..."
for d in "${dirs[@]}"; do
    mkdir -p "$d"
done

echo "Starting services..."
docker compose -f "$PROJECT_ROOT/docker-compose.yml" --env-file "$PROJECT_ROOT/.env" up -d

echo "Waiting for containers to start..."
sleep 5

docker compose -f "$PROJECT_ROOT/docker-compose.yml" ps

echo "Services started."
