archivebox_manage.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #!/usr/bin/env python3
  2. __package__ = 'archivebox.cli'
  3. __command__ = 'archivebox manage'
  4. import sys
  5. from pathlib import Path
  6. from typing import Optional, List, IO
  7. from archivebox.misc.util import docstring
  8. from archivebox.config import DATA_DIR
  9. # @enforce_types
  10. def manage(args: Optional[List[str]]=None, out_dir: Path=DATA_DIR) -> None:
  11. """Run an ArchiveBox Django management command"""
  12. check_data_folder()
  13. from django.core.management import execute_from_command_line
  14. if (args and "createsuperuser" in args) and (IN_DOCKER and not SHELL_CONFIG.IS_TTY):
  15. stderr('[!] Warning: you need to pass -it to use interactive commands in docker', color='lightyellow')
  16. stderr(' docker run -it archivebox manage {}'.format(' '.join(args or ['...'])), color='lightyellow')
  17. stderr('')
  18. # import ipdb; ipdb.set_trace()
  19. execute_from_command_line(['manage.py', *(args or ['help'])])
  20. @docstring(manage.__doc__)
  21. def main(args: Optional[List[str]]=None, stdin: Optional[IO]=None, pwd: Optional[str]=None) -> None:
  22. manage(
  23. args=args,
  24. out_dir=Path(pwd) if pwd else DATA_DIR,
  25. )
  26. if __name__ == '__main__':
  27. main(args=sys.argv[1:], stdin=sys.stdin)