# 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