From eb5287383d8fbc2b1399d975eaa31fe520e8d583 Mon Sep 17 00:00:00 2001 From: jadjay Date: Fri, 21 Apr 2023 18:57:31 +0200 Subject: [PATCH] Update lxd.plugin.zsh - Add elements listing - Add instance listing - Separate Flags, Global Flags, Commands --- plugins/lxd/lxd.plugin.zsh | 69 +++++++++++++++++++++++++++++++++++--- 1 file changed, 64 insertions(+), 5 deletions(-) diff --git a/plugins/lxd/lxd.plugin.zsh b/plugins/lxd/lxd.plugin.zsh index a6a074252..271750deb 100644 --- a/plugins/lxd/lxd.plugin.zsh +++ b/plugins/lxd/lxd.plugin.zsh @@ -1,9 +1,64 @@ -_lxc_get_command_list () { - $_comp_command1 | sed "1,/Available Commands/d" | awk '/^[ \t]*[a-z]+/ { print $1 }' +_lxc_get_commands () { + sed '/Available Commands/,/Flags/!d' | awk '/^[ \t]/{ print $1 }' +} +_lxc_get_flags () { + sed '/^Flags/,/^Global Flags/!d' | awk '/^[ \t]*--/ { print $1 }/^[ \t]*-.,/ { print $1 $2 }' | sed 's/,/ /' +} +_lxc_get_global_flags () { + sed '/^Global Flags/,$!d' | awk '/^[ \t]*--/ { print $1 }/^[ \t]*-.,/ { print $1 $2 }' | sed 's/,/ /' } +_lxc_get_command_list () { + echo "___command" + $_comp_command1 -h | _lxc_get_commands + $_comp_command1 -h | _lxc_get_global_flags +} + + _lxc_get_subcommand_list () { - $_comp_command1 ${words[2]} | sed "1,/Available Commands/d" | awk '/^[ \t]*[a-z]+/ { print $1 }' + + $_comp_command1 ${words[2]} -h | _lxc_get_flags + $_comp_command1 ${words[2]} -h | _lxc_get_commands + + case ${words[2]} in + alias|cluster|image|operation|profile|project|remote|storage|warning) + echo "___subco_alias" + ${words[1]} ${words[2]} list -f csv | cut -d, -f1 + ;; + list) + echo "___subco_list" + ${words[1]} ${words[2]} -cn -fcsv ${words[3]} + ;; + exec) + echo "___subco_exec" + echo "--" + ${words[1]} list -cn -fcsv ${words[3]} + ;; + network) + echo "___subco_autre" + ${words[1]} ${words[2]} list -fcsv | cut -d, -f1 + ;; + *) + echo "___subco_autre" + ${words[1]} list -cn -fcsv ${words[3]} + ;; + esac + +} + +_lxc_get_element_list () { + case ${words[2]} in + exec) + echo "___subco_exec2" + echo "--" + $_comp_command1 ${words[2]} -h | _lxc_get_flags + ;; + *) + echo "___subco_autre2" + $_comp_command1 ${words[2]} ${words[3]} -h | _lxc_get_flags + $_comp_command1 ${words[2]} ${words[3]} -h | _lxc_get_commands + ;; + esac } _lxc () { @@ -11,16 +66,20 @@ _lxc () { typeset -A opt_args _arguments \ '1: :->command'\ + '2: :->subcommand'\ '*: :->args' case $state in command) compadd $(_lxc_get_command_list) ;; + subcommand) + compadd $(_lxc_get_subcommand_list) + ;; *) - compadd $(_lxc_get_subcommand_list) + compadd $(_lxc_get_element_list) ;; esac } -compdef _lxc lxc +compdef _lxc lxc lxd