#!/usr/bin/env bash # # build.sh -- (re)embed docker-compose.yml, Caddyfile, .env.example into # deploy.sh as a base64-encoded tar.gz payload after __ARCHIVE_BELOW__. # Idempotent: strips any existing payload first. set -euo pipefail DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) SCRIPT="$DIR/deploy.sh" MARKER="__ARCHIVE_BELOW__" [[ -f "$SCRIPT" ]] || { echo "deploy.sh not found at $SCRIPT" >&2; exit 1; } for f in docker-compose.yml Caddyfile .env.example; do [[ -f "$DIR/$f" ]] || { echo "Missing $DIR/$f" >&2; exit 1; } done PAYLOAD=$(tar -czf - -C "$DIR" docker-compose.yml Caddyfile .env.example | base64) TMP=$(mktemp) trap 'rm -f "$TMP"' EXIT sed "/^${MARKER}\$/,\$d" "$SCRIPT" > "$TMP" { echo "$MARKER" echo "$PAYLOAD" } >> "$TMP" mv "$TMP" "$SCRIPT" chmod +x "$SCRIPT" trap - EXIT size=$(wc -c < "$SCRIPT") echo "Built $SCRIPT (${size} bytes)"