File size: 1,384 Bytes
6eff894
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#!/usr/bin/env bash

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."