ohmyzsh/plugins/lxd/lxd.plugin.zsh

86 lines
2.4 KiB
Bash
Raw Normal View History

_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]} -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 () {
local curcontext="$curcontext" state line
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_element_list)
;;
esac
}
compdef _lxc lxc lxd