]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
Add zsh completion for networkctl (#3062)
authorFelipe Sateler <fsateler@users.noreply.github.com>
Mon, 18 Apr 2016 21:27:42 +0000 (18:27 -0300)
committerDaniel Mack <github@zonque.org>
Mon, 18 Apr 2016 21:27:42 +0000 (23:27 +0200)
shell-completion/zsh/_networkctl [new file with mode: 0644]

diff --git a/shell-completion/zsh/_networkctl b/shell-completion/zsh/_networkctl
new file mode 100644 (file)
index 0000000..a47e967
--- /dev/null
@@ -0,0 +1,35 @@
+#compdef networkctl
+
+_networkctl_command(){
+    local -a _networkctl_cmds
+    _networkctl_cmds=(
+            'list:List existing links'
+           'status:Show information about the specified links'
+           'lldp:Show Link Layer Discovery Protocol status'
+    )
+    if (( CURRENT == 1 )); then
+        _describe -t commands 'networkctl command' _networkctl_cmds
+    else
+        local curcontext="$curcontext"
+        local -a _links
+        cmd="${${_networkctl_cmds[(r)$words[1]:*]%%:*}}"
+        if [ $cmd = "status" ]; then
+            _links=( "${(foa)$(networkctl list --no-legend | awk 'BEGIN{OFS=":"} /^\s/ {sub(/[[ \t]+/, ""); print $2,$0}' 2>/dev/null)}" )
+            if [[ -n "$_links" ]]; then
+                _describe -t links 'links' _links
+            else
+                _message "no links"
+            fi
+        else
+            _message "no more options"
+        fi
+    fi
+}
+
+_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]' \
+    '*::networkctl commands:_networkctl_command'