From 3000943751e06c501f5a8a07466d35f04041aae6 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=B6rg=20Behrmann?= Date: Wed, 24 Jul 2024 16:29:16 +0200 Subject: [PATCH] completion: forward define (hash) arrays for bash completion --- mkosi/completion.py | 5 +++-- mkosi/resources/completion.bash | 6 ++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/mkosi/completion.py b/mkosi/completion.py index ed1df98c4..ddd8769f7 100644 --- a/mkosi/completion.py +++ b/mkosi/completion.py @@ -102,11 +102,11 @@ def collect_completion_arguments() -> list[CompletionItem]: def finalize_completion_bash(options: list[CompletionItem], resources: Path) -> str: def to_bash_array(name: str, entries: Iterable[str]) -> str: - return f"declare -a {name.replace('-', '_')}=(" + " ".join(shlex.quote(str(e)) for e in entries) + ")" + return f"{name.replace('-', '_')}=(" + " ".join(shlex.quote(str(e)) for e in entries) + ")" def to_bash_hasharray(name: str, entries: Mapping[str, Union[str, int]]) -> str: return ( - f"declare -A {name.replace('-', '_')}=(" + + f"{name.replace('-', '_')}=(" + " ".join(f"[{shlex.quote(str(k))}]={shlex.quote(str(v))}" for k, v in entries.items()) + ")" ) @@ -116,6 +116,7 @@ def finalize_completion_bash(options: list[CompletionItem], resources: Path) -> with io.StringIO() as c: c.write(completion.read_text()) + c.write("\n") c.write(to_bash_array("_mkosi_options", options_by_key.keys())) c.write("\n\n") diff --git a/mkosi/resources/completion.bash b/mkosi/resources/completion.bash index 82026d962..874922f81 100644 --- a/mkosi/resources/completion.bash +++ b/mkosi/resources/completion.bash @@ -1,6 +1,12 @@ # SPDX-License-Identifier: LGPL-2.1-or-later # shellcheck shell=bash +declare -a _mkosi_options +declare -A _mkosi_nargs +declare -A _mkosi_choices +declare -A _mkosi_compgen +declare -a _mkosi_verbs + _mkosi_compgen_files() { compgen -f -- "$1" } -- 2.47.2