#!/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()