summaryrefslogtreecommitdiffhomepage
path: root/tools/completion
diff options
context:
space:
mode:
authorNaoto Hanaue <hanaue.naoto@po.ntts.co.jp>2015-04-21 19:22:10 +0900
committerFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>2015-04-22 18:12:51 +0900
commit72674df91700c660d30f75c36e52e428427b5b0a (patch)
tree4c01a7d362ecc41bd822dcf5fab6c6b80bb61120 /tools/completion
parente8ff6de23a4b30af2aa495afadfb27d3afa7efcb (diff)
api: update bash completion of cli client
Diffstat (limited to 'tools/completion')
-rw-r--r--tools/completion/gobgp-completion.bash178
1 files changed, 68 insertions, 110 deletions
diff --git a/tools/completion/gobgp-completion.bash b/tools/completion/gobgp-completion.bash
index b9e0c483..acf47858 100644
--- a/tools/completion/gobgp-completion.bash
+++ b/tools/completion/gobgp-completion.bash
@@ -8,129 +8,88 @@ __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++))
+ 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
+ local targets=("local adj-in adj-out reset softreset softresetin softresetout shutdown enable disable")
+ local target="$(__search_target "$targets")"
+ if [ -z "$target" ]; then
+ case "$cur" in
+ *)
+ COMPREPLY=( $( compgen -W "${targets[*]}" -- "$cur") )
+ ;;
+ esac
+ return
fi
- COMPREPLY=( $( compgen -W "ipv4 ipv6 evpn" -- "$cur") )
return
}
__gobgp_neighbr_list() {
- local neighbor_list=( $(__gobgp_q --quiet show neighbors) )
+ local url=""
+ local port=""
+ if [ ! -z "$gobgp_ip" ]; then
+ url="-u $gobgp_ip"
+ fi
+ if [ ! -z "$gobgp_port" ]; then
+ port="-p $gobgp_port"
+ fi
+ local neighbor_list=( $(__gobgp_q $url $port --quiet neighbor) )
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
+ 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"
+_gobgp_global_rib(){
+ local targets="add del"
local target="$(__search_target "$targets")"
if [ -z "$target" ]; then
- case "$cur" in
- *)
- COMPREPLY=( $( compgen -W "${targets[*]}" -- "$cur" ) )
- ;;
- esac
- return
+ case "$cur" in
+ *)
+ COMPREPLY=( $( compgen -W "${targets[*]}" -- "$cur" ) )
+ ;;
+ esac
+ return
fi
- _gobgp_show_${target}
}
-__gobgp_generic_reset() {
- local targets="neighbor"
+_gobgp_global() {
+ local targets="rib"
local target="$(__search_target "$targets")"
if [ -z "$target" ]; then
- case "$cur" in
- *)
- COMPREPLY=( $( compgen -W "${targets[*]}" -- "$cur" ) )
- ;;
- esac
- return
+ case "$cur" in
+ *)
+ COMPREPLY=( $( compgen -W "${targets[*]}" -- "$cur" ) )
+ ;;
+ esac
+ return
fi
- __gobgp_neighbr_list
-}
-
-_gobgp_reset() {
- __gobgp_generic_reset
+ _gobgp_global_${target}
}
-_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_neighbor() {
+ __gobgp_neighbr_list
+ if [ $? -ne 0 ] ; then
+ __gobgp_table_list
+ fi
-_gobgp_disable() {
- __gobgp_generic_reset
}
_gobgp_gobgp() {
@@ -147,21 +106,15 @@ _gobgp_gobgp() {
COMPREPLY=( $( compgen -W "-h" -- "$cur" ) )
;;
*)
- COMPREPLY=( $( compgen -W "${commands[*]} help" -- "$cur" ) )
+ COMPREPLY=( $( compgen -W "${commands[*]} " -- "$cur" ) )
;;
esac
}
_gobgp() {
local commands=(
- show
- reset
- softreset
- softresetin
- softresetout
- shutdown
- enable
- disable
+ global
+ neighbor
)
COMPREPLY=()
@@ -172,9 +125,14 @@ _gobgp() {
local counter=1
while [ $counter -lt $cword ]; do
case "${words[$counter]}" in
- -h)
- (( counter++ ))
- ;;
+ -u)
+ (( counter++ ))
+ gobgp_ip="${words[$counter]}"
+ ;;
+ -p)
+ (( counter++ ))
+ gobgp_port="${words[$counter]}"
+ ;;
-*)
;;
*)
@@ -192,4 +150,4 @@ _gobgp() {
return 0
}
-complete -F _gobgp gobgp
+complete -F _gobgp gobgp \ No newline at end of file