From bf0e707953540ef6bed087bce66e6aa9b2b170be Mon Sep 17 00:00:00 2001 From: Tony Narlock Date: Sun, 16 Oct 2022 16:55:36 -0500 Subject: [PATCH 1/2] fix(cli[sync]): Fix vcspull sync with no args --- src/vcspull/cli/__init__.py | 1 + src/vcspull/cli/sync.py | 8 +++++++- tests/test_cli.py | 7 ++----- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/vcspull/cli/__init__.py b/src/vcspull/cli/__init__.py index 5757043b..c022db37 100644 --- a/src/vcspull/cli/__init__.py +++ b/src/vcspull/cli/__init__.py @@ -30,6 +30,7 @@ def create_parser(): default="INFO", help="log level (DEBUG, INFO, WARNING, ERROR, CRITICAL)", ) + subparsers = parser.add_subparsers(dest="subparser_name") sync_parser = subparsers.add_parser("sync", help="synchronize repos") create_sync_subparser(sync_parser) diff --git a/src/vcspull/cli/sync.py b/src/vcspull/cli/sync.py index 3e3fa389..cfab2464 100644 --- a/src/vcspull/cli/sync.py +++ b/src/vcspull/cli/sync.py @@ -24,7 +24,7 @@ def create_sync_subparser(parser: argparse.ArgumentParser) -> argparse.ArgumentP config_file = parser.add_argument("--config", "-c", help="specify config") parser.add_argument( "repo_terms", - nargs="+", + nargs="*", help="filters: repo terms, separated by spaces, supports globs / fnmatch (1)", ) parser.add_argument( @@ -34,6 +34,7 @@ def create_sync_subparser(parser: argparse.ArgumentParser) -> argparse.ArgumentP dest="exit_on_error", help="exit immediately when encountering an error syncing multiple repos", ) + try: import shtab @@ -51,6 +52,11 @@ def sync( argparse.ArgumentParser ] = None, # optional so sync can be unit tested ) -> None: + if isinstance(repo_terms, list) and len(repo_terms) == 0: + if parser is not None: + parser.print_help() + sys.exit(2) + if config: configs = load_configs([config]) else: diff --git a/tests/test_cli.py b/tests/test_cli.py index 0fee8b09..9edb55e1 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -157,11 +157,8 @@ class SyncFixture(t.NamedTuple): SyncFixture( test_id="sync--empty", sync_args=["sync"], - expected_exit_code=1, - expected_in_out=( - "sync: error: the following arguments are required: repo_terms" - ), - expected_not_in_out="positional arguments:", + expected_exit_code=0, + expected_in_out=["positional arguments:"], ), # Sync: Help SyncFixture( From 3446bf9450f108df6ad02a5d7e3174d62cf003ee Mon Sep 17 00:00:00 2001 From: Tony Narlock Date: Sun, 16 Oct 2022 16:59:53 -0500 Subject: [PATCH 2/2] docs(CHANGES): Note fixing of vcspull sync --- CHANGES | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGES b/CHANGES index aaefc63e..c4e23430 100644 --- a/CHANGES +++ b/CHANGES @@ -21,6 +21,12 @@ $ pipx install --suffix=@next 'vcspull' --pip-args '\--pre' --force +## vcspull v1.15.5 (unreleased) + +### CLI + +- `vcspull sync`: Fix showing of help when no arguments passed (#405) + ## vcspull v1.15.4 (2022-10-16) ### CLI