forked from Mirror/pmbootstrap
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
3 changed files with 24 additions and 16 deletions
|
@ -81,9 +81,7 @@ def get_outputdir(args, pkgname, apkbuild):
|
||||||
def menuconfig(args, pkgname, use_oldconfig):
|
def menuconfig(args, pkgname, use_oldconfig):
|
||||||
# Pkgname: allow omitting "linux-" prefix
|
# Pkgname: allow omitting "linux-" prefix
|
||||||
if pkgname.startswith("linux-"):
|
if pkgname.startswith("linux-"):
|
||||||
pkgname_ = pkgname.split("linux-")[1]
|
pkgname = pkgname.split("linux-")[1]
|
||||||
logging.info(f"PROTIP: You can simply do 'pmbootstrap kconfig "
|
|
||||||
f"{args.action_kconfig} {pkgname_}'")
|
|
||||||
else:
|
else:
|
||||||
pkgname = "linux-" + pkgname
|
pkgname = "linux-" + pkgname
|
||||||
|
|
||||||
|
|
|
@ -444,9 +444,7 @@ def arguments_kconfig(subparser):
|
||||||
help="check options needed for containers too")
|
help="check options needed for containers too")
|
||||||
check.add_argument("--zram", action="store_true", help="check"
|
check.add_argument("--zram", action="store_true", help="check"
|
||||||
" options needed for zram support too")
|
" options needed for zram support too")
|
||||||
check_package = check.add_argument("package", default="", nargs='?')
|
add_kernel_arg(check)
|
||||||
if argcomplete:
|
|
||||||
check_package.completer = kernel_completer
|
|
||||||
|
|
||||||
# "pmbootstrap kconfig edit"
|
# "pmbootstrap kconfig edit"
|
||||||
edit = sub.add_parser("edit", help="edit kernel aport config")
|
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",
|
edit.add_argument("-n", dest="nconfig", action="store_true",
|
||||||
help="use nconfig rather than menuconfig for kernel"
|
help="use nconfig rather than menuconfig for kernel"
|
||||||
" configuration")
|
" configuration")
|
||||||
edit_package = edit.add_argument("package", nargs='?')
|
add_kernel_arg(edit)
|
||||||
if argcomplete:
|
|
||||||
edit_package.completer = kernel_completer
|
|
||||||
|
|
||||||
# "pmbootstrap kconfig migrate"
|
# "pmbootstrap kconfig migrate"
|
||||||
migrate = sub.add_parser("migrate",
|
migrate = sub.add_parser("migrate",
|
||||||
|
@ -468,9 +464,7 @@ def arguments_kconfig(subparser):
|
||||||
"which asks question for every new kernel "
|
"which asks question for every new kernel "
|
||||||
"config option.")
|
"config option.")
|
||||||
migrate.add_argument("--arch", choices=arch_choices, dest="arch")
|
migrate.add_argument("--arch", choices=arch_choices, dest="arch")
|
||||||
migrate_package = migrate.add_argument("package", nargs='?')
|
add_kernel_arg(migrate)
|
||||||
if argcomplete:
|
|
||||||
migrate_package.completer = kernel_completer
|
|
||||||
|
|
||||||
|
|
||||||
def arguments_repo_missing(subparser):
|
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):
|
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)
|
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):
|
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
|
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():
|
def arguments():
|
||||||
parser = argparse.ArgumentParser(prog="pmbootstrap")
|
parser = argparse.ArgumentParser(prog="pmbootstrap")
|
||||||
arch_native = pmb.config.arch_native
|
arch_native = pmb.config.arch_native
|
||||||
|
|
|
@ -168,8 +168,6 @@ def check(args, pkgname,
|
||||||
# Pkgname: allow omitting "linux-" prefix
|
# Pkgname: allow omitting "linux-" prefix
|
||||||
if pkgname.startswith("linux-"):
|
if pkgname.startswith("linux-"):
|
||||||
flavor = pkgname.split("linux-")[1]
|
flavor = pkgname.split("linux-")[1]
|
||||||
logging.info("PROTIP: You can simply do 'pmbootstrap kconfig check " +
|
|
||||||
flavor + "'")
|
|
||||||
else:
|
else:
|
||||||
flavor = pkgname
|
flavor = pkgname
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue