#!/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}" ABXPKG_LIB_DIR="${ABXPKG_LIB_DIR:-$HOME/.config/archivebox/lib}" 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" _