refactor(linux): some code cleanup in bash completion script

Build-bot: skip
Test-bot: skip
This commit is contained in:
Eberhard Beilharz 2025-08-18 19:54:33 +02:00
parent c6a043c5af
commit 57970724fa
No known key found for this signature in database
GPG key ID: E9140597606020D3
2 changed files with 11 additions and 10 deletions

View file

@ -103,6 +103,7 @@ def _list_languages_for_keyboard_impl(packageId, packageDir):
return result
# Used in bash completion
def list_languages_for_keyboard(packageId, packageDir):
result = _list_languages_for_keyboard_impl(packageId, packageDir)
print(result)

View file

@ -54,34 +54,34 @@ _km-package-install_completions()
local packageId=""
local packageDir
packageDir=$(mktemp -d)
for ((i=0;i<$COMP_CWORD;i++)); do
case ${COMP_WORDS[$i]} in
for ((i=0;i<COMP_CWORD;i++)); do
case ${COMP_WORDS[${i}]} in
"-p"|"--package")
packageId="${COMP_WORDS[$i+1]}"
# shellcheck disable=SC2086 # doesn't work with quotes
if [ ! -f ${XDG_CACHE_HOME:-~/.cache}/keyman/$packageId ] && [ ! -f ${XDG_CACHE_HOME:-~/.cache}/keyman/${packageId}.kmp ]; then
python3 -c "from importlib.machinery import SourceFileLoader;from importlib.util import module_from_spec, spec_from_loader;loader = SourceFileLoader('get_kmp', '$get_kmp_path');spec = spec_from_loader(loader.name, loader);mod = module_from_spec(spec);loader.exec_module(mod);mod.get_kmp('$packageId')"
if [[ ! -f ${XDG_CACHE_HOME:-~/.cache}/keyman/${packageId} ]] && [[ ! -f ${XDG_CACHE_HOME:-~/.cache}/keyman/${packageId}.kmp ]]; then
python3 -c "from importlib.machinery import SourceFileLoader;from importlib.util import module_from_spec, spec_from_loader;loader = SourceFileLoader('get_kmp', '${get_kmp_path}');spec = spec_from_loader(loader.name, loader);mod = module_from_spec(spec);loader.exec_module(mod);mod.get_kmp('${packageId}')"
fi
break
;;
"-f"|"--file")
package="${COMP_WORDS[$i+1]}"
packageId=$(basename "$package")
package="${COMP_WORDS[${i}+1]}"
packageId=$(basename "${package}")
# shellcheck disable=SC2086 # doesn't work with quotes
cp "$package" ${XDG_CACHE_HOME:-~/.cache}/keyman/${packageId}
cp "${package}" ${XDG_CACHE_HOME:-~/.cache}/keyman/${packageId}
break
;;
*)
;;
esac
done
if [ -z "$packageId" ]; then
if [[ -z "${packageId}" ]]; then
return 0
fi
words=""
while read -r lang; do
words="$words $lang"
done < <(python3 -c "from importlib.machinery import SourceFileLoader;from importlib.util import module_from_spec, spec_from_loader;loader = SourceFileLoader('km_package_install', '$pkg_install_path');spec = spec_from_loader(loader.name, loader);mod = module_from_spec(spec);loader.exec_module(mod);mod.list_languages_for_keyboard('$packageId', '$packageDir')")
words="${words} ${lang}"
done < <(python3 -c "from importlib.machinery import SourceFileLoader;from importlib.util import module_from_spec, spec_from_loader;loader = SourceFileLoader('km_package_install', '$pkg_install_path');spec = spec_from_loader(loader.name, loader);mod = module_from_spec(spec);loader.exec_module(mod);mod.list_languages_for_keyboard('${packageId}', '${packageDir}')")
# shellcheck disable=SC2207
COMPREPLY=($(compgen -W "${words}" -- "${cur}"))
return 0