#!/bin/sh
# Keep the workspace image fresh. Runs long-lived under supervise-daemon:
# pulls periodically, with capped exponential backoff on failure instead of a
# tight retry loop that hammers the registry.
set -u

IMAGE="git.sfclub.cc/cloud/workspace-image:latest"
INTERVAL="${IMAGE_UPDATER_INTERVAL:-3600}"   # seconds between successful pulls
MIN_DELAY="${IMAGE_UPDATER_MIN_DELAY:-5}"     # initial retry delay on failure
MAX_DELAY="${IMAGE_UPDATER_MAX_DELAY:-300}"   # cap on retry delay

while true; do
    delay="$MIN_DELAY"
    until docker pull "$IMAGE" >/dev/null 2>&1; do
        echo "image-updater: pull failed, retrying in ${delay}s" >&2
        sleep "$delay"
        delay=$((delay * 2))
        [ "$delay" -gt "$MAX_DELAY" ] && delay="$MAX_DELAY"
    done
    echo "image-updater: pulled $IMAGE"
    sleep "$INTERVAL"
done
