# #!/usr/bin/env python3

################## DEPRECATED IN FAVOR OF abx-dl #####################
# https://github.com/ArchiveBox/abx-dl

# __package__ = 'archivebox.cli'
# __command__ = 'archivebox oneshot'

# import sys
# import argparse

# from pathlib import Path
# from typing import List, Optional, IO

# from archivebox.misc.util import docstring
# from archivebox.config import DATA_DIR
# from archivebox.misc.logging_util import SmartFormatter, accept_stdin, stderr


# @enforce_types
# def oneshot(url: str, extractors: str="", out_dir: Path=DATA_DIR, created_by_id: int | None=None) -> List[Link]:
#     """
#     Create a single URL archive folder with an index.json and index.html, and all the archive method outputs.
#     You can run this to archive single pages without needing to create a whole collection with archivebox init.
#     """
#     oneshot_link, _ = parse_links_memory([url])
#     if len(oneshot_link) > 1:
#         stderr(
#                 '[X] You should pass a single url to the oneshot command',
#                 color='red'
#             )
#         raise SystemExit(2)

#     methods = extractors.split(",") if extractors else ignore_methods(['title'])
#     archive_link(oneshot_link[0], out_dir=out_dir, methods=methods, created_by_id=created_by_id)
#     return oneshot_link






# @docstring(oneshot.__doc__)
# def main(args: Optional[List[str]]=None, stdin: Optional[IO]=None, pwd: Optional[str]=None) -> None:
#     parser = argparse.ArgumentParser(
#         prog=__command__,
#         description=oneshot.__doc__,
#         add_help=True,
#         formatter_class=SmartFormatter,
#     )
#     parser.add_argument(
#         'url',
#         type=str,
#         default=None,
#         help=(
#             'URLs or paths to archive e.g.:\n'
#             '    https://getpocket.com/users/USERNAME/feed/all\n'
#             '    https://example.com/some/rss/feed.xml\n'
#             '    https://example.com\n'
#             '    ~/Downloads/firefox_bookmarks_export.html\n'
#             '    ~/Desktop/sites_list.csv\n'
#         )
#     )
#     parser.add_argument(
#         "--extract",
#         type=str,
#         help="Pass a list of the extractors to be used. If the method name is not correct, it will be ignored. \
#               This does not take precedence over the configuration",
#         default=""
#     )
#     parser.add_argument(
#         '--out-dir',
#         type=str,
#         default=DATA_DIR,
#         help= "Path to save the single archive folder to, e.g. ./example.com_archive"
#     )
#     command = parser.parse_args(args or ())
#     stdin_url = None
#     url = command.url
#     if not url:
#         stdin_url = accept_stdin(stdin)

#     if (stdin_url and url) or (not stdin and not url):
#         stderr(
#             '[X] You must pass a URL/path to add via stdin or CLI arguments.\n',
#             color='red',
#         )
#         raise SystemExit(2)
    
#     oneshot(
#         url=stdin_url or url,
#         out_dir=Path(command.out_dir).resolve(),
#         extractors=command.extract,
#     )


# if __name__ == '__main__':
#     main(args=sys.argv[1:], stdin=sys.stdin)