archivebox_server.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #!/usr/bin/env python3
  2. __package__ = 'archivebox.cli'
  3. __command__ = 'archivebox server'
  4. __description__ = 'Run the ArchiveBox HTTP server'
  5. import sys
  6. import argparse
  7. from ..legacy.config import setup_django, OUTPUT_DIR, ANSI, check_data_folder
  8. from ..legacy.util import reject_stdin
  9. def main(args=None):
  10. check_data_folder()
  11. args = sys.argv[1:] if args is None else args
  12. parser = argparse.ArgumentParser(
  13. prog=__command__,
  14. description=__description__,
  15. add_help=True,
  16. )
  17. parser.add_argument(
  18. 'runserver_args',
  19. nargs='*',
  20. type=str,
  21. default=None,
  22. help='Arguments to pass to Django runserver'
  23. )
  24. parser.add_argument(
  25. '--reload',
  26. action='store_true',
  27. help='Enable auto-reloading when code or templates change',
  28. )
  29. command = parser.parse_args(args)
  30. reject_stdin(__command__)
  31. setup_django(OUTPUT_DIR)
  32. from django.core.management import call_command
  33. print('{green}[+] Starting ArchiveBox webserver...{reset}'.format(**ANSI))
  34. if not command.reload:
  35. command.runserver_args.append('--noreload')
  36. call_command("runserver", *command.runserver_args)
  37. if __name__ == '__main__':
  38. main()