#!/usr/bin/env bash set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_DIR="$(dirname "$SCRIPT_DIR")" IMAGE="ghcr.io/symclaw/symclaw" # Extract version from workspace Cargo.toml VERSION=$(grep -m1 'version *= *"' "$PROJECT_DIR/Cargo.toml" | sed 's/.*"\(.*\)".*/\1/') PUSH=false PLATFORM="" while [[ $# -gt 0 ]]; do case "$1" in --push) PUSH=true; shift ;; --platform) PLATFORM="$2"; shift 2 ;; *) echo "Usage: $0 [--push] [--platform linux/amd64,linux/arm64]"; exit 1 ;; esac done export DOCKER_BUILDKIT=1 BUILD_ARGS=( -t "${IMAGE}:${VERSION}" -t "${IMAGE}:latest" -f "$PROJECT_DIR/Dockerfile" ) if [[ -n "$PLATFORM" ]]; then BUILD_ARGS+=(--platform "$PLATFORM") fi if $PUSH; then BUILD_ARGS+=(--push) echo "Building and pushing ${IMAGE}:{${VERSION},latest} (platform: ${PLATFORM:-default})…" docker buildx build "${BUILD_ARGS[@]}" "$PROJECT_DIR" else echo "Building ${IMAGE}:{${VERSION},latest}…" docker build "${BUILD_ARGS[@]}" "$PROJECT_DIR" fi echo "Done."