mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-11-04 07:21:06 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			63 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
#compdef xargs gxargs
 | 
						|
 | 
						|
local args variant
 | 
						|
 | 
						|
args=(
 | 
						|
  '(-l -L --max-lines -n --max-args -s --max-chars)'{-n+,--max-args=}'[specify maximum number of arguments for each line]:number of arguments' \
 | 
						|
  '(-l -L --max-lines -n --max-args -s --max-chars)'{-s+,--max-chars=}'[specify maximum characters per command line]:maximum command line length'
 | 
						|
  '(-p --verbose -t --interactive)'{-p,--interactive}'[prompt user for each command]'
 | 
						|
  '(-p --verbose -t --interactive)'{-t,--verbose}'[verbose - echo each command]'
 | 
						|
  '(-x --exit)'{-x,--exit}'[exit if max size exceeded]'
 | 
						|
)
 | 
						|
 | 
						|
_pick_variant -r variant gnu=GNU $OSTYPE --version
 | 
						|
 | 
						|
case $variant in
 | 
						|
  gnu|darwin*|freebsd*|netbsd*|openbsd*)
 | 
						|
    args+=(
 | 
						|
      '(--max-procs -P)'{-P,--max-procs}'[parallel mode]:maximum processes' '!-r'
 | 
						|
    )
 | 
						|
  ;|
 | 
						|
  dragonfly*|darwin*|freebsd*|netbsd*|openbsd*)
 | 
						|
    args=( "${(@)args:#(|\(*\))(|\*)--*}"
 | 
						|
      '-0[expect NUL characters as input separators]'
 | 
						|
      '-J[specify marker for position of arguments]:marker'
 | 
						|
      '-R[specify maximum arguments that -I will replace in]:replacements'
 | 
						|
    )
 | 
						|
  ;|
 | 
						|
  freebsd*|netbsd*)
 | 
						|
    args+=(
 | 
						|
      '-S[space that -I can use for replacements]:size (bytes) [255]'
 | 
						|
    )
 | 
						|
  ;;
 | 
						|
  solaris*|gnu)
 | 
						|
    args+=(
 | 
						|
      '(-x -I)'{-i-,--replace}'[specify replacement string for command line]::replacement string'
 | 
						|
      '(-n -L -x)-l-[call program for every number of lines]:number of input lines'
 | 
						|
      '(-E -e --eof)'{-e-,--eof=}'[specify EOF marker]:end-of-file marker'
 | 
						|
    )
 | 
						|
  ;|
 | 
						|
  solaris*) args=( "${(@)args:#(|\(*\))(|\*)--*}" ) ;|
 | 
						|
  solaris2.<11->)
 | 
						|
    args+=( '-0[expect NUL characters as input separators]' )
 | 
						|
  ;;
 | 
						|
  gnu)
 | 
						|
    args+=(
 | 
						|
      '(-a --arg-file)'{-a+,--arg-file=}'[read input items from specified file]:file:_files'
 | 
						|
      '(-0 --null -d --delimiter)'{-0,--null}'[expect NUL characters as input separators]'
 | 
						|
      '(-d --delimiter -0 --null)'{-d+,--delimiter=}'[specify delimiter of input items]:delimiter'
 | 
						|
      '(-l -L --max-lines -n --max-args -s --max-chars)--max-lines=-[call program for every number of lines]::number of input lines'
 | 
						|
      '(-r --no-run-if-empty)'{-r,--no-run-if-empty}"[don't run command in absence of input]"
 | 
						|
      '(- *)--help[show help information]'
 | 
						|
      '(- *)--version[show version information]'
 | 
						|
      '--show-limits[show OS imposed limits to command-line length]'
 | 
						|
    )
 | 
						|
  ;;
 | 
						|
esac
 | 
						|
 | 
						|
_arguments -s $args \
 | 
						|
  '-E[specify EOF marker]:end-of-file marker' \
 | 
						|
  '(-x -i)-I[specify replacement string for command line]:replacement string' \
 | 
						|
  '(-n -l)-L[call program for every number of lines]:number of input lines' \
 | 
						|
  '(-):command: _command_names -e' \
 | 
						|
  '*::args: _normal'
 |