kconfig argcomplete: support full pkgname (MR 2134)
Support full linux-* package names in argument completion for "pmbootstrap kconfig ..." command-lines and get rid of related PROTIP messages: PROTIP: You can simply do 'pmbootstrap kconfig check postmarketos-allwinner' This improves consistency, as in other places we expect the user to supply full package names as well (e.g. pmbootstrap build).
This commit is contained in:
parent
152bd6753c
commit
6557e6892a
|
@ -81,9 +81,7 @@ def get_outputdir(args, pkgname, apkbuild):
|
|||
def menuconfig(args, pkgname, use_oldconfig):
|
||||
# Pkgname: allow omitting "linux-" prefix
|
||||
if pkgname.startswith("linux-"):
|
||||
pkgname_ = pkgname.split("linux-")[1]
|
||||
logging.info(f"PROTIP: You can simply do 'pmbootstrap kconfig "
|
||||
f"{args.action_kconfig} {pkgname_}'")
|
||||
pkgname = pkgname.split("linux-")[1]
|
||||
else:
|
||||
pkgname = "linux-" + pkgname
|
||||
|
||||
|
|
|
@ -444,9 +444,7 @@ def arguments_kconfig(subparser):
|
|||
help="check options needed for containers too")
|
||||
check.add_argument("--zram", action="store_true", help="check"
|
||||
" options needed for zram support too")
|
||||
check_package = check.add_argument("package", default="", nargs='?')
|
||||
if argcomplete:
|
||||
check_package.completer = kernel_completer
|
||||
add_kernel_arg(check)
|
||||
|
||||
# "pmbootstrap kconfig edit"
|
||||
edit = sub.add_parser("edit", help="edit kernel aport config")
|
||||
|
@ -457,9 +455,7 @@ def arguments_kconfig(subparser):
|
|||
edit.add_argument("-n", dest="nconfig", action="store_true",
|
||||
help="use nconfig rather than menuconfig for kernel"
|
||||
" configuration")
|
||||
edit_package = edit.add_argument("package", nargs='?')
|
||||
if argcomplete:
|
||||
edit_package.completer = kernel_completer
|
||||
add_kernel_arg(edit)
|
||||
|
||||
# "pmbootstrap kconfig migrate"
|
||||
migrate = sub.add_parser("migrate",
|
||||
|
@ -468,9 +464,7 @@ def arguments_kconfig(subparser):
|
|||
"which asks question for every new kernel "
|
||||
"config option.")
|
||||
migrate.add_argument("--arch", choices=arch_choices, dest="arch")
|
||||
migrate_package = migrate.add_argument("package", nargs='?')
|
||||
if argcomplete:
|
||||
migrate_package.completer = kernel_completer
|
||||
add_kernel_arg(migrate)
|
||||
|
||||
|
||||
def arguments_repo_missing(subparser):
|
||||
|
@ -514,9 +508,20 @@ def package_completer(prefix, action, parser=None, parsed_args=None):
|
|||
|
||||
|
||||
def kernel_completer(prefix, action, parser=None, parsed_args=None):
|
||||
packages = package_completer("linux-" + prefix, action, parser,
|
||||
""" :returns: matched linux-* packages, with linux-* prefix and without """
|
||||
ret = []
|
||||
|
||||
# Full package name, starting with "linux-"
|
||||
if (len("linux-") < len(prefix) and prefix.startswith("linux-") or
|
||||
"linux-".startswith(prefix)):
|
||||
ret += package_completer(prefix, action, parser, parsed_args)
|
||||
|
||||
# Kernel name without "linux-"
|
||||
packages = package_completer(f"linux-{prefix}", action, parser,
|
||||
parsed_args)
|
||||
return [package.replace("linux-", "", 1) for package in packages]
|
||||
ret += [package.replace("linux-", "", 1) for package in packages]
|
||||
|
||||
return ret
|
||||
|
||||
|
||||
def add_packages_arg(subparser, name="packages", *args, **kwargs):
|
||||
|
@ -525,6 +530,13 @@ def add_packages_arg(subparser, name="packages", *args, **kwargs):
|
|||
arg.completer = package_completer
|
||||
|
||||
|
||||
def add_kernel_arg(subparser, name="package", *args, **kwargs):
|
||||
arg = subparser.add_argument("package", nargs='?', help="kernel package"
|
||||
" (e.g. linux-postmarketos-allwinner)")
|
||||
if argcomplete:
|
||||
arg.completer = kernel_completer
|
||||
|
||||
|
||||
def arguments():
|
||||
parser = argparse.ArgumentParser(prog="pmbootstrap")
|
||||
arch_native = pmb.config.arch_native
|
||||
|
|
|
@ -168,8 +168,6 @@ def check(args, pkgname,
|
|||
# Pkgname: allow omitting "linux-" prefix
|
||||
if pkgname.startswith("linux-"):
|
||||
flavor = pkgname.split("linux-")[1]
|
||||
logging.info("PROTIP: You can simply do 'pmbootstrap kconfig check " +
|
||||
flavor + "'")
|
||||
else:
|
||||
flavor = pkgname
|
||||
|
||||
|
|
Loading…
Reference in New Issue