Files
gh-christianlouis-quizzical…/run.py
Christian Krakau-Louis 03b982e7c2 Initial clean commit
2025-05-13 08:59:02 +00:00

81 lines
3.2 KiB
Python

from dotenv import load_dotenv
from musicround import create_app
from musicround.version import get_version_str, VERSION_INFO
import os
import sys
import argparse
# Load environment variables
load_dotenv()
def main():
# Create argument parser
parser = argparse.ArgumentParser(description='Quizzical Beats Management Script')
subparsers = parser.add_subparsers(dest='command', help='Command to run')
# Create the backup subcommand
backup_parser = subparsers.add_parser('backup', help='Backup management')
backup_subparsers = backup_parser.add_subparsers(dest='backup_action', help='Backup action to perform')
# Create backup action
create_parser = backup_subparsers.add_parser('create', help='Create a new backup')
create_parser.add_argument('--auto', action='store_true', help='Create backup with automatic name')
# Retention policy action
retention_parser = backup_subparsers.add_parser('retention', help='Apply backup retention policy')
retention_parser.add_argument('--days', type=int, default=30, help='Number of days to keep backups')
# Parse the arguments
args = parser.parse_args()
# Run the command
if args.command == 'backup':
app = create_app()
with app.app_context():
if args.backup_action == 'create':
from musicround.helpers.backup_helper import create_backup
result = create_backup(backup_name=None if args.auto else f"manual_{VERSION_INFO['version']}")
if result["status"] == "success":
print(f"Backup created successfully: {result['path']}")
return 0
else:
print(f"Backup failed: {result['message']}")
return 1
elif args.backup_action == 'retention':
from musicround.helpers.backup_helper import apply_retention_policy
result = apply_retention_policy(retention_days=args.days)
if result["status"] == "success":
print(f"Retention policy applied: {result['message']}")
return 0
else:
print(f"Retention policy failed: {result['message']}")
return 1
else:
# Default: Run the Flask app
app = create_app()
# When running in Docker, we need to listen on 0.0.0.0
host = os.environ.get('FLASK_HOST', '0.0.0.0')
port = int(os.environ.get('FLASK_PORT', 5000))
# Enable debug mode in development
debug = os.environ.get('FLASK_DEBUG', 'False').lower() == 'true'
# Display app version and release info
version = get_version_str()
print(f"Quizzical Beats {version}")
print(f"Release Date: {VERSION_INFO['release_date']}")
print("-" * 40)
print(f"Starting Flask app on {host}:{port} (debug={debug})")
app.run(host=host, port=port, debug=debug)
return 0
if __name__ == '__main__':
# Display app version and release info
version = get_version_str()
print(f"Quizzical Beats {version}")
# Run the main function
exit_code = main()
sys.exit(exit_code)