mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-10-30 17:50:58 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			54 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| #compdef env genv
 | |
| 
 | |
| local context state line variant args ign ret=1
 | |
| 
 | |
| _pick_variant -r variant gnu=Free\ Soft $OSTYPE --version
 | |
| case $variant in
 | |
|   gnu)
 | |
|     (( $#words > 2 )) && ign='!'
 | |
|     args=(
 | |
|       '(-)'{-i,--ignore-environment}'[start with empty environment]'
 | |
|       '(--ignore-environment -i --help --version)*'{-u+,--unset=}'[remove variable from the environment]:env var to remove:_parameters -g "*export*"'
 | |
|       '(-C --chdir)'{-C+,--chdir=}'[change working directory]:directory:_directories'
 | |
|       '(-S --split-string)'{-S+,--split-string=}'[perform word splitting]:string to split'
 | |
|       '--block-signal=[block delivery of signals to command]:signal:_sequence _signals'
 | |
|       '--default-signal=[reset handling of signals to the default]:signal:_sequence _signals'
 | |
|       '--ignore-signal=[set handling of signals to do nothing]:signal:_sequence _signals'
 | |
|       '--list-signal-handling[list non default signal handling to stderr]'
 | |
|       '(-v --debug)'{-v,--debug}'[print verbose information for each processing step]'
 | |
|       "${ign}(- *)--help[display help information]"
 | |
|       "${ign}(- *)--version[display version information]"
 | |
|     )
 | |
|   ;;
 | |
|   freebsd*|darwin*)
 | |
|     args=(
 | |
|       '(-i)*-u+[remove variable from the environment]:env var to remove:_parameters -g "*export*"'
 | |
|       '-P+[specify alternate executable search PATH]:path:_dir_list'
 | |
|       '-S+[perform word splitting]:string to split'
 | |
|       '*-v[verbose output]'
 | |
|     )
 | |
|   ;&
 | |
|   *)
 | |
|     if (( $words[(i)-] < CURRENT )); then
 | |
|       words[(i)-]=()
 | |
|       (( CURRENT-- ))
 | |
|     else
 | |
|       args+=(
 | |
| 	'(-i)'{-,-i}'[start with empty environment]'
 | |
|       )
 | |
|     fi
 | |
|   ;;
 | |
| esac
 | |
| 
 | |
| _arguments $args \
 | |
|   '*::arguments:->normal' && ret=0
 | |
| 
 | |
| if [[ -n $state ]]; then
 | |
|   while [[ $words[1] = *=* ]]; do
 | |
|     shift words
 | |
|     (( CURRENT-- ))
 | |
|   done
 | |
|   _normal && ret=0
 | |
| fi
 | |
| 
 | |
| return ret
 |