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

# Build all project images in dependency order:
#   huskies  →  huskies-project-base  →  huskies-project-<stack> (one per stack fragment)
#
# Run this after `script/docker_rebuild` or whenever you add a new stack.
# Safe to re-run: each step re-tags the image with the latest layers.

cd "$(dirname "$0")/.."

if [[ -f .env ]]; then
    set -a
    source .env
    set +a
fi

CACHE_FLAG=""
if [[ "${1:-}" == "--no-cache" ]]; then
    CACHE_FLAG="--no-cache"
fi

echo "==> Building huskies"
docker build $CACHE_FLAG -t huskies -f docker/Dockerfile .

echo "==> Building huskies-project-base"
docker build $CACHE_FLAG -t huskies-project-base -f docker/Dockerfile.base .

for fragment in docker/stacks/*/Dockerfile.fragment; do
    stack=$(basename "$(dirname "$fragment")")
    image="huskies-project-${stack}"
    echo "==> Building ${image}"
    (printf 'FROM huskies-project-base\n'; cat "$fragment") \
        | docker build $CACHE_FLAG -t "$image" -
done

echo "All project images built."
