64 lines
2.2 KiB
Python
64 lines
2.2 KiB
Python
import sys
|
|
import os
|
|
import subprocess
|
|
from app import create_app, db
|
|
from app.models import Folder, User
|
|
from flask.cli import with_appcontext
|
|
import click
|
|
|
|
app = create_app()
|
|
|
|
|
|
@app.cli.command("setup-dev")
|
|
def setup_dev():
|
|
"""Set up development environment with Docker Compose."""
|
|
# Create tmp directory for IMAP data if it doesn't exist
|
|
os.makedirs('tmp/imap-data', exist_ok=True)
|
|
|
|
# Start the services
|
|
try:
|
|
subprocess.run(['docker-compose', 'up', '-d'], check=True)
|
|
print("Services started successfully:")
|
|
print("- PostgreSQL: localhost:5432 (database: email_organizer_dev, user: postgres, password: password)")
|
|
print("- IMAP Server: localhost:1143")
|
|
print(" Users:")
|
|
print(" - user1@example.com / password1")
|
|
print(" - user2@example.com / password2")
|
|
print(" Folders: INBOX, Pending, Work, Personal, Receipts, Marketing, Archived")
|
|
except subprocess.CalledProcessError as e:
|
|
print(f"Error starting services: {e}")
|
|
sys.exit(1)
|
|
except FileNotFoundError:
|
|
print("Docker Compose not found. Please install Docker and Docker Compose.")
|
|
sys.exit(1)
|
|
|
|
@app.cli.command("start-scheduler")
|
|
@click.option('--interval', default=5, help='Interval in minutes between processing runs (default: 5)')
|
|
@with_appcontext
|
|
def start_scheduler(interval):
|
|
"""Start the background email processing scheduler."""
|
|
if not hasattr(app, 'scheduler'):
|
|
print("Scheduler not available. Make sure app/scheduler.py exists and is properly imported.")
|
|
sys.exit(1)
|
|
|
|
print(f"Starting email processing scheduler with {interval} minute interval...")
|
|
print("Press Ctrl+C to stop")
|
|
|
|
try:
|
|
# Start the scheduler
|
|
app.scheduler.start()
|
|
|
|
# Keep the main thread alive
|
|
try:
|
|
while True:
|
|
time.sleep(1)
|
|
except KeyboardInterrupt:
|
|
print("\nShutting down scheduler...")
|
|
app.scheduler.stop()
|
|
|
|
except Exception as e:
|
|
print(f"Error starting scheduler: {e}")
|
|
sys.exit(1)
|
|
|
|
# Import at the top of the file (add this import if not already present)
|
|
import time |