fix archivebox shell and manage CLI commands

This commit is contained in:
Nick Sweeting 2024-11-19 00:48:39 -08:00
parent 328eb98a38
commit 5f01fc8307
No known key found for this signature in database
4 changed files with 59 additions and 87 deletions

View file

@ -1,44 +1,33 @@
#!/usr/bin/env python3
__package__ = 'archivebox.cli'
__command__ = 'archivebox manage'
import sys
from pathlib import Path
from typing import Optional, List, IO
from archivebox.misc.util import docstring
from archivebox.config import DATA_DIR
import rich_click as click
from archivebox.misc.util import docstring, enforce_types
# @enforce_types
def manage(args: Optional[List[str]]=None, out_dir: Path=DATA_DIR) -> None:
@enforce_types
def manage(args: list[str] | None=None) -> None:
"""Run an ArchiveBox Django management command"""
check_data_folder()
from django.core.management import execute_from_command_line
from archivebox.config.common import SHELL_CONFIG
from archivebox.misc.logging import stderr
if (args and "createsuperuser" in args) and (IN_DOCKER and not SHELL_CONFIG.IS_TTY):
if (args and "createsuperuser" in args) and (SHELL_CONFIG.IN_DOCKER and not SHELL_CONFIG.IS_TTY):
stderr('[!] Warning: you need to pass -it to use interactive commands in docker', color='lightyellow')
stderr(' docker run -it archivebox manage {}'.format(' '.join(args or ['...'])), color='lightyellow')
stderr('')
# import ipdb; ipdb.set_trace()
from django.core.management import execute_from_command_line
execute_from_command_line(['manage.py', *(args or ['help'])])
@click.command(add_help_option=False, context_settings=dict(ignore_unknown_options=True))
@click.argument('args', nargs=-1)
@docstring(manage.__doc__)
def main(args: Optional[List[str]]=None, stdin: Optional[IO]=None, pwd: Optional[str]=None) -> None:
manage(
args=args,
out_dir=Path(pwd) if pwd else DATA_DIR,
)
def main(args: list[str] | None=None) -> None:
manage(args=args)
if __name__ == '__main__':
main(args=sys.argv[1:], stdin=sys.stdin)
main()