From d1a207366e1e72c4737e76623b9ab998057cb751 Mon Sep 17 00:00:00 2001 From: FUJITA Tomonori Date: Fri, 3 Apr 2015 22:22:20 +0900 Subject: fix gobgp completion script fix ce4b18e4 messup Signed-off-by: FUJITA Tomonori --- tools/completion/gobgp-completion.bash | 195 ++++++++++++++++++++++++++++++ tools/completion/gobgpcli-completion.bash | 180 --------------------------- 2 files changed, 195 insertions(+), 180 deletions(-) create mode 100644 tools/completion/gobgp-completion.bash delete mode 100644 tools/completion/gobgpcli-completion.bash (limited to 'tools/completion') diff --git a/tools/completion/gobgp-completion.bash b/tools/completion/gobgp-completion.bash new file mode 100644 index 00000000..b9e0c483 --- /dev/null +++ b/tools/completion/gobgp-completion.bash @@ -0,0 +1,195 @@ +#!bash + +__gobgp_q() { + gobgp 2>/dev/null "$@" +} + +__search_target() { + local word target c=1 + + while [ $c -lt $cword ]; do + word="${words[c]}" + for target in $1; do + if [ "$target" = "$word" ]; then + echo "$target" + return + fi + done + ((c++)) + done +} + +__gobgp_table_list() { + local table_list=("local adj-in adj-out") + local table="$(__search_target "${table_list}")" + if [ -z "$table" ]; then + case "$cur" in + *) + COMPREPLY=( $( compgen -W "${table_list}" -- "$cur") ) + ;; + esac + return + fi + COMPREPLY=( $( compgen -W "ipv4 ipv6 evpn" -- "$cur") ) + return +} + +__gobgp_neighbr_list() { + local neighbor_list=( $(__gobgp_q --quiet show neighbors) ) + local target="$(__search_target "${neighbor_list[*]}")" + if [ -z "$target" ]; then + case "$cur" in + *) + COMPREPLY=( $( compgen -W "${neighbor_list[*]}" -- "$cur") ) + ;; + esac + __ltrim_colon_completions "$cur" + return 0 + fi + return 1 +} + +_gobgp_show_neighbor() { + __gobgp_neighbr_list + if [ $? -ne 0 ] ; then + __gobgp_table_list + fi +} + +_gobgp_show_neighbors() { + case "$cur" in + *) + ;; + esac + return +} + +_gobgp_show_global() { + local targets="ipv4 ipv6 evpn" + local target="$(__search_target "$targets")" + if [ -z "$target" ]; then + case "$cur" in + *) + COMPREPLY=( $( compgen -W "${targets[*]}" -- "$cur" ) ) + ;; + esac + return + fi +} + +_gobgp_show() { + local targets="neighbor neighbors global" + local target="$(__search_target "$targets")" + if [ -z "$target" ]; then + case "$cur" in + *) + COMPREPLY=( $( compgen -W "${targets[*]}" -- "$cur" ) ) + ;; + esac + return + fi + _gobgp_show_${target} +} + +__gobgp_generic_reset() { + local targets="neighbor" + local target="$(__search_target "$targets")" + if [ -z "$target" ]; then + case "$cur" in + *) + COMPREPLY=( $( compgen -W "${targets[*]}" -- "$cur" ) ) + ;; + esac + return + fi + __gobgp_neighbr_list +} + +_gobgp_reset() { + __gobgp_generic_reset +} + +_gobgp_softreset() { + __gobgp_generic_reset +} + +_gobgp_softresetin() { + __gobgp_generic_reset +} + +_gobgp_softresetout() { + __gobgp_generic_reset +} + +_gobgp_shutdown() { + __gobgp_generic_reset +} + +_gobgp_enable() { + __gobgp_generic_reset +} + +_gobgp_disable() { + __gobgp_generic_reset +} + +_gobgp_gobgp() { + case "$prev" in + -h) + return + ;; + *) + ;; + esac + + case "$cur" in + -*) + COMPREPLY=( $( compgen -W "-h" -- "$cur" ) ) + ;; + *) + COMPREPLY=( $( compgen -W "${commands[*]} help" -- "$cur" ) ) + ;; + esac +} + +_gobgp() { + local commands=( + show + reset + softreset + softresetin + softresetout + shutdown + enable + disable + ) + + COMPREPLY=() + local cur prev words cword + _get_comp_words_by_ref -n : cur prev words cword + + local command='gobgp' + local counter=1 + while [ $counter -lt $cword ]; do + case "${words[$counter]}" in + -h) + (( counter++ )) + ;; + -*) + ;; + *) + command="${words[$counter]}" + cpos=$counter + (( cpos++ )) + break + ;; + esac + (( counter++ )) + done + local completions_func=_gobgp_${command} + declare -F $completions_func > /dev/null && $completions_func + + return 0 +} + +complete -F _gobgp gobgp diff --git a/tools/completion/gobgpcli-completion.bash b/tools/completion/gobgpcli-completion.bash deleted file mode 100644 index 7b9139d9..00000000 --- a/tools/completion/gobgpcli-completion.bash +++ /dev/null @@ -1,180 +0,0 @@ -#!bash - -__gobgpcli_q() { - gobgpcli 2>/dev/null "$@" -} - -__search_target() { - local word target c=1 - - while [ $c -lt $cword ]; do - word="${words[c]}" - for target in $1; do - if [ "$target" = "$word" ]; then - echo "$target" - return - fi - done - ((c++)) - done -} - -__gobgpcli_table_list() { - local table_list=("local adj-in adj-out") - local table="$(__search_target "${table_list}")" - if [ -z "$table" ]; then - case "$cur" in - *) - COMPREPLY=( $( compgen -W "${table_list}" -- "$cur") ) - ;; - esac - return - fi - COMPREPLY=( $( compgen -W "ipv4 ipv6 evpn" -- "$cur") ) - return -} - -__gobgpcli_neighbr_list() { - local neighbor_list=( $(__gobgpcli_q show --quiet neighbors) ) - local target="$(__search_target "${neighbor_list[*]}")" - if [ -z "$target" ]; then - case "$cur" in - *) - COMPREPLY=( $( compgen -W "${neighbor_list[*]}" -- "$cur") ) - ;; - esac - __ltrim_colon_completions "$cur" - return 0 - fi - return 1 -} - -_gobgpcli_show_neighbor() { - __gobgpcli_neighbr_list - if [ $? -ne 0 ] ; then - __gobgpcli_table_list - fi -} - -_gobgpcli_show_neighbors() { - case "$cur" in - *) - ;; - esac - return -} - -_gobgpcli_show_global() { - local targets="ipv4 ipv6 evpn" - local target="$(__search_target "$targets")" - if [ -z "$target" ]; then - case "$cur" in - *) - COMPREPLY=( $( compgen -W "${targets[*]}" -- "$cur" ) ) - ;; - esac - return - fi -} - -_gobgpcli_show() { - local targets="neighbor neighbors global" - local target="$(__search_target "$targets")" - if [ -z "$target" ]; then - case "$cur" in - *) - COMPREPLY=( $( compgen -W "${targets[*]}" -- "$cur" ) ) - ;; - esac - return - fi - _gobgpcli_show_${target} -} - -__gobgpcli_generic_reset() { - local targets="neighbor" - local target="$(__search_target "$targets")" - if [ -z "$target" ]; then - case "$cur" in - *) - COMPREPLY=( $( compgen -W "${targets[*]}" -- "$cur" ) ) - ;; - esac - return - fi - __gobgpcli_neighbr_list -} - -_gobgpcli_reset() { - __gobgpcli_generic_reset -} - -_gobgpcli_softresetin() { - __gobgpcli_generic_reset -} - -_gobgpcli_softresetout() { - __gobgpcli_generic_reset -} - -_gobgpcli_shutdown() { - __gobgpcli_generic_reset -} - -_gobgpcli_gobgpcli() { - case "$prev" in - -h) - return - ;; - *) - ;; - esac - - case "$cur" in - -*) - COMPREPLY=( $( compgen -W "-h" -- "$cur" ) ) - ;; - *) - COMPREPLY=( $( compgen -W "${commands[*]} help" -- "$cur" ) ) - ;; - esac -} - -_gobgpcli() { - local commands=( - show - reset - softresetin - softresetout - shutdown - ) - - COMPREPLY=() - local cur prev words cword - _get_comp_words_by_ref -n : cur prev words cword - - local command='gobgpcli' - local counter=1 - while [ $counter -lt $cword ]; do - case "${words[$counter]}" in - -h) - (( counter++ )) - ;; - -*) - ;; - *) - command="${words[$counter]}" - cpos=$counter - (( cpos++ )) - break - ;; - esac - (( counter++ )) - done - local completions_func=_gobgpcli_${command} - declare -F $completions_func > /dev/null && $completions_func - - return 0 -} - -complete -F _gobgpcli gobgpcli -- cgit v1.2.3