[Bash-completion-commits] [SCM] bash-completion branch, master, updated. 2.0-32-g7f1721d
Guillaume Rousse
guillomovitch at gmail.com
Tue Sep 4 20:42:33 UTC 2012
The following commit has been merged in the master branch:
commit 7f1721dd9064e5685b984975a7819bfe18b8d71b
Author: Guillaume Rousse <guillomovitch at gmail.com>
Date: Tue Sep 4 22:42:29 2012 +0200
nmcli: new completion
diff --git a/CHANGES b/CHANGES
index 496d62b..49b22a0 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,5 +1,6 @@
[ Guillaume Rousse ]
* gphoto2: new completion
+ * nmcli: new completion
bash-completion (2.0)
diff --git a/completions/Makefile.am b/completions/Makefile.am
index 8d59057..a6cba38 100644
--- a/completions/Makefile.am
+++ b/completions/Makefile.am
@@ -107,6 +107,7 @@ bashcomp_DATA = a2x \
gpasswd \
gpg \
gpg2 \
+ gphoto2 \
gprof \
groupadd \
groupdel \
@@ -219,6 +220,7 @@ bashcomp_DATA = a2x \
newlist \
newusers \
nmap \
+ nmcli \
nslookup \
ntpdate \
openssl \
diff --git a/completions/nmcli b/completions/nmcli
new file mode 100644
index 0000000..dc55ebb
--- /dev/null
+++ b/completions/nmcli
@@ -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
diff --git a/test/completion/nmcli.exp b/test/completion/nmcli.exp
new file mode 100644
index 0000000..816468f
--- /dev/null
+++ b/test/completion/nmcli.exp
@@ -0,0 +1 @@
+assert_source_completions nmcli
diff --git a/test/lib/completions/awk.exp b/test/lib/completions/nmcli.exp
similarity index 80%
copy from test/lib/completions/awk.exp
copy to test/lib/completions/nmcli.exp
index 260dabc..b891f45 100644
--- a/test/lib/completions/awk.exp
+++ b/test/lib/completions/nmcli.exp
@@ -11,9 +11,7 @@ proc teardown {} {
setup
-assert_complete_any "awk "
-
-
+assert_complete_any "nmcli "
sync_after_int
--
bash-completion
More information about the Bash-completion-commits
mailing list