#!/usr/bin/env bash set -Eeuo pipefail IFS=$'\n\t' DEPLOY_PATH="${DEPLOY_PATH:-/opt/archivebox.demo}" DEPLOY_SERVICE="${DEPLOY_SERVICE:-archivebox}" DEPLOY_IMAGE="${DEPLOY_IMAGE:-archivebox/archivebox:dev}" DEPLOY_INTERVAL="${DEPLOY_INTERVAL:-60}" STATE_FILE="${STATE_FILE:-${DEPLOY_PATH}/.archivebox-dev-image.digest}" OVERRIDE_FILE="${OVERRIDE_FILE:-${DEPLOY_PATH}/.archivebox-deploy.override.yml}" DEPLOY_BASE_OVERRIDE="${DEPLOY_BASE_OVERRIDE:-}" DEPLOY_HEALTH_HOST="${DEPLOY_HEALTH_HOST:-admin.archivebox.io}" DEPLOY_HEALTH_PORT="${DEPLOY_HEALTH_PORT:-5797}" DEPLOY_HEALTH_PATH="${DEPLOY_HEALTH_PATH:-/health/}" ABXPKG_LIB_DIR="${ABXPKG_LIB_DIR:-$HOME/.config/archivebox/lib}" DOCKER_BINARY="${DOCKER_BINARY:-$ABXPKG_LIB_DIR/env/bin/docker}" test -x "$DOCKER_BINARY" cd "$DEPLOY_PATH" if [[ -f compose.yml ]]; then COMPOSE_FILE=compose.yml elif [[ -f compose.yaml ]]; then COMPOSE_FILE=compose.yaml elif [[ -f docker-compose.yml ]]; then COMPOSE_FILE=docker-compose.yml else echo "[X] No compose file found in $DEPLOY_PATH" >&2 exit 1 fi cat > "$OVERRIDE_FILE" < "$STATE_FILE" } mkdir -p "$(dirname "$STATE_FILE")" touch "$STATE_FILE" while :; do digest="$(remote_digest || true)" last_digest="" IFS= read -r last_digest < "$STATE_FILE" || true if [[ -z "$digest" ]]; then echo "[!] Could not resolve ${DEPLOY_IMAGE}; retrying in ${DEPLOY_INTERVAL}s" >&2 elif [[ "$digest" != "$last_digest" ]]; then deploy_digest "$digest" else echo "[=] ${DEPLOY_IMAGE} already deployed at ${digest}" fi if [[ "${WATCH_ONCE:-0}" == "1" ]]; then break fi read -r -t "$DEPLOY_INTERVAL" _