#!/usr/bin/env bash
# Bioinformatics Workshop — one-shot environment setup (full real-tools tier).
# Run once before the workshop, from anywhere:
#     bash environment/setup.sh
#
# Creates conda env 'bioworkshop' with every CLI tool, the Python stack, AND the
# R/Bioconductor packages (all from bioconda binaries — no slow source compile).
# If you only need to RUN THE NOTEBOOKS (not the real pipeline scripts), the
# lighter pip path in INSTALL.md is enough.

set -euo pipefail

CONDA_ENV="bioworkshop"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"

echo "=== Bioinformatics Workshop Setup ==="
echo "Creating conda env '${CONDA_ENV}' with all tools + R/Bioconductor packages."
echo ""

# Prefer mamba if present (much faster solve); fall back to conda.
if command -v mamba &>/dev/null; then
  CONDA=mamba
elif command -v conda &>/dev/null; then
  CONDA=conda
else
  echo "ERROR: neither mamba nor conda found. Install Miniforge first:"
  echo "  https://github.com/conda-forge/miniforge#install"
  exit 1
fi

# Create (or update) the environment. Note: `conda env create` does NOT take -y.
echo "[1/2] Creating conda environment with ${CONDA} (this can take several minutes)..."
if ${CONDA} env list | grep -qE "^\s*${CONDA_ENV}\s"; then
  echo "  env '${CONDA_ENV}' exists — updating to match conda_env.yml"
  ${CONDA} env update -n "${CONDA_ENV}" -f "${SCRIPT_DIR}/conda_env.yml" --prune
else
  ${CONDA} env create -f "${SCRIPT_DIR}/conda_env.yml"
fi

# Verify the toolchain is actually on PATH inside the env.
echo "[2/2] Verifying tools..."
# shellcheck disable=SC1091
source "$(conda info --base)/etc/profile.d/conda.sh"
conda activate "${CONDA_ENV}"
bash "${SCRIPT_DIR}/verify_env.sh" || {
  echo ""
  echo "Some tools/packages are missing. If a bioconductor-* binary was unavailable"
  echo "for your platform (e.g. Apple Silicon), run the BiocManager fallback:"
  echo "  Rscript ${SCRIPT_DIR}/install_r_fallback.R"
  exit 1
}

echo ""
echo "Setup complete. Activate with:  conda activate ${CONDA_ENV}"
echo "Launch the notebooks with:      jupyter lab        (from the materials root)"
echo "Then open day1/module1_linux_cli/01_linux_cli.ipynb"
