allow to specify list of package dependencies in rebuild target

also replace nargs= by action=append in non-positional args. It is
required to make arguments parsing result more predictable and
consistent
This commit is contained in:
Evgenii Alekseev 2021-04-18 13:34:27 +03:00
parent 46389b87e7
commit 2eb2d3a70a
3 changed files with 7 additions and 5 deletions

View File

@ -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

View File

@ -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)

View File

@ -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])