From fbbcc1c26f6cc53f635d88d7612eb5fad3cf4a60 Mon Sep 17 00:00:00 2001 From: Oliver Smith Date: Thu, 6 Feb 2020 13:29:14 +0100 Subject: [PATCH] pmb.parse.arguments: common func for packages arg (!1872) Create add_packages_add() function, so we don't need to write the three lines for adding the "packages" argument to an action with proper autocompletion. --- pmb/parse/arguments.py | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/pmb/parse/arguments.py b/pmb/parse/arguments.py index 31c999bc..6e71e3f0 100644 --- a/pmb/parse/arguments.py +++ b/pmb/parse/arguments.py @@ -273,9 +273,7 @@ def arguments_repo_missing(subparser): def arguments_lint(subparser): lint = subparser.add_parser("lint", help="run quality checks on pmaports" " (required to pass CI)") - argument_packages = lint.add_argument("packages", nargs="*") - if argcomplete: - argument_packages.completer = package_completer + add_packages_arg(lint, nargs="*") def package_completer(prefix, action, parser, parsed_args): @@ -293,6 +291,12 @@ def kernel_completer(prefix, action, parser, parsed_args): return [package.replace("linux-", "", 1) for package in packages] +def add_packages_arg(subparser, name="packages", *args, **kwargs): + arg = subparser.add_argument(name, *args, **kwargs) + if argcomplete: + arg.completer = package_completer + + def arguments(): parser = argparse.ArgumentParser(prog="pmbootstrap") arch_native = pmb.parse.arch.alpine_native() @@ -506,15 +510,21 @@ def arguments(): " (even if supported by device)", dest="sparse", action="store_false") - # Action: checksum / aportgen / build + # Action: checksum checksum = sub.add_parser("checksum", help="update aport checksums") checksum.add_argument("--verify", action="store_true", help="download" " sources and verify that the checksums of the" " APKBUILD match, instead of updating them") + add_packages_arg(checksum, nargs="+") + + # Action: aportgen aportgen = sub.add_parser("aportgen", help="generate a postmarketOS" " specific package build recipe (aport/APKBUILD)") aportgen.add_argument("--fork-alpine", help="fork the alpine upstream package", action="store_true", dest="fork_alpine") + add_packages_arg(aportgen, nargs="+") + + # Action: build build = sub.add_parser("build", help="create a package for a" " specific architecture") build.add_argument("--arch", choices=arch_choices, default=None, @@ -543,19 +553,16 @@ def arguments(): build.add_argument("--envkernel", action="store_true", help="Create an apk package from the build output of" " a kernel compiled with envkernel.sh.") - for action in [checksum, build, aportgen]: - argument_packages = action.add_argument("packages", nargs="+") - if argcomplete: - argument_packages.completer = package_completer + add_packages_arg(build, nargs="+") # Action: apkbuild_parse apkbuild_parse = sub.add_parser("apkbuild_parse") - apkbuild_parse.add_argument("packages", nargs="*") + add_packages_arg(apkbuild_parse, nargs="*") # Action: apkindex_parse apkindex_parse = sub.add_parser("apkindex_parse") apkindex_parse.add_argument("apkindex_path") - apkindex_parse.add_argument("package", default=None, nargs="?") + add_packages_arg(apkindex_parse, "package", nargs="?") # Action: config config = sub.add_parser("config",