summaryrefslogtreecommitdiffstats
path: root/completions/_nmcli
diff options
context:
space:
mode:
Diffstat (limited to 'completions/_nmcli')
-rw-r--r--completions/_nmcli201
1 files changed, 201 insertions, 0 deletions
diff --git a/completions/_nmcli b/completions/_nmcli
new file mode 100644
index 0000000..eac285b
--- /dev/null
+++ b/completions/_nmcli
@@ -0,0 +1,201 @@
+# nmcli completion -*- shell-script -*-
+
+# Use of this file is deprecated. Upstream completion is available in
+# NetworkManager >= 0.9.8.0, use that instead.
+
+_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
+ ;;
+ -f | --fields)
+ COMPREPLY=($(compgen -W 'all common' -- "$cur"))
+ return
+ ;;
+ -e | --escape)
+ _nmcli_list "yes no"
+ return
+ ;;
+ id)
+ _nmcli_con_id
+ return
+ ;;
+ uuid)
+ _nmcli_con_uuid
+ return
+ ;;
+ iface)
+ _available_interfaces
+ return
+ ;;
+ bssid)
+ _nmcli_ab_bssid
+ return
+ ;;
+ wep-key-type)
+ _nmcli_list "key phrase"
+ return
+ ;;
+ esac
+
+ if ((cword == 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
+ ;;
+ sleep)
+ _nmcli_list "true false"
+ return
+ ;;
+ wifi)
+ _nmcli_list "on off"
+ return
+ ;;
+ wwan)
+ _nmcli_list "on off"
+ return
+ ;;
+ wimax)
+ _nmcli_list "on off"
+ return
+ ;;
+ esac
+
+ COMPREPLY=($(compgen -W 'status permissions enable sleep
+ wifi wwan wimax' -- "$cur"))
+ ;;
+ con)
+ case $command in
+ list)
+ COMPREPLY=($(compgen -W 'id uuid' -- "$cur"))
+ return
+ ;;
+ up)
+ if [[ $cur == -* ]]; then
+ COMPREPLY=($(compgen -W '--nowait --timeout' \
+ -- "$cur"))
+ else
+ COMPREPLY=($(compgen -W 'id uuid iface ap nsp' \
+ -- "$cur"))
+ fi
+ return
+ ;;
+ down)
+ COMPREPLY=($(compgen -W 'id uuid' -- "$cur"))
+ return
+ ;;
+ delete)
+ COMPREPLY=($(compgen -W 'id uuid' -- "$cur"))
+ return
+ ;;
+ esac
+
+ COMPREPLY=($(compgen -W 'list status up down delete' \
+ -- "$cur"))
+ ;;
+ dev)
+ case $command in
+ list)
+ COMPREPLY=($(compgen -W 'iface' -- "$cur"))
+ return
+ ;;
+ disconnect)
+ if [[ $cur == -* ]]; then
+ COMPREPLY=($(compgen -W '--nowait --timeout' \
+ -- "$cur"))
+ else
+ COMPREPLY=($(compgen -W 'iface' -- "$cur"))
+ fi
+ return
+ ;;
+ wifi)
+ local subcommand=${words[3]}
+
+ case $subcommand in
+ list)
+ COMPREPLY=($(compgen -W 'iface bssid' \
+ -- "$cur"))
+ return
+ ;;
+ 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
+ ;;
+ esac
+
+ COMPREPLY=($(compgen -W 'list connect' -- "$cur"))
+ return
+ ;;
+ esac
+
+ COMPREPLY=($(compgen -W 'status list disconnect wifi' \
+ -- "$cur"))
+ ;;
+ esac
+
+ fi
+
+} &&
+ complete -F _nmcli nmcli
+
+# ex: filetype=sh