summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLubomir Rintel <lkundrak@v3.sk>2016-06-21 12:16:32 +0200
committerLubomir Rintel <lkundrak@v3.sk>2016-06-21 18:40:22 +0200
commit8b39090597159dea52b5ffb760395ab593c7a3dc (patch)
treea53834c8f33ceed707d19d591676d6d561ef5db3
parentc3422e917d75b48bcfde9036caec61bf97d6c312 (diff)
downloadNetworkManager-lr/connection-add.tar.gz
cli: use --complete-args for connection add completionlr/connection-add
And make it incredibly slow at the same time.
-rw-r--r--clients/cli/nmcli-completion236
1 files changed, 2 insertions, 234 deletions
diff --git a/clients/cli/nmcli-completion b/clients/cli/nmcli-completion
index d5bd80de5c..fab5051f73 100644
--- a/clients/cli/nmcli-completion
+++ b/clients/cli/nmcli-completion
@@ -993,240 +993,8 @@ _nmcli()
fi
;;
a|ad|add)
- if [[ ${#words[@]} -eq 3 ]]; then
- _nmcli_compl_COMMAND "${words[2]}" type ifname con-name autoconnect master slave-type
- elif [[ ${#words[@]} -gt 3 ]]; then
- _nmcli_array_delete_at words 0 1
-
- LONG_OPTIONS=(help)
- HELP_ONLY_AS_FIRST=1
- _nmcli_compl_OPTIONS
- case $? in
- 0)
- return 0
- ;;
- 1)
- if [[ "$HELP_ONLY_AS_FIRST" == 1 ]]; then
- _nmcli_compl_COMMAND "${words[2]}" type ifname con-name autoconnect master slave-type
- fi
- return 0
- ;;
- esac
-
- OPTIONS_TYPE=
- OPTIONS=(type ifname con-name autoconnect save master slave-type)
- OPTIONS_MANDATORY=(type ifname)
- COMMAND_ARGS_WAIT_OPTIONS=1
- OPTIONS_MANDATORY_IFNAME=1
- _nmcli_compl_ARGS && return 0
-
- OPTIONS_MANDATORY_IFNAME=
- if _nmcli_array_has_value OPTIONS "${OPTIONS_MANDATORY[@]}"; then
- # we still have some missing mandatory options...
- if [[ "$OPTIONS_UNKNOWN_OPTION" != '' ]]; then
- if ! _nmcli_array_has_value OPTIONS "${OPTIONS_UNKNOWN_OPTION:1}"; then
- # if we encountered an unknown option while having mandatory
- # options, just return.
- return 0
- fi
- fi
- _nmcli_list "$(echo "${OPTIONS[@]}")"
- return 0
- fi
-
- OPTIONS_IP=(ip4 ip6 gw4 gw6)
- OPTIONS_SEP=(--)
- OPTIONS_MANDATORY=()
- case "$OPTIONS_TYPE" in
- 802-3|802-3-|802-3-e|802-3-et|802-3-eth|802-3-ethe|802-3-ether|802-3-ethern|802-3-etherne|802-3-ethernet| \
- e|et|eth|ethe|ether|ethern|etherne|ethernet)
- OPTIONS_TYPE=ethernet
- OPTIONS_TYPED=(mac cloned-mac mtu)
- ;;
- 802-11-w|802-11-wi|802-11-wir|802-11-wire|802-11-wirel|802-11-wirele|802-11-wireles|802-11-wireless| \
- wif|wifi)
- OPTIONS_TYPE=wifi
- OPTIONS_TYPED=(ssid mac cloned-mac mtu mode)
- OPTIONS_MANDATORY=(ssid)
- ;;
- wim|wima|wimax)
- OPTIONS_TYPE=wimax
- OPTIONS_TYPED=(mac nsp)
- ;;
- g|gs|gsm)
- OPTIONS_TYPE=gsm
- OPTIONS_TYPED=(apn user password)
- OPTIONS_MANDATORY=(apn)
- ;;
- c|cd|cdm|cdma)
- OPTIONS_TYPE=cdma
- OPTIONS_TYPED=(user password)
- ;;
- i|in|inf|infi|infin|infini|infinib|infiniba|infiniban|infiniband)
- OPTIONS_TYPE=infiniband
- OPTIONS_TYPED=(mac mtu transport-mode parent p-key)
- ;;
- bl|blu|blue|bluet|blueto|bluetoo|bluetoot|bluetooth)
- OPTIONS_TYPE=bluetooth
- OPTIONS_TYPED=(addr bt-type)
- ;;
- vl|vla|vlan)
- OPTIONS_TYPE=vlan
- OPTIONS_TYPED=(dev id flags ingress egress mtu)
- OPTIONS_MANDATORY=(dev)
- ;;
- bond)
- OPTIONS_TYPE=bond
- OPTIONS_TYPED=(mode miimon downdelay updelay arp-interval arp-ip-target primary lacp-rate)
- ;;
- team)
- OPTIONS_TYPE=team
- OPTIONS_TYPED=(config)
- ;;
- bridge)
- OPTIONS_TYPE=bridge
- OPTIONS_TYPED=(stp priority forward-delay hello-time max-age ageing-time mac)
- ;;
- vp|vpn)
- OPTIONS_TYPE=vpn
- OPTIONS_TYPED=(vpn-type user)
- OPTIONS_MANDATORY=(vpn-type)
- ;;
- 802-11-o|802-11-ol|802-11-olp|802-11-olpc|802-11-olpc-|802-11-olpc-m|802-11-olpc-me|802-11-olpc-mes|802-11-olpc-mesh| \
- o|ol|olp|olpc|olpc-|olpc-m|olpc-me|olpc-mes|olpc-mesh)
- OPTIONS_TYPE=olpc-mesh
- OPTIONS_TYPED=(ssid channel dhcp-anycast)
- OPTIONS_MANDATORY=(ssid)
- ;;
- p|pp|ppp|pppo|pppoe)
- OPTIONS_TYPE=pppoe
- OPTIONS_TYPED=(username password service mtu mac)
- OPTIONS_MANDATORY=(username)
- ;;
- a|ad|ads|adsl)
- OPTIONS_TYPE=adsl
- OPTIONS_TYPED=(username password protocol encapsulation)
- OPTIONS_MANDATORY=(username protocol)
- ;;
- tu|tun)
- OPTIONS_TYPE=tun
- OPTIONS_TYPED=(mode owner group pi vnet-hdr multi-queue)
- OPTIONS_MANDATORY=(mode)
- ;;
- ip|ip-|ip-t|ip-tu|ip-tun|ip-tunn|ip-tunne|ip-tunnel)
- OPTIONS_TYPE=ip-tunnel
- OPTIONS_TYPED=(mode remote local dev)
- OPTIONS_MANDATORY=(mode remote)
- ;;
- m|ma|mac|macv|macvl|macvla|macvlan)
- OPTIONS_TYPE=macvlan
- OPTIONS_TYPED=(dev mode tap)
- OPTIONS_MANDATORY=(dev mode)
- ;;
- vx|vxl|vxla|vxlan)
- OPTIONS_TYPE=vxlan
- OPTIONS_TYPED=(id remote local dev source-port-min source-port-max destination-port)
- OPTIONS_MANDATORY=(id remote)
- ;;
- *)
- # for an unknown connection type, we stop completion here
- return 0
- ;;
- esac
- if [[ "$COMMAND_ARGS_WAIT_OPTIONS" -ne 1 ]]; then
- # means, we are at the end of options. Nothing more to parse, just show
- # what are the options now.
- if [[ "${#OPTIONS_MANDATORY[@]}" -gt 0 ]]; then
- _nmcli_list "$(echo "${OPTIONS[@]}") $(echo "${OPTIONS_TYPED[@]}")"
- else
- _nmcli_list "$(echo "${OPTIONS[@]}") $(echo "${OPTIONS_TYPED[@]}") $(echo "${OPTIONS_IP[@]}") $(echo "${OPTIONS_SEP[@]}")"
- fi
- return 0
- fi
- if [[ "${#OPTIONS[@]}" -gt 0 ]]; then
- # we still have some options from before, but no mandatory ones. Mix them with OPTIONS_TYPED
- # and continue parsing the options...
- OPTIONS=("${OPTIONS[@]}" "${OPTIONS_TYPED[@]}")
- OPTIONS_NEXT_GROUP=("${OPTIONS_TYPED[@]}")
- _nmcli_compl_ARGS && return 0
-
- if [[ "$COMMAND_ARGS_WAIT_OPTIONS" -ne 1 ]]; then
- # means, we are at the end of options. Nothing more to parse, just show
- # what are the options now.
- if [[ "${#OPTIONS_MANDATORY[@]}" -gt 0 ]]; then
- _nmcli_list "$(echo "${OPTIONS[@]}")"
- else
- _nmcli_list "$(echo "${OPTIONS[@]}") $(echo "${OPTIONS_IP[@]}") $(echo "${OPTIONS_SEP[@]}")"
- fi
- return 0
- fi
-
- if [[ "$OPTIONS_UNKNOWN_OPTION" != "" ]]; then
- # there was an unknown option specified. Maybe we have to stop with the completion.
- if [[ "${#OPTIONS_MANDATORY[@]}" -gt 0 ]]; then
- # we have an unknown option, but still mandatory ones that must be fullfiled first.
- return 0
- fi
- if ! (_nmcli_array_has_value OPTIONS_IP "${OPTIONS_UNKNOWN_OPTION:1}" ||
- _nmcli_array_has_value OPTIONS_SEP "${OPTIONS_UNKNOWN_OPTION:1}"); then
- # the unknown option is neither an IP option nor a separator.
- return 0
- fi
- # The unknown option is an IP option or a separator, which is fine... continue...
- fi
-
- fi
- OPTIONS=("${OPTIONS_TYPED[@]}")
- OPTIONS_NEXT_GROUP=()
-
- if [[ "${#OPTIONS_MANDATORY[@]}" -ge 1 ]]; then
- # we have some mandatory options... don't check for IP options yet...
- _nmcli_compl_ARGS && return 0
-
- if _nmcli_array_has_value OPTIONS "${OPTIONS_MANDATORY[@]}"; then
- _nmcli_list "$(echo "${OPTIONS[@]}")"
- return 0
- fi
-
- if [[ "$OPTIONS_UNKNOWN_OPTION" != "" ]]; then
- if ! (_nmcli_array_has_value OPTIONS_IP "${OPTIONS_UNKNOWN_OPTION:1}" ||
- _nmcli_array_has_value OPTIONS_SEP "${OPTIONS_UNKNOWN_OPTION:1}"); then
- # the unknown option is neither an IP option nor a separator.
- return 0
- fi
- fi
- fi
-
-
- # no mandatory options... do final completion including IP options
- OPTIONS=("${OPTIONS[@]}" "${OPTIONS_IP[@]}" "${OPTIONS_SEP[@]}")
- OPTIONS_NEXT_GROUP=("${OPTIONS_IP[@]}" "${OPTIONS_SEP[@]}")
- _nmcli_compl_ARGS && return 0
-
- if [[ "$OPTIONS_UNKNOWN_OPTION" != "" ]]; then
- return 0
- fi
-
- if [[ "$COMMAND_ARGS_WAIT_OPTIONS" -ne 1 ]]; then
- # means, we are at the end of options. Nothing more to parse, just show
- # what are the options now.
- _nmcli_list "$(echo "${OPTIONS[@]}")"
- return 0
- fi
-
-
- # process the last group of options, as the OPTIONS_TYPED are already handled...
- OPTIONS=("${OPTIONS_IP[@]}" "${OPTIONS_SEP[@]}")
- OPTIONS_NEXT_GROUP=("${OPTIONS_SEP[@]}")
- COMMAND_ARGS_WAIT_OPTIONS=0
- _nmcli_compl_ARGS && return 0
-
- _nmcli_array_delete_at words 0
- _nmcli_compl_PROPERTIES type "$OPTIONS_TYPE"
-
- return 0
-
- fi
+ _nmcli_array_delete_at words 0 1
+ _nmcli_list_nl "$(nmcli --complete-args connection add "${words[@]}" 2>/dev/null)"
;;
e|ed|edi|edit)
if [[ ${#words[@]} -eq 3 ]]; then