Spaces:
Runtime error
Runtime error
| set -euo pipefail | |
| # --- Resolve repo root --- | |
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | |
| REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" | |
| cd "$REPO_ROOT" | |
| # --- Lock to avoid overlapping runs (portable; no flock needed) --- | |
| mkdir -p logs | |
| LOCKDIR="logs/.predict.lock" | |
| if ! mkdir "$LOCKDIR" 2>/dev/null; then | |
| echo "[$(date '+%F %T')] Another run is in progress. Skipping." | |
| exit 0 | |
| fi | |
| trap 'rmdir "$LOCKDIR" 2>/dev/null || true' EXIT | |
| # --- Args & defaults --- | |
| MODE="${1:-default}" | |
| CITY="${2:-Lagos}" | |
| LAT="${3:-6.5244}" | |
| LON="${4:-3.3792}" | |
| PAST_DAYS="${5:-90}" | |
| # --- Activate venv if present --- | |
| if [[ -f ".venv/bin/activate" ]]; then | |
| # shellcheck disable=SC1091 | |
| source .venv/bin/activate | |
| fi | |
| # --- Environment for fetch scripts --- | |
| export LAT="$LAT" LON="$LON" PAST_DAYS="$PAST_DAYS" | |
| # --- Run one logged prediction --- | |
| echo "[$(date '+%F %T')] cron_predict: city=$CITY lat=$LAT lon=$LON mode=$MODE days=$PAST_DAYS" | |
| python3 scripts/log_predict.py --city "$CITY" --lat "$LAT" --lon "$LON" --mode "$MODE" || { | |
| echo "[$(date '+%F %T')] ERROR: log_predict failed" | |
| exit 1 | |
| } | |
| # --- (Optional) basic log rotation (keep log under ~1MB) --- | |
| LOGFILE="logs/cron.log" | |
| if [[ -f "$LOGFILE" ]] && [[ $(stat -f%z "$LOGFILE") -gt 1048576 ]]; then | |
| mv "$LOGFILE" "logs/cron_$(date +%Y%m%d_%H%M%S).log" || true | |
| fi | |
| echo "[$(date '+%F %T')] cron_predict: done." | |