mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-10-31 18:10:56 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			112 lines
		
	
	
	
		
			3.2 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			112 lines
		
	
	
	
		
			3.2 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| #compdef ypcat ypmatch yppasswd ypwhich ypset ypserv ypbind yppush yppoll ypxfr domainname
 | |
| 
 | |
| local curcontext="$curcontext" line state expl ret=1
 | |
| typeset -A opt_args
 | |
| 
 | |
| if (( ! $+_yp_cache_maps )); then
 | |
|   _yp_cache_maps=( "${(@)${(@f)$(_call_program maps ypwhich -m)}%% *}" )
 | |
|   _yp_cache_nicks=( "${(@)${(@)${(@f)$(_call_program names ypwhich -x)}#*\"}%%\"*}" )
 | |
|   _yp_args=(
 | |
|     '(-x)-d[specify domain]:domain name' \
 | |
|     '(-x)-k[display keys]' \
 | |
|     '(-x)-t[inhibit nicknames]' \
 | |
|     '(: -d -k -t)-x[display nicknames]' \
 | |
|   )
 | |
| fi
 | |
| 
 | |
| case "$service" in
 | |
| ypcat)
 | |
|   _arguments -C -s "$_yp_args[@]" ':map name:->map' && ret=0
 | |
|   ;;
 | |
| ypmatch)
 | |
|   _arguments -C -s "$_yp_args[@]" '::key map:->keymap' ':map name:->map' && 
 | |
|     ret=0
 | |
|   ;;
 | |
| yppasswd)
 | |
|   _users
 | |
|   return
 | |
|   ;;
 | |
| ypwhich)
 | |
|   _arguments -C \
 | |
|     '(-x)-d[specify domain]:domain name' \
 | |
|     '(-x -V2 -m -t)-V1[identify version 1 servers]' \
 | |
|     '(-x -V1 -m -t)-V2[identify version 2 servers]' \
 | |
|     '(: -x -V1 -V2 -m)-t[specify map name]:map name:->maponly' \
 | |
|     '(: -x -V1 -V2 -t)-m[specify map or nick name]:map or nick name:->map' \
 | |
|     '(: -d -m -t -V1 -V2)-x[display nicknames]' \
 | |
|     ':host:_hosts' && ret=0
 | |
|   ;;
 | |
| ypset)
 | |
|   _arguments -C \
 | |
|     '(-V2)-V1[bind version 1 servers]' \
 | |
|     '(-V1)-V2[bind version 2 servers]' \
 | |
|     '-d[specify domain]:domain name' \
 | |
|     '-h[set NIS binding on specified host]:host:_hosts' \
 | |
|     ':server:_hosts' && ret=0
 | |
|     ;;
 | |
| ypserv)
 | |
|   _arguments -C \
 | |
|     '-a[specify database routines]:database routines:((b\:btree d\:dbm/ndbm h\:hash))' && ret=0
 | |
|   ;;
 | |
| ypbind)
 | |
|   _arguments -C \
 | |
|     '-s[allow secure mode for ypbind]' \
 | |
|     '-S[set domain and servers]:domain:->servers' \
 | |
|     '(-ypsetme)-ypset[accept all ypset requests]' \
 | |
|     '(-ypset)-ypsetme[accept only local ypset requests]' && ret=0
 | |
|   ;;
 | |
| yppush)
 | |
|   _arguments -C \
 | |
|     '-d[specify domain]:domain name' \
 | |
|     '-v[print messages]' \
 | |
|     ':map name:->map' && ret=0
 | |
|   ;;
 | |
| yppoll)
 | |
|   _arguments -C \
 | |
|     '-d[specify domain]:domain name' \
 | |
|     '-h[ask specified yp server]:host:_hosts' \
 | |
|     ':map name:->map' && ret=0
 | |
|   ;;
 | |
| ypxfr)
 | |
|   _arguments -C \
 | |
|     '-a[specify database routines]:database routines:((b\:btree d\:dbm/ndbm h\:hash))' \
 | |
|     '-f[force transfer]' \
 | |
|     "-c[don't clear current map]" \
 | |
|     '-d[specify domain]:domain name' \
 | |
|     '-h[get map from specified host instead of master]:host:_hosts' \
 | |
|     '-C[call back]:transaction ID: :program number: :IP address: :port number' \
 | |
|     ':map name:->map' && ret=0
 | |
|   ;;
 | |
| domainname)
 | |
|   _message -e new-domains 'new domain name'
 | |
|   return 1
 | |
|   ;;
 | |
| esac
 | |
| 
 | |
| [[ "$state" = keymap ]] && _message -e keys 'key'
 | |
| 
 | |
| if [[ "$state" = map* ]]; then
 | |
|   if [[ $+opt_args[-t] -eq 0 && "$state" != maponly ]]; then
 | |
|     _tags maps nicknames
 | |
|   else
 | |
|     _tags maps
 | |
|   fi
 | |
| 
 | |
|   while _tags; do
 | |
|     # The `-M ...' allows `pa.n<TAB>' to complete to `passwd.byname'.
 | |
|     _requested maps expl 'map name' \
 | |
|         compadd -M 'l:.|by=by l:.|=by r:|.=* r:|=*' -a \
 | |
|                 _yp_cache_maps && ret=0
 | |
|     _requested nicknames expl nicknames \
 | |
|         compadd -a _yp_cache_nicks && ret=0
 | |
|     (( ret )) || return 0
 | |
|   done
 | |
| elif [[ "$state" = servers ]]; then
 | |
|   if compset -P '*,'; then
 | |
|     _wanted hosts expl server _hosts -qS, && ret=0
 | |
|   else
 | |
|     _message -e domains 'domain name'
 | |
|   fi
 | |
| fi
 | |
| 
 | |
| return ret
 |