mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-10-13 11:21:13 +02:00
59 lines
1.1 KiB
Text
59 lines
1.1 KiB
Text
#compdef socket
|
|
|
|
# Parameter used:
|
|
#
|
|
# socket_hosts_ports
|
|
# The array that contains paris `host:port'.
|
|
|
|
local state line expl
|
|
typeset -A options
|
|
|
|
if [[ $CURRENT -eq 2 && (
|
|
-z "$compconfig[option_prefix]" ||
|
|
"$compconfig[option_prefix]" = *\!${words[1]}* ||
|
|
"$PREFIX" = -* ) ]]; then
|
|
_description expl option
|
|
compadd -M 'r:|[_-]=* r:|=*' "$expl[@]" - -version
|
|
fi
|
|
|
|
_arguments -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 (( $+options[-s] )); then
|
|
_description expl 'port to listen'
|
|
_ports "$expl[@]"
|
|
else
|
|
_description expl 'host'
|
|
_combination socket_hosts_ports hosts "$expl[@]"
|
|
fi
|
|
;;
|
|
|
|
arg2)
|
|
if (( ! $+options[-s] )); then
|
|
_description expl 'port to connect'
|
|
_combination socket_hosts_ports hosts="${line[2]:q}" ports "$expl[@]"
|
|
fi
|
|
;;
|
|
esac
|