#compdef socket # Parameter used: # # socket_hosts_ports # The array that contains paris `host:port'. local curcontext="$curcontext" state line expl typeset -A opt_args [[ $CURRENT -eq 2 ]] && _wanted options expl option && { ! _style options prefix-needed || [[ "$PREFIX" = -* ]] } && compadd -M 'r:|[_-]=* r:|=*' "$expl[@]" - -version _arguments -C -s \ '-b[background]' \ '-c[crlf]' \ '-f[fork]' \ '-q[quit]' \ '-r[read only]' \ '-v[verbose]' \ '-w[write only]' \ '-s[server]' \ '-l[loop]' \ '-p[program]:command:->command' \ ':arg1:->arg1' \ ':arg2:->arg2' case "$state" in command) compset -q if [[ $CURRENT -eq 1 ]]; then _command_names -e "$@" else _normal fi ;; arg1) if (( $+opt_args[-s] )); then _wanted ports expl 'port to listen' && _ports "$expl[@]" else _wanted hosts expl 'host' && _combination socket_hosts_ports hosts "$expl[@]" fi ;; arg2) if (( ! $+opt_args[-s] )); then _wanted ports expl 'port to connect' && _combination socket_hosts_ports hosts="${line[2]:q}" ports "$expl[@]" fi ;; esac