From da6fa5d72670e4e3a28cc8ebecc907fabee6e3e0 Mon Sep 17 00:00:00 2001 From: Luis Eduardo Bonatti Date: Thu, 10 Oct 2024 15:30:45 -0300 Subject: [PATCH] Fix software deploy subcommand completion This commit fix the current behavior of software bash completion which was not completing for the software deploy subcommand. PASS: Software deploy list all options. PASS: Software deploy st completes with 'start'. PASS: Software deploy start list flags. Story: 2010676 Task: 51162 Change-Id: Icfcddbe861a1f0eeb309e3d0e105bdd3989cb768 Signed-off-by: Luis Eduardo Bonatti --- software-client/service-files/software_client.completion | 4 ++-- software-client/software_client/software_client.py | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/software-client/service-files/software_client.completion b/software-client/service-files/software_client.completion index 24f67e86..c2743e8c 100644 --- a/software-client/service-files/software_client.completion +++ b/software-client/service-files/software_client.completion @@ -35,11 +35,11 @@ _software() kbc="`software deploy bash-completion | sed -e "s/ -h / /"`" _software_deploy_opts="`echo "$kbc" | sed -e "s/--[a-z0-9_-]*//g" -e "s/[ ][ ]*/ /g"`" _software_deploy_flags="`echo " $kbc" | sed -e "s/ [^-][^-][a-z0-9_-]*//g" -e "s/[ ][ ]*/ /g"`" - _software_deploy_opts_exp="`echo $_software_deploy_opts | sed -e "s/[ ]/|/g"`" + _software_deploy_opts_exp="`echo $_software_deploy_opts | sed -e "s/[ ]\+/|/g"`" fi if [ "$cmd" == "deploy" ] ; then - if [[ " ${COMP_WORDS[@]} " =~ " "$_software_deploy_opts_exp" " && "$prev" != "help" ]] ; then + if [[ " ${_software_deploy_opts} " == *" $prev "* && "$prev" != "help" ]] ; then COMPREPLY=($(compgen -W "${_software_deploy_flags}" -- ${cur})) else COMPREPLY=($(compgen -W "${_software_deploy_opts}" -- ${cur})) diff --git a/software-client/software_client/software_client.py b/software-client/software_client/software_client.py index 5a9dc86f..6d1bd949 100644 --- a/software-client/software_client/software_client.py +++ b/software-client/software_client/software_client.py @@ -405,14 +405,16 @@ class SoftwareClientShell(object): deploy_options = set() software_deploy_command = "software deploy" deploy_command = "deploy" - unlisted_commands = [deploy_command, "bash-completion", "bash_completion"] + unlisted_commands = ["bash-completion", "bash_completion"] for sc_str, sc in self.subcommands.items(): # Separate between software command and deploy commands if sc.prog.startswith(software_deploy_command): if sc_str in unlisted_commands: continue - deploy_commands.add(sc_str) + # Remove deploy prefix output + opt = sc_str[len(f"{deploy_command} "):] + deploy_commands.add(opt) for option in list(sc._optionals._option_string_actions): deploy_options.add(option) else: