#!/usr/bin/env bash set -euo pipefail SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" cd "$SCRIPT_DIR" UBUNTU_VERSION="${UBUNTU_VERSION:-26.04}" NODE_VERSION="${NODE_VERSION:-24.21.0}" OPENCODE_VERSION="${OPENCODE_VERSION:-2.0.3}" IMAGE="${IMAGE_REPO:-localhost/opencode-dev}" usage() { echo "Usage: $0 [--no-cache] [--update] [--dry-run]" exit 2 } BUILD_OPTS=() DRY_RUN=0 while (($#)); do case "$1" in --no-cache) BUILD_OPTS+=(--no-cache) ;; --update) BUILD_OPTS+=(--no-cache --pull=newer) ;; --dry-run) DRY_RUN=1 ;; -h|--help) usage ;; *) echo "Unknown option: $1" >&2; usage ;; esac shift done CMD=( podman build "${BUILD_OPTS[@]}" --build-arg "UBUNTU_VERSION=${UBUNTU_VERSION}" --build-arg "NODE_VERSION=${NODE_VERSION}" --build-arg "OPENCODE_VERSION=${OPENCODE_VERSION}" --build-arg "DEV_UID=$(id -u)" --build-arg "DEV_GID=$(id -g)" -t "$IMAGE" . ) if ((DRY_RUN)); then printf 'running:'; printf ' %q' "${CMD[@]}"; echo exit 0 fi "${CMD[@]}" echo echo "Built: $IMAGE"