2019-04-03 04:27:37 +00:00
|
|
|
#!/usr/bin/env python3
|
|
|
|
# archivebox [command]
|
|
|
|
|
|
|
|
__package__ = 'archivebox.cli'
|
|
|
|
__command__ = 'archivebox'
|
|
|
|
__description__ = 'ArchiveBox: The self-hosted internet archive.'
|
|
|
|
|
2019-04-22 23:06:48 +00:00
|
|
|
import os
|
2019-04-03 04:27:37 +00:00
|
|
|
import sys
|
|
|
|
import argparse
|
|
|
|
|
|
|
|
from . import list_subcommands, run_subcommand
|
2019-04-22 23:06:48 +00:00
|
|
|
from ..legacy.config import OUTPUT_DIR
|
2019-04-03 04:27:37 +00:00
|
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
2019-04-03 05:54:15 +00:00
|
|
|
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')
|
|
|
|
|
2019-04-03 04:27:37 +00:00
|
|
|
def main(args=None):
|
|
|
|
subcommand, subcommand_args = parse_args(args)
|
2019-04-22 23:06:48 +00:00
|
|
|
existing_index = os.path.exists(os.path.join(OUTPUT_DIR, 'index.json'))
|
|
|
|
|
2019-04-03 05:54:15 +00:00
|
|
|
if subcommand is None:
|
2019-04-22 23:06:48 +00:00
|
|
|
if existing_index:
|
|
|
|
run_subcommand('help', subcommand_args)
|
|
|
|
else:
|
|
|
|
print_import_tutorial()
|
2019-04-03 05:54:15 +00:00
|
|
|
raise SystemExit(0)
|
|
|
|
|
2019-04-03 04:27:37 +00:00
|
|
|
run_subcommand(subcommand, subcommand_args)
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
main()
|