archivebox_server.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #!/usr/bin/env python3
  2. __package__ = 'archivebox.cli'
  3. __command__ = 'archivebox server'
  4. import sys
  5. import argparse
  6. from typing import Optional, List, IO
  7. from ..main import server, docstring
  8. from ..config import OUTPUT_DIR
  9. from ..logging import SmartFormatter, reject_stdin
  10. @docstring(server.__doc__)
  11. def main(args: Optional[List[str]]=None, stdin: Optional[IO]=None, pwd: Optional[str]=None) -> None:
  12. parser = argparse.ArgumentParser(
  13. prog=__command__,
  14. description=server.__doc__,
  15. add_help=True,
  16. formatter_class=SmartFormatter,
  17. )
  18. parser.add_argument(
  19. 'runserver_args',
  20. nargs='*',
  21. type=str,
  22. default=None,
  23. help='Arguments to pass to Django runserver'
  24. )
  25. parser.add_argument(
  26. '--reload',
  27. action='store_true',
  28. help='Enable auto-reloading when code or templates change',
  29. )
  30. parser.add_argument(
  31. '--debug',
  32. action='store_true',
  33. help='Enable DEBUG=True mode with more verbose errors',
  34. )
  35. command = parser.parse_args(args or ())
  36. reject_stdin(__command__, stdin)
  37. server(
  38. runserver_args=command.runserver_args,
  39. reload=command.reload,
  40. debug=command.debug,
  41. out_dir=pwd or OUTPUT_DIR,
  42. )
  43. if __name__ == '__main__':
  44. main(args=sys.argv[1:], stdin=sys.stdin)