60 lines
1.9 KiB
Bash
Executable file
60 lines
1.9 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
VENV_DIR="$SCRIPT_DIR/venv"
|
|
PYTHON="$VENV_DIR/bin/python"
|
|
CRON_TAG="# autofax"
|
|
|
|
echo "=== AutoFax Setup ==="
|
|
|
|
# Create virtual environment
|
|
if [ ! -d "$VENV_DIR" ]; then
|
|
echo "Creating virtual environment..."
|
|
python3 -m venv "$VENV_DIR"
|
|
fi
|
|
|
|
echo "Installing dependencies..."
|
|
"$VENV_DIR/bin/pip" install -q -r "$SCRIPT_DIR/requirements.txt"
|
|
|
|
# Create directories
|
|
mkdir -p "$SCRIPT_DIR/claims" "$SCRIPT_DIR/reports"
|
|
|
|
# Check for .env
|
|
if [ ! -f "$SCRIPT_DIR/.env" ]; then
|
|
echo ""
|
|
echo "WARNING: No .env file found!"
|
|
echo " cp .env.example .env (then edit with your Sinch credentials)"
|
|
echo ""
|
|
fi
|
|
|
|
# Check for claim PDF
|
|
PDF_COUNT=$(find "$SCRIPT_DIR/claims" -name "*.pdf" 2>/dev/null | wc -l)
|
|
if [ "$PDF_COUNT" -eq 0 ]; then
|
|
echo "WARNING: No PDF found in claims/ directory."
|
|
echo "Place your claim PDF in: $SCRIPT_DIR/claims/"
|
|
echo ""
|
|
fi
|
|
|
|
# Install cron job - runs 2 minutes from now, then every hour at that minute
|
|
CRON_MIN=$(( ($(date +%M) + 2) % 60 ))
|
|
echo "Installing cron job (minute :$(printf '%02d' $CRON_MIN) every hour)..."
|
|
TMPFILE=$(mktemp)
|
|
crontab -l 2>/dev/null | grep -v "$CRON_TAG" > "$TMPFILE" || true
|
|
echo "$CRON_MIN * * * * $PYTHON $SCRIPT_DIR/autofax.py >> $SCRIPT_DIR/reports/cron.log 2>&1 $CRON_TAG" >> "$TMPFILE"
|
|
crontab "$TMPFILE"
|
|
rm -f "$TMPFILE"
|
|
|
|
echo ""
|
|
echo "=== Setup Complete ==="
|
|
echo "First fax in ~2 minutes (:$(printf '%02d' $CRON_MIN)), then every hour."
|
|
echo "Stops automatically after 3 successful deliveries."
|
|
echo ""
|
|
echo "Checklist:"
|
|
echo " [ ] .env configured with Sinch credentials"
|
|
echo " [ ] Claim PDF placed in claims/ directory"
|
|
echo ""
|
|
echo "Manual test: $PYTHON $SCRIPT_DIR/autofax.py"
|
|
echo "View report: open $SCRIPT_DIR/reports/fax_report.html"
|
|
echo "View log: cat $SCRIPT_DIR/reports/fax_log.json"
|
|
echo "Remove cron: crontab -l | grep -v autofax | crontab -"
|