#!/usr/bin/env bash
set -e

if [ ! -f "pyproject.toml" ] || [ ! -d "elevator_traffic_analysis" ]; then
  echo "Error: This script must be run from the elevator-traffic-analysis directory"
  echo "Current directory: $(pwd)"
  exit 1
fi

if ! command -v docker &> /dev/null; then
  echo "Please install Docker from https://www.docker.com/get-started"
  exit 1
fi

if ! docker ps &> /dev/null; then
  if sudo docker ps &> /dev/null 2>&1; then
    echo "Error: Your Docker setup requires sudo privileges to run."
    echo "Please:"
    echo "1. Add your user to the docker group (https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user)"
    echo "or"
    echo "2. Run this script with sudo"
    echo "  sudo ./make.sh [command]"
    exit 1
  else
    echo "Error: Docker is not running"
    echo "Please start Docker and try again"
    exit 1
  fi
fi

APP_IMAGE_NAME="elevator-traffic-analysis"
TEST_IMAGE_NAME="elevator-traffic-analysis-test"
LINT_IMAGE_NAME="elevator-traffic-analysis-lint"

usage() {
  echo "Build script usage: $0 [build|test|lint|help|args...]"
  echo "  (default) - Build and run the app (pass args directly)"
  echo "  build     - Build the app Docker image only"
  echo "  test      - Build and run tests"
  echo "  lint      - Build and run linter"
  echo "  help      - Show this help message"
  exit 1
}

if [ "$1" = "help" ]; then
  usage

elif [ "$1" = "build" ]; then
  echo "Building app Docker image..."
  docker build -t $APP_IMAGE_NAME .

elif [ "$1" = "test" ]; then
  echo "Building test Docker image..."
  echo "Note that tests will only run for python3.12!"
  docker build -f Dockerfile.test -t $TEST_IMAGE_NAME .
  echo "Running tests in container..."
  docker run --rm $TEST_IMAGE_NAME

elif [ "$1" = "lint" ]; then
  echo "Building linter Docker image..."
  docker build -f Dockerfile.pylint -t $LINT_IMAGE_NAME .
  echo "Running linter in container..."
  docker run --rm $LINT_IMAGE_NAME

else
  # Default
  echo "Building app Docker image..."
  docker build -t elevator-traffic-analysis .
  echo "Running app in container..."
  docker run --rm \
    -v "$(pwd)/scenarios_plots:/app/scenarios_plots" \
    -v "$(pwd)/scenarios_out:/app/scenarios_out" \
    elevator-traffic-analysis "$@"
fi
