| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- #!/usr/bin/env python3
- # archivebox [command]
- __package__ = 'archivebox.cli'
- __command__ = 'archivebox'
- __description__ = 'ArchiveBox: The self-hosted internet archive.'
- import os
- import sys
- import argparse
- from . import list_subcommands, run_subcommand
- from ..legacy.config import OUTPUT_DIR
- def parse_args(args=None):
- args = sys.argv[1:] if args is None else args
- subcommands = list_subcommands()
- parser = argparse.ArgumentParser(
- prog=__command__,
- description=__description__,
- add_help=False,
- )
- group = parser.add_mutually_exclusive_group()
- group.add_argument(
- '--help', '-h',
- action='store_true',
- help=subcommands['help'],
- )
- group.add_argument(
- '--version',
- action='store_true',
- help=subcommands['version'],
- )
- group.add_argument(
- "subcommand",
- type=str,
- help= "The name of the subcommand to run",
- nargs='?',
- choices=subcommands.keys(),
- default=None,
- )
- parser.add_argument(
- "args",
- help="Arguments for the subcommand",
- nargs=argparse.REMAINDER,
- )
-
- command = parser.parse_args(args)
- if command.help:
- command.subcommand = 'help'
- if command.version:
- command.subcommand = 'version'
- # print('--------------------------------------------')
- # print('Command: ', sys.argv[0])
- # print('Subcommand: ', command.subcommand)
- # print('Args to pass:', args[1:])
- # print('--------------------------------------------')
- return command.subcommand, command.args
- def print_import_tutorial():
- print('Welcome to ArchiveBox!')
- print()
- print('To import an existing archive (from a previous version of ArchiveBox):')
- print(' 1. cd into your data dir OUTPUT_DIR (usually ArchiveBox/output) and run:')
- print(' 2. archivebox init')
- print()
- print('To start a new archive:')
- print(' 1. Create an emptry directory, then cd into it and run:')
- print(' 2. archivebox init')
- print()
- print('For more information, see the migration docs here:')
- print(' https://github.com/pirate/ArchiveBox/wiki/Migration')
- def main(args=None):
- subcommand, subcommand_args = parse_args(args)
- existing_index = os.path.exists(os.path.join(OUTPUT_DIR, 'index.json'))
- if subcommand is None:
- if existing_index:
- run_subcommand('help', subcommand_args)
- else:
- print_import_tutorial()
- raise SystemExit(0)
- run_subcommand(subcommand, subcommand_args)
-
- if __name__ == '__main__':
- main()
|