mirror of
https://github.com/systemd/systemd.git
synced 2024-11-01 00:51:24 +03:00
bfc2b05e59
When `--json` option is specified, "status" and "list" commands gives the same information, as originally "list" just gives partial information of "status" in different format.
57 lines
2.1 KiB
Bash
57 lines
2.1 KiB
Bash
#compdef networkctl -*- shell-script -*-
|
|
# SPDX-License-Identifier: LGPL-2.1-or-later
|
|
|
|
(( $+functions[_networkctl_commands] )) ||
|
|
_networkctl_commands() {
|
|
local -a _networkctl_cmds
|
|
_networkctl_cmds=(
|
|
'list:List existing links'
|
|
'status:Show information about the specified links'
|
|
'lldp:Show Link Layer Discovery Protocol status'
|
|
'label:Show address labels'
|
|
'delete:Delete virtual netdevs'
|
|
'up:Bring devices up'
|
|
'down:Bring devices down'
|
|
'renew:Renew dynamic configurations'
|
|
'forcerenew:Trigger DHCP reconfiguration of all connected clients'
|
|
'reconfigure:Reconfigure interfaces'
|
|
'reload:Reload .network and .netdev files'
|
|
)
|
|
if (( CURRENT == 1 )); then
|
|
_describe -t commands 'networkctl command' _networkctl_cmds
|
|
else
|
|
local curcontext="$curcontext"
|
|
local -a _links
|
|
cmd="${${_networkctl_cmds[(r)$words[1]:*]%%:*}}"
|
|
case $cmd in
|
|
(list|status|up|down|lldp|delete|renew|forcerenew|reconfigure)
|
|
_links=( "${(foa)$(networkctl list --no-legend | awk 'BEGIN{OFS=":"} {sub(/[[ \t]+/, ""); print $2,$0}' 2>/dev/null)}" )
|
|
if [[ -n "$_links" ]]; then
|
|
_describe -t links 'links' _links
|
|
else
|
|
_message "no links"
|
|
fi
|
|
;;
|
|
*)
|
|
_message "no more options"
|
|
;;
|
|
esac
|
|
fi
|
|
}
|
|
|
|
(( $+functions[_networkctl_get_json] )) || _networkctl_get_json()
|
|
{
|
|
local -a _json_forms
|
|
_json_forms=( $(networkctl --json=help 2>/dev/null) )
|
|
_values 'format' $_json_forms
|
|
}
|
|
|
|
_arguments \
|
|
{-a,--all}'[Show all links with status]' \
|
|
'--no-pager[Do not pipe output into a pager]' \
|
|
'--no-legend[Do not print the column headers]' \
|
|
{-h,--help}'[Show this help]' \
|
|
'--version[Show package version]' \
|
|
'--json[Shows output formatted as JSON]:format:_networkctl_get_json' \
|
|
'*::networkctl commands:_networkctl_commands'
|