Houroux's picture
Publish Render-ready Polymarket collector
e2ce547 verified
Raw
History Blame Contribute Delete
1.44 kB
#!/usr/bin/env bash
set -euo pipefail
ENV_FILE="${ENV_FILE:-/etc/polymarket-collector.env}"
if [[ -f "$ENV_FILE" ]]; then
set -a
# shellcheck disable=SC1090
source "$ENV_FILE"
set +a
fi
DATA_DIR="${DATA_DIR:-/var/lib/polymarket-collector}"
RCLONE_REMOTE="${RCLONE_REMOTE:-}"
LOCAL_RETENTION_DAYS="${LOCAL_RETENTION_DAYS:-0}"
REMOVE_AFTER_UPLOAD="${REMOVE_AFTER_UPLOAD:-false}"
BACKUP_MIN_AGE="${BACKUP_MIN_AGE:-2m}"
if [[ -z "$RCLONE_REMOTE" ]]; then
echo "RCLONE_REMOTE is empty; backup is not configured."
exit 0
fi
if [[ ! -d "$DATA_DIR" ]]; then
echo "Data directory does not exist: $DATA_DIR" >&2
exit 1
fi
if ! [[ "$LOCAL_RETENTION_DAYS" =~ ^[0-9]+$ ]]; then
echo "LOCAL_RETENTION_DAYS must be a non-negative integer." >&2
exit 1
fi
case "${REMOVE_AFTER_UPLOAD,,}" in
1|true|yes) RCLONE_ACTION="move" ;;
0|false|no) RCLONE_ACTION="copy" ;;
*)
echo "REMOVE_AFTER_UPLOAD must be true or false." >&2
exit 1
;;
esac
LOCK_FILE="${BACKUP_LOCK_FILE:-/tmp/polymarket-backup.lock}"
exec 9>"$LOCK_FILE"
flock -n 9 || exit 0
rclone "$RCLONE_ACTION" "$DATA_DIR" "$RCLONE_REMOTE" \
--include "*.jsonl.gz" \
--min-age "$BACKUP_MIN_AGE" \
--checksum \
--transfers 2 \
--checkers 4 \
--retries 3 \
--low-level-retries 10 \
--create-empty-src-dirs
if (( LOCAL_RETENTION_DAYS > 0 )); then
find "$DATA_DIR" -type f -name "*.jsonl.gz" \
-mtime "+$LOCAL_RETENTION_DAYS" -delete
fi