From 4ca9a0beacffb5e5f985f360467c383fcf4a9fbd Mon Sep 17 00:00:00 2001 From: Nick Sweeting Date: Thu, 11 Apr 2019 06:59:14 -0400 Subject: [PATCH] colorized and better command sorting in help msg --- archivebox/cli/__init__.py | 9 ++++++--- archivebox/cli/archivebox_help.py | 16 +++++++++------- archivebox/cli/archivebox_init.py | 9 +++++---- 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/archivebox/cli/__init__.py b/archivebox/cli/__init__.py index ea1fcda5..869724a3 100644 --- a/archivebox/cli/__init__.py +++ b/archivebox/cli/__init__.py @@ -8,8 +8,11 @@ CLI_DIR = os.path.dirname(os.path.abspath(__file__)) required_attrs = ('__package__', '__command__', '__description__', 'main') +order = ('help', 'version', 'init', 'list', 'update', 'add', 'remove') + + def list_subcommands(): - COMMANDS = {} + COMMANDS = [] for filename in os.listdir(CLI_DIR): if filename.startswith('archivebox_') and filename.endswith('.py'): subcommand = filename.replace('archivebox_', '').replace('.py', '') @@ -17,9 +20,9 @@ def list_subcommands(): assert all(hasattr(module, attr) for attr in required_attrs) assert module.__command__.split(' ')[-1] == subcommand - COMMANDS[subcommand] = module.__description__ + COMMANDS.append((subcommand, module.__description__)) - return COMMANDS + return dict(sorted(COMMANDS, key=lambda cmd: order.index(cmd[0]) if cmd[0] in order else 10 + len(cmd[0]))) def run_subcommand(subcommand: str, args=None): diff --git a/archivebox/cli/archivebox_help.py b/archivebox/cli/archivebox_help.py index 9271ab7f..1ef49223 100755 --- a/archivebox/cli/archivebox_help.py +++ b/archivebox/cli/archivebox_help.py @@ -8,6 +8,7 @@ import sys import argparse from ..legacy.util import reject_stdin +from ..legacy.config import ANSI from . import list_subcommands @@ -28,14 +29,15 @@ def main(args=None): for cmd, summary in list_subcommands().items() ) - print(f'''ArchiveBox: The self-hosted internet archive. -Usage: + print('''{green}ArchiveBox: The self-hosted internet archive.{reset} + +{lightblue}Usage:{reset} archivebox [command] [--help] [--version] [...args] -Comamnds: - {COMMANDS_HELP_TEXT} +{lightblue}Comamnds:{reset} + {} -Example Use: +{lightblue}Example Use:{reset} mkdir my-archive; cd my-archive/ archivebox init @@ -46,9 +48,9 @@ Example Use: archivebox update --resume=15109948213.123 archivebox list --sort=timestamp --csv=timestamp,url,is_archived -Documentation: +{lightblue}Documentation:{reset} https://github.com/pirate/ArchiveBox/wiki -''') +'''.format(COMMANDS_HELP_TEXT, **ANSI)) if __name__ == '__main__': diff --git a/archivebox/cli/archivebox_init.py b/archivebox/cli/archivebox_init.py index 8955adaf..942387ad 100755 --- a/archivebox/cli/archivebox_init.py +++ b/archivebox/cli/archivebox_init.py @@ -30,11 +30,12 @@ def init(output_dir: str=OUTPUT_DIR): if not is_empty: if existing_index: - stderr('[√] You already have an archive setup up in this folder. To add new links, you can run:') - stderr(' archivebox add https://example.com') + stderr('{green}[√] You already have an archive index in this folder.{reset}'.format(**ANSI)) + stderr(' To add new links, you can run:') + stderr(" archivebox add 'https://example.com'") stderr() - stderr('[i] Fore more usage and examples, run "archivebox help" or visit:') - stderr(' https://github.com/pirate/ArchiveBox/wiki/Usage') + stderr(' For more usage and examples, run:') + stderr(' archivebox help') # TODO: import old archivebox version's archive data folder raise SystemExit(1)