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

# 帮助信息
show_help() {
    cat << EOF
ARGUS Unified Build System - Image Build Tool

Usage: $0 [OPTIONS]

Options:
  --intranet    Use intranet mirror for Ubuntu 22.04 packages
  -h, --help    Show this help message

Examples:
  $0                # Build with default sources
  $0 --intranet     # Build with intranet mirror

EOF
}

# 解析命令行参数
use_intranet=false

while [[ $# -gt 0 ]]; do
    case $1 in
        --intranet)
            use_intranet=true
            shift
            ;;
        -h|--help)
            show_help
            exit 0
            ;;
        *)
            echo "Unknown option: $1"
            show_help
            exit 1
            ;;
    esac
done

# 获取项目根目录
root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
cd "$root"

echo "======================================="
echo "ARGUS Unified Build System"
echo "======================================="

if [[ "$use_intranet" == true ]]; then
    echo "🌐 Mode: Intranet (Using internal mirror: 10.68.64.1)"
    build_args="--build-arg USE_INTRANET=true"
else
    echo "🌐 Mode: Public (Using default package sources)"
    build_args=""
fi

echo "📁 Build context: $root"
echo ""

# 构建镜像的函数
build_image() {
    local image_name=$1
    local dockerfile_path=$2
    local tag=$3

    echo "🔄 Building $image_name image..."
    echo "   Dockerfile: $dockerfile_path"
    echo "   Tag: $tag"

    if docker build $build_args -f "$dockerfile_path" -t "$tag" .; then
        echo "✅ $image_name image built successfully"
        return 0
    else
        echo "❌ Failed to build $image_name image"
        return 1
    fi
}

# 构建所有镜像
images_built=()
build_failed=false

# 构建 Elasticsearch 镜像
if build_image "Elasticsearch" "src/log/elasticsearch/build/Dockerfile" "argus-elasticsearch:latest"; then
    images_built+=("argus-elasticsearch:latest")
else
    build_failed=true
fi

echo ""

# 构建 Kibana 镜像
if build_image "Kibana" "src/log/kibana/build/Dockerfile" "argus-kibana:latest"; then
    images_built+=("argus-kibana:latest")
else
    build_failed=true
fi

echo ""

# 构建 BIND9 镜像
if build_image "BIND9" "src/bind/build/Dockerfile" "argus-bind9:latest"; then
    images_built+=("argus-bind9:latest")
else
    build_failed=true
fi

echo ""
echo "======================================="
echo "📦 Build Summary"
echo "======================================="

if [[ ${#images_built[@]} -gt 0 ]]; then
    echo "✅ Successfully built images:"
    for image in "${images_built[@]}"; do
        echo "   • $image"
    done
fi

if [[ "$build_failed" == true ]]; then
    echo ""
    echo "❌ Some images failed to build. Please check the errors above."
    exit 1
fi

if [[ "$use_intranet" == true ]]; then
    echo ""
    echo "🌐 Built with intranet mirror configuration"
fi

echo ""
echo "🚀 Next steps:"
echo "   cd src/log && ./scripts/save_images.sh     # Export log images"
echo "   cd src/bind && ./scripts/save_images.sh    # Export bind images"
echo "   cd src/log/tests && ./scripts/02_up.sh     # Start log services"
echo ""