From: Jonatan Schlag Date: Mon, 24 Jul 2017 19:10:05 +0000 (+0200) Subject: autocompletion: improve config part X-Git-Tag: 009~116 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cbf7473cecd8bb2fcad15d98ec44a2a4c88af3d1;p=network.git autocompletion: improve config part Signed-off-by: Jonatan Schlag Signed-off-by: Michael Tremer --- diff --git a/src/bash-completion/network b/src/bash-completion/network index f7c58a93..820c2d41 100644 --- a/src/bash-completion/network +++ b/src/bash-completion/network @@ -421,20 +421,64 @@ _network_zone_subcommand_config() { local words=( $@ ) - local commands="new destroy" + local commands="destroy list new $(network raw list-zone-config-ids ${zone})" + local cmd="$(_network_find_on_cmdline "${commands}")" if [[ -z "${cmd}" ]]; then COMPREPLY=( $(compgen -W "${commands}" -- "${cur}") ) return 0 fi + local args="${words[@]:1}" case "${cmd}" in new) _network_complete_hooks "config" ;; + destroy) + _network_zone_subcommand_config_destroy ${zone} ${args} + ;; + # We use no better globbing like [:digit:] here because hids would not match the glob + # Also bash is silly here and does not unterstand things like ^[[:digit:]]+$ here. + *) + # Check if we get a valid id + # TODO: We should also accept a valid hid + if network raw zone-config-id-is-valid ${zone} ${cmd}; then + _network_zone_subcommand_config_subcommand ${zone} ${args} + fi + ;; esac } +_network_zone_subcommand_config_subcommand() { + local zone="${1}" + shift + + local words=( $@ ) + + local commands="edit" + + local cmd="$(_network_find_on_cmdline "${commands}")" + if [[ -z "${cmd}" ]]; then + COMPREPLY=( $(compgen -W "${commands}" -- "${cur}") ) + return 0 + fi +} + +_network_zone_subcommand_config_destroy() { + local zone="${1}" + shift + + local words=( $@ ) + + local commands="$(network raw list-zone-config-ids ${zone})" + + local cmd="$(_network_find_on_cmdline "${commands}")" + if [[ -z "${cmd}" ]]; then + COMPREPLY=( $(compgen -W "${commands}" -- "${cur}") ) + return 0 + fi +} + _network_zone_subcommand_port() { local zone="${1}" shift