#compdef networkctl
# 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'
