#!/usr/bin/env python3 __package__ = 'archivebox.cli' __command__ = 'archivebox server' __description__ = 'Run the ArchiveBox HTTP server' import sys import argparse from ..legacy.config import setup_django, IS_TTY, OUTPUT_DIR, ANSI, check_data_folder from ..legacy.util import reject_stdin def main(args=None): check_data_folder() args = sys.argv[1:] if args is None else args parser = argparse.ArgumentParser( prog=__command__, description=__description__, add_help=True, ) parser.add_argument( 'runserver_args', nargs='*', type=str, default=None, help='Arguments to pass to Django runserver' ) parser.add_argument( '--reload', action='store_true', help='Enable auto-reloading when code or templates change', ) command = parser.parse_args(args) reject_stdin(__command__) setup_django(OUTPUT_DIR) from django.core.management import call_command from django.contrib.auth.models import User if IS_TTY and not User.objects.filter(is_superuser=True).exists(): print('{lightyellow}[!] No admin users exist yet, you will not be able to edit links in the UI.{reset}'.format(**ANSI)) print() print(' To create an admin user, run:') print(' archivebox manage createsuperuser') print() print('{green}[+] Starting ArchiveBox webserver...{reset}'.format(**ANSI)) if not command.reload: command.runserver_args.append('--noreload') call_command("runserver", *command.runserver_args) if __name__ == '__main__': main()