#!/bin/bash set -euo pipefail PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" TMP_DIR="$(mktemp -d)" cleanup() { find "$TMP_DIR" -type f -delete rmdir "$TMP_DIR" } trap cleanup EXIT LEGACY_ENV_FILE="$TMP_DIR/legacy.env" cat > "$LEGACY_ENV_FILE" <<'EOF' EXISTING_VALUE=keep-me SYSTEM_UPDATE_MODE=legacy_watchtower COMPOSE_PROFILES=customer-profile WATCHTOWER_CLEANUP= EOF bash "$PROJECT_ROOT/scripts/apply-update-env-migrations.sh" "$LEGACY_ENV_FILE" "$PROJECT_ROOT" >/dev/null grep -qx 'EXISTING_VALUE=keep-me' "$LEGACY_ENV_FILE" grep -qx 'SYSTEM_UPDATE_MODE=legacy_watchtower' "$LEGACY_ENV_FILE" grep -qx 'COMPOSE_PROFILES=customer-profile' "$LEGACY_ENV_FILE" grep -qx 'WATCHTOWER_CLEANUP=' "$LEGACY_ENV_FILE" [ "$(wc -l < "$LEGACY_ENV_FILE" | tr -d ' ')" = "4" ] ENV_FILE="$TMP_DIR/.env" cat > "$ENV_FILE" <<'EOF' EXISTING_VALUE=keep-me COMPOSE_PROFILES=customer-profile WATCHTOWER_CLEANUP= EOF bash "$PROJECT_ROOT/scripts/apply-update-env-migrations.sh" "$ENV_FILE" "$PROJECT_ROOT" >/dev/null read_value() { awk -v key="$1" 'index($0, key "=") == 1 { print substr($0, length(key) + 2); exit }' "$ENV_FILE" } [ "$(read_value EXISTING_VALUE)" = "keep-me" ] [ "$(read_value SYSTEM_UPDATE_MODE)" = "managed" ] [ "$(read_value COMPOSE_PROFILES)" = "customer-profile,managed-update" ] [ "$(read_value WATCHTOWER_CLEANUP)" = "true" ] [ "$(read_value WATCHTOWER_CORE_UPDATE_ENABLED)" = "false" ] [ "$(read_value WATCHTOWER_UPDATE_TARGET)" = "easyai-updater" ] [ "$(read_value SYSTEM_UPDATER_UPDATE_INTERVAL_SECONDS)" = "86400" ] [ "$(read_value UPDATE_HEALTH_TIMEOUT_MS)" = "300000" ] [ "$(read_value DOCKER_CONFIG_FILE)" = "/root/.docker/config.json" ] [ "$(read_value EASYAI_DEPLOYMENT_SCHEMA_VERSION)" = "2" ] cp "$ENV_FILE" "$TMP_DIR/first-run.env" bash "$PROJECT_ROOT/scripts/apply-update-env-migrations.sh" "$ENV_FILE" "$PROJECT_ROOT" >/dev/null cmp "$TMP_DIR/first-run.env" "$ENV_FILE" echo "Update environment migration tests passed"