#!/usr/bin/env bash # Builds the development images on this Mac (native linux/arm64, nothing pushed): # kvitt-server:dev from server/Dockerfile # kvitt-backup:dev from infra/backup/Dockerfile # Usage: infra/dev/build.sh [server|backup|all] (default: all) # Refuses to run while a Gradle build holds the gradle-serial lock (CLAUDE.md: never build images during a Gradle build). set -euo pipefail # shellcheck source=lib.sh . "$(dirname "$0")/lib.sh" # shellcheck source=../../tools/gradle-lock.sh . "$repo_root/tools/gradle-lock.sh" what="${1:-all}" if pid="$(gradle_lock_holder)"; then die "a Gradle build is running (pid $pid, $KVITT_GRADLE_LOCK); try again when it is done." fi server_image="$(env_value KVITT_SERVER_IMAGE kvitt-server:dev)" backup_image="$(env_value KVITT_BACKUP_IMAGE kvitt-backup:dev)" build_server() { local dockerfile="$repo_root/server/Dockerfile" local context="${KVITT_SERVER_BUILD_CONTEXT:-$repo_root/server}" echo "Building $server_image from server/Dockerfile" docker build --platform linux/arm64 -f "$dockerfile" -t "$server_image" "$context" } build_backup() { echo "Building $backup_image from infra/backup/Dockerfile" docker build --platform linux/arm64 -f "$repo_root/infra/backup/Dockerfile" -t "$backup_image" "$repo_root/infra/backup" } case "$what" in server) build_server ;; backup) build_backup ;; all) build_backup; build_server ;; *) echo "usage: $0 [server|backup|all]" >&2; exit 2 ;; esac