#!/usr/bin/env bash
# Build Roc OCI images locally.
#
# Usage:
#   ./scripts/build.sh [roc-version]
#
# Default ROC_VERSION is "0.0.0-alpha1".
# Valid values: 0.0.0-alpha1, 0.0.0-alpha2-rolling, alpha3-rolling, alpha4-rolling
# Uses podman by default. Override with: BUILD_CMD=docker ./scripts/build.sh
#
# Builds all three targets: base, dev, ci
# Tags each with the version and ":latest".
#
# Registry defaults to "git.roo.lol/jbrechtel".
# Override with: REGISTRY=localhost:5000 ./scripts/build.sh

set -euo pipefail

ROC_VERSION="${1:-0.0.0-alpha1}"
REGISTRY="${REGISTRY:-git.roo.lol/jbrechtel}"
BUILD_CMD="${BUILD_CMD:-podman}"
BUILD_FLAGS="-f Containerfile"
HERE="$(cd "$(dirname "$0")/.." && pwd)"

cd "$HERE"

echo "=== Building Roc OCI images (version=${ROC_VERSION}, registry=${REGISTRY}) ==="
echo ""

build_target() {
    local target="$1"
    local image_name="$2"

    echo "--- Building ${target} (${REGISTRY}/${image_name}:${ROC_VERSION}) ---"
    $BUILD_CMD build \
        $BUILD_FLAGS \
        --target "$target" \
        --build-arg "ROC_VERSION=${ROC_VERSION}" \
        -t "${REGISTRY}/${image_name}:${ROC_VERSION}" \
        -t "${REGISTRY}/${image_name}:latest" \
        .
    echo ""
}

build_target base  roc-tools-base
build_target dev   roc-tools-dev
build_target ci    roc-tools-ci

echo "=== All images built successfully ==="
echo ""
echo "Images:"
$BUILD_CMD images --format "table {{.Repository}}:{{.Tag}}\t{{.Size}}" \
    | grep "${REGISTRY}/roc-tools"
