51 lines
1.5 KiB
Bash
Executable file
51 lines
1.5 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
set -e
|
|
|
|
# Prevent concurrent executions of this script.
|
|
LOCK_FILE="/tmp/$(basename "$0").lock"
|
|
if [ -e "$LOCK_FILE" ]; then
|
|
echo "[WARN] $(basename "$0") is already running (lock file present)." >&2
|
|
exit 0
|
|
fi
|
|
touch "$LOCK_FILE"
|
|
trap 'rm -f "$LOCK_FILE"' EXIT
|
|
|
|
# Ensure virtual environment exists
|
|
if [ ! -d ".venv" ]; then
|
|
echo "[INFO] Creating virtual environment..."
|
|
python3 -m venv .venv
|
|
source .venv/bin/activate
|
|
echo "[INFO] Installing dependencies..."
|
|
pip install --upgrade pip
|
|
if [ -f requirements.txt ]; then
|
|
pip install -r requirements.txt
|
|
else
|
|
echo "[WARN] requirements.txt not found, skipping."
|
|
fi
|
|
else
|
|
echo "[INFO] Activating virtual environment..."
|
|
source .venv/bin/activate
|
|
fi
|
|
|
|
# Generate reports for all domains combined
|
|
echo "[INFO] Generating aggregate reports..."
|
|
python scripts/generate_reports.py hourly
|
|
python scripts/generate_reports.py daily
|
|
python scripts/generate_reports.py weekly
|
|
python scripts/generate_reports.py monthly
|
|
python scripts/generate_reports.py global
|
|
|
|
# Generate reports for each individual domain
|
|
echo "[INFO] Generating per-domain reports..."
|
|
python scripts/generate_reports.py hourly --all-domains
|
|
python scripts/generate_reports.py daily --all-domains
|
|
python scripts/generate_reports.py weekly --all-domains
|
|
python scripts/generate_reports.py monthly --all-domains
|
|
|
|
# Generate root index
|
|
python scripts/generate_reports.py index
|
|
|
|
# Deactivate to keep cron environment clean
|
|
if type deactivate >/dev/null 2>&1; then
|
|
deactivate
|
|
fi
|