autofax/install.sh
Sochen a05d49632b Run first fax 2 minutes after install, then hourly
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 22:49:37 +00:00

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