#!/usr/bin/env bash set -Eeuo pipefail PROJECT_DIR="${1:-$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)}" RCLONE_CONFIG_FILE="${RCLONE_CONFIG_FILE:-$HOME/.config/rclone/rclone.conf}" APP_SERVICE="${KOYEB_APP_SERVICE:-polymarket-collector/collector}" SECRET_NAME="${KOYEB_RCLONE_SECRET:-polymarket-rclone-config}" if ! command -v koyeb >/dev/null 2>&1; then echo "Koyeb CLI is missing: https://www.koyeb.com/docs/build-and-deploy/cli/installation" >&2 exit 1 fi if [[ ! -f "$PROJECT_DIR/Dockerfile" ]]; then echo "Dockerfile not found in $PROJECT_DIR" >&2 exit 1 fi if [[ ! -s "$RCLONE_CONFIG_FILE" ]]; then echo "rclone config not found: $RCLONE_CONFIG_FILE" >&2 exit 1 fi if koyeb secrets describe "$SECRET_NAME" >/dev/null 2>&1; then base64 -w0 "$RCLONE_CONFIG_FILE" \ | koyeb secrets update "$SECRET_NAME" --value-from-stdin >/dev/null else base64 -w0 "$RCLONE_CONFIG_FILE" \ | koyeb secrets create "$SECRET_NAME" --value-from-stdin >/dev/null fi koyeb deploy "$PROJECT_DIR" "$APP_SERVICE" \ --archive-builder docker \ --instance-type free \ --regions fra \ --ports 8080:http \ --routes /:8080 \ --checks 8080:http:/healthz \ --checks-grace-period 8080=180 \ --scale 1 \ --env MAX_MARKETS=40 \ --env DATA_DIR=/data \ --env HEALTH_HOST=0.0.0.0 \ --env PORT=8080 \ --env ROTATION_SECONDS=300 \ --env MAX_FILE_MIB=32 \ --env BACKUP_INTERVAL_SECONDS=120 \ --env BACKUP_MIN_AGE=30s \ --env REMOVE_AFTER_UPLOAD=true \ --env REQUIRE_REMOTE_BACKUP=true \ --env RCLONE_REMOTE=gdrive:polymarket-data \ --env "RCLONE_CONFIG_B64={{secret.$SECRET_NAME}}" \ --wait \ --wait-timeout 10m koyeb services get "$APP_SERVICE"