#!/usr/bin/env bash
set -euo pipefail

REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
STACK_DIR="${REPO_ROOT}/infra/artifact-cache"
DEBIAN_IP="${LAB_DEBIAN_LAN_IP:-192.168.100.73}"
APT_PORT="${APT_CACHE_PORT:-3142}"
REGISTRY_PORT="${REGISTRY_CACHE_PORT:-5001}"

case "${1:-status}" in
    status)
        echo "Artifact cache stack: ${STACK_DIR}"
        if command -v docker >/dev/null 2>&1 && [ -d "$STACK_DIR" ]; then
            (cd "$STACK_DIR" && docker compose ps) || true
        else
            echo "docker compose unavailable; cannot inspect local cache stack"
        fi
        ;;
    up)
        cd "$STACK_DIR"
        docker compose up -d
        ;;
    down)
        cd "$STACK_DIR"
        docker compose down
        ;;
    instructions)
        cat <<EOF
APT proxy:
  echo 'Acquire::http::Proxy "http://${DEBIAN_IP}:${APT_PORT}";' | sudo tee /etc/apt/apt.conf.d/01homelab-cache

Docker Hub pull-through cache:
  docker pull ${DEBIAN_IP}:${REGISTRY_PORT}/library/debian:bookworm

Stack:
  cd ${STACK_DIR}
  docker compose up -d
EOF
        ;;
    *)
        echo "Usage: ./jeannie artifact-cache {status|up|down|instructions}" >&2
        exit 1
        ;;
esac
