Skip to content

Commit

Permalink
Revert "nmcli completion was integrated upstream"
Browse files Browse the repository at this point in the history
This reverts commit 580a4cf.
  • Loading branch information
scop committed Apr 9, 2013
1 parent 580a4cf commit cdd2c3d
Show file tree
Hide file tree
Showing 5 changed files with 226 additions and 2 deletions.
1 change: 1 addition & 0 deletions completions/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -230,6 +230,7 @@ bashcomp_DATA = a2x \
newusers \
ngrep \
nmap \
nmcli \
nslookup \
ntpdate \
openssl \
Expand Down
199 changes: 199 additions & 0 deletions completions/nmcli
Original file line number Diff line number Diff line change
@@ -0,0 +1,199 @@
# nmcli completion -*- shell-script -*-

_nmcli_list()
{
COMPREPLY=( $( compgen -W '$1' -- "$cur" ) )
}

_nmcli_con_id()
{
local IFS=$'\n'
COMPREPLY=( $( compgen -W "$(nmcli con list 2>/dev/null | \
tail -n +2 | awk -F ' {2,}' '{print $1 }')" -- "$cur" ) )
}

_nmcli_con_uuid()
{
COMPREPLY=( $( compgen -W "$(nmcli con list 2>/dev/null | \
tail -n +2 | awk -F ' {2,}' '{print $2}')" -- "$cur" ) )
}

_nmcli_ap_ssid()
{
local IFS=$'\n'
COMPREPLY=( $( compgen -W "$(nmcli dev wifi list 2>/dev/null | \
tail -n +2 | awk -F ' {2,}' '{print $1}')" -- "$cur" ) )
}

_nmcli_ab_bssid()
{
COMPREPLY=( $( compgen -W "$(nmcli dev wifi list 2>/dev/null | \
tail -n +2 | awk -F ' {2,}' '{print $2}')" -- "$cur" ) )
}

_nmcli()
{
local cur prev words cword
_init_completion || return

case $prev in
-m|--mode)
COMPREPLY=( $( compgen -W 'tabular multiline' -- "$cur" ) )
return 0
;;
-f|--fields)
COMPREPLY=( $( compgen -W 'all common' -- "$cur" ) )
return 0
;;
-e|--escape)
_nmcli_list "yes no"
return 0
;;
id)
_nmcli_con_id
return 0
;;
uuid)
_nmcli_con_uuid
return 0
;;
iface)
_available_interfaces
return 0
;;
bssid)
_nmcli_ab_bssid
return 0
;;
wep-key-type)
_nmcli_list "key phrase"
return 0
;;
esac

if [[ $cword -eq 1 ]] ; then
if [[ "$cur" == -* ]]; then
COMPREPLY=( $( compgen -W '--terse --pretty --mode --fields
--escape --version --help' -- "$cur" ) )
else
COMPREPLY=( $( compgen -W "nm con dev" -- "$cur" ) )
fi
else
local object=${words[1]}
local command=${words[2]}

case $object in
nm)
case $command in
enable)
_nmcli_list "true false"
return 0
;;
sleep)
_nmcli_list "true false"
return 0
;;
wifi)
_nmcli_list "on off"
return 0
;;
wwan)
_nmcli_list "on off"
return 0
;;
wimax)
_nmcli_list "on off"
return 0
;;
esac

COMPREPLY=( $( compgen -W 'status permissions enable sleep
wifi wwan wimax' -- "$cur" ) )
;;
con)
case $command in
list)
COMPREPLY=( $( compgen -W 'id uuid' -- "$cur" ) )
return 0
;;
up)
if [[ "$cur" == -* ]]; then
COMPREPLY=( $( compgen -W '--nowait --timeout' \
-- "$cur" ) )
else
COMPREPLY=( $( compgen -W 'id uuid iface ap nsp' \
-- "$cur" ) )
fi
return 0
;;
down)
COMPREPLY=( $( compgen -W 'id uuid' -- "$cur" ) )
return 0
;;
delete)
COMPREPLY=( $( compgen -W 'id uuid' -- "$cur" ) )
return 0
;;
esac

COMPREPLY=( $( compgen -W 'list status up down delete' \
-- "$cur" ) )
;;
dev)
case $command in
list)
COMPREPLY=( $( compgen -W 'iface' -- "$cur" ) )
return 0
;;
disconnect)
if [[ "$cur" == -* ]]; then
COMPREPLY=( $( compgen -W '--nowait --timeout' \
-- "$cur" ) )
else
COMPREPLY=( $( compgen -W 'iface' -- "$cur" ) )
fi
return 0
;;
wifi)
local subcommand=${words[3]}

case $subcommand in
list)
COMPREPLY=( $( compgen -W 'iface bssid' \
-- "$cur" ) )
return 0
;;
connect)
if [[ "$cur" == -* ]]; then
COMPREPLY=( $( compgen -W '--private
--nowait --timeout' -- "$cur" ) )
else
if [[ "$prev" == "connect" ]]; then
_nmcli_ap_ssid
else
COMPREPLY=( $( compgen -W 'password
wep-key-type iface bssid name' \
-- "$cur" ) )
fi
fi
return 0
;;
esac

COMPREPLY=( $( compgen -W 'list connect' -- "$cur" ) )
return 0
;;
esac

COMPREPLY=( $( compgen -W 'status list disconnect wifi' \
-- "$cur" ) )
;;
esac

fi

return 0
} &&
complete -F _nmcli nmcli

# ex: ts=4 sw=4 et filetype=sh
9 changes: 7 additions & 2 deletions completions/postconf
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,13 @@ _postconf()
return 0
fi

COMPREPLY=( $( compgen -W "$( /usr/sbin/postconf | awk '{print $1}' )" -- "$cur" ) )

local len=${#cur} idx=0 pval
for pval in $( /usr/sbin/postconf 2>/dev/null | cut -d ' ' -f 1 ); do
if [[ "$cur" == "${pval:0:$len}" ]]; then
COMPREPLY[$idx]="$pval$eqext"
idx=$(($idx+1))
fi
done
return 0
} &&
complete -F _postconf postconf
Expand Down
1 change: 1 addition & 0 deletions test/completion/nmcli.exp
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
assert_source_completions nmcli
18 changes: 18 additions & 0 deletions test/lib/completions/nmcli.exp
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
proc setup {} {
save_env
}


proc teardown {} {
assert_env_unmodified
}


setup


assert_complete_any "nmcli "
sync_after_int


teardown

0 comments on commit cdd2c3d

Please sign in to comment.