diff --git a/src/ahriman/application/ahriman.py b/src/ahriman/application/ahriman.py index eb87d602..6dfa350b 100644 --- a/src/ahriman/application/ahriman.py +++ b/src/ahriman/application/ahriman.py @@ -155,7 +155,7 @@ def _set_rebuild_parser(root: SubParserAction) -> argparse.ArgumentParser: """ parser = root.add_parser("rebuild", help="rebuild repository", description="rebuild whole repository", formatter_class=argparse.ArgumentDefaultsHelpFormatter) - parser.add_argument("--depends-on", help="only rebuild packages that depend on specified package") + parser.add_argument("--depends-on", help="only rebuild packages that depend on specified package", action="append") parser.set_defaults(handler=handlers.Rebuild) return parser @@ -215,7 +215,7 @@ def _set_setup_parser(root: SubParserAction) -> argparse.ArgumentParser: parser.add_argument("--repository", help="repository name", required=True) parser.add_argument("--sign-key", help="sign key id") parser.add_argument("--sign-target", help="sign options", type=SignSettings.from_option, - choices=SignSettings, nargs="*") + choices=SignSettings, action="append") parser.add_argument("--web-port", help="port of the web service", type=int) parser.set_defaults(handler=handlers.Setup, lock=None, no_report=True, unsafe=True) return parser diff --git a/src/ahriman/application/handlers/rebuild.py b/src/ahriman/application/handlers/rebuild.py index 9d181e4a..e6613782 100644 --- a/src/ahriman/application/handlers/rebuild.py +++ b/src/ahriman/application/handlers/rebuild.py @@ -39,10 +39,12 @@ class Rebuild(Handler): :param architecture: repository architecture :param configuration: configuration instance """ + depends_on = set(args.depends_on) if args.depends_on else None + application = Application(architecture, configuration) packages = [ package for package in application.repository.packages() - if args.depends_on is None or args.depends_on in package.depends + if depends_on is None or depends_on.intersection(package.depends) ] # we have to use explicit list here for testing purpose application.update(packages) diff --git a/tests/ahriman/application/handlers/test_handler_rebuild.py b/tests/ahriman/application/handlers/test_handler_rebuild.py index 45853567..a3d3bbab 100644 --- a/tests/ahriman/application/handlers/test_handler_rebuild.py +++ b/tests/ahriman/application/handlers/test_handler_rebuild.py @@ -8,7 +8,7 @@ from ahriman.models.package import Package def _default_args(args: argparse.Namespace) -> argparse.Namespace: - args.depends_on = None + args.depends_on = [] return args @@ -33,7 +33,7 @@ def test_run_filter(args: argparse.Namespace, configuration: Configuration, must run command with depends filter """ args = _default_args(args) - args.depends_on = "python-aur" + args.depends_on = ["python-aur"] mocker.patch("pathlib.Path.mkdir") mocker.patch("ahriman.core.repository.repository.Repository.packages", return_value=[package_ahriman, package_python_schedule])