zsh-workers
 help / color / mirror / code / Atom feed
81516b08a6f3df49cd85180ce372da43e7dc73f9 blob 6278 bytes (raw)

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
 
#compdef grep egrep fgrep bsdgrep zgrep zegrep zfgrep ggrep gegrep gfgrep gzgrep gzegrep gzfgrep bzgrep bzegrep bzfgrep -value-,GREP_OPTIONS,-default-

local arguments matchers command variant

if [[ $service = *GREP_OPT* ]]; then
  compset -q
  words=( fake "$words[@]" )
  (( CURRENT++ ))
  command=grep
else
  arguments=( '(-e --regexp -f --file)1: :_guard "^-*" pattern' )
  if [[ $service = z* ]]; then
    arguments+=( '*: :_files -g "*.gz(-.)"' )
  elif [[ $service = bz* ]]; then
    arguments+=( '*: :_files -g "*.bz2(-.)"' )
  else
    arguments+=( '*: :_files' )
  fi
  command="$words[1]"
fi

if [[ $service != (|g|z|gz|bz)[ef]grep ]]; then
  matchers='(--extended-regexp --fixed-strings --basic-regexp --perl-regexp -E -F -G -P)'
  arguments+=(
    $matchers{--extended-regexp,-E}'[use extended regular expression]'
    $matchers{--fixed-strings,-F}'[use literal strings]'
    $matchers{--basic-regexp,-G}'[use basic regular expression]'
  )
fi

arguments+=(
  '(--after-context -A)'{--after-context=,-A+}'[specify lines of trailing context]:lines'
  '(--text -a --binary-files -I)'{--text,-a}'[process binary file as if it were text]'
  '(--before-context -B)'{--before-context=,-B+}'[specify lines of leading context]:lines'
  '(--context -C)'{--context=,-C-}'[specify lines of context]:lines'
  '(--color --colour)--'{color,colour}'=-[distinguish matching string]::when:(always never auto)'
  '(--byte-offset -b -c)'{--byte-offset,-b}'[print the byte offset with output lines]'
  '(--text -a -I)--binary-files=[specify type to assume for binary files]:file type:(binary without-match text)'
  '(--count -c --byte-offset -b --line-number -n)'{--count,-c}'[only print a count of matching lines]'
  '(--directories -d -r --recursive)'{--directories=,-d+}'[specify handling of directories]:action on directory:(read skip recurse)'
  '(--devices -D)'{--devices=,-D+}'[specify handling of devices, FIFOs and sockets]:action on device:(read skip)'
  '(1)*'{--regexp=,-e+}'[specify pattern]:pattern'
  '(1)*'{--file=,-f+}'[specify pattern file]:file:_files'
  '(--with-filename -H --no-filename -h)'{--with-filename,-H}'[print filename with each match]'
  '(--no-filename -h --with-filename -H --null -Z --files-without-match -L --file-with-matches -l)'{--no-filename,-h}'[suppress printing of filenames]'
  '--label=[provide filename to print for stdin]:filename label for stdin'
  '--line-buffered[flush output on every line]'
  '(--text -a --binary-files)-I[process binary files as if non-matching]'
  '(--ignore-case -i -y)'{--ignore-case,-i,-y}'[case-insensitive]'
  '(--files-without-match -L --file-with-matches -l --no-filename -h -o --only-matching)'{--files-without-match,-L}"[output non-matching files' names only]"
  '(--files-with-matches -l --files-without-match -L --no-filename -h -o --only-matching)'{--files-with-matches,-l}"[output matching files' names only]"
  '(--max-count -m)'{--max-count=,-m+}'[stop after specified no of matches in each file]:max number of matches'
  '(--line-number -n -c)'{--line-number,-n}'[prefix output with line numbers]'
  '(--only-matching -o --files-with-matches -l --files-without-match -L)'{--only-matching,-o}'[show only matching part of line]'
  '(--quiet --silent -q)'{--quiet,--silent,-q}'[suppress normal output]'
  '(--recursive -r --dereference-recursive -R -d --directories)'{--recursive,-r}'[recurse subdirectories]'
  '*--include=[examine files matching specified pattern]:file pattern'
  '*--exclude=[skip files matching specified pattern]:file pattern'
  '*--exclude-dir=[skip directories matching specified pattern]:directory pattern'
  '(--no-messages -s)'{--no-messages,-s}'[suppress messages about unreadable]'
  '(--version -V)'{--version,-V}'[display version info]'
  '(--invert-match -v)'{--invert-match,-v}'[select non-matching lines]'
  '(--word-regexp -w --line-regexp -x)'{--word-regexp,-w}'[force pattern to match only whole words]'
  '(--line-regexp -x --word-regexp -w)'{--line-regexp,-x}'[force pattern to match only whole lines]'
  '(-)--help[display help information]'
)

_pick_variant -r variant -c "$command" gnu=gnu gpl2=2.5.1 unix --version
case $variant:$OSTYPE in
  (gnu:*|gpl2:freebsd*))
    [[ $service != (|g|z|gz|bz)[ef]grep ]] && arguments+=(
      $matchers{--perl-regexp,-P}'[use perl regular expression]'
    )
  ;|
  (gnu:*|gpl2:(free|net)bsd*))
    arguments+=(
      '*--exclude-from=[skip files matching pattern in specified file]:file:_files'
      '(-z --null-data)'{-z,--null-data}'[input data separated by 0 byte, not newline]'
    )
  ;|
  gpl2:(freebsd|darwin)*)
    arguments+=(
      '(--null --no-filename -h)--null[print 0 byte after each filename]'
      '(-Z --decompress -J --bz2decompress)'{-J,--bz2decompress}"[decompress bzip2'ed input before searching]"
      '(-Z --decompress -J --bz2decompress)'{-Z,--decompress}"[decompress gzip'ed input before searching]"
    )
  ;|
  gpl2:darwin*)
    arguments+=(
      '(-p -S)-O[follow symlinks on the command line]'
      '(-O -S)-p[do not follow symlinks]'
      '(-O -p)-S[follow all symlinks]'
      '*--include-dir=[only search directories matching specified pattern]:directory pattern'
    )
  ;|
  (gnu:*|gpl2:netbsd*))
    arguments+=(
      '(--null -Z --no-filename -h)'{--null,-Z}'[print 0 byte after each filename]'
    )
  ;|
  gnu:*)
    arguments+=(
      '(--no-group-separator)--group-separator=[specify separator between blocks of context]:separator [--]'
      "(--group-separator)--no-group-separator[don't separate context blocks]"
      '(-T --initial-tab)'{-T,--initial-tab}'[make tabs line up (if needed)]'
      '(--recursive -r --dereference-recursive -R -d --directories)'{--dereference-recursive,-R}'[recurse subdirectories, following symlinks]'
    )
  ;;
  gpl2:*) arguments=( ${${arguments:#*\)-r}/\)-r/\)-R} ) ;;
  *:openbsd*)
    arguments=(
      ${(M)arguments:#((#s)|*\))--(context|binary-files|line-buffered|label|max-count)*}
      ${${arguments:#((#s)|*\))(\*|)-[d-]*}/\)-r/\)-R}
      "-U[search binary files but don't print them]"
      '-Z[behave as zgrep]'
    )
  ;;
  *)
    # remove long options and GNU specific short opts, this is right for solaris
    arguments=( ${arguments:#((#s)|*\))(\*|)-[aABCdDfGHILmorVy-]*} )
  ;;
esac

_arguments -S -s $arguments[@]

debug log:

solving 81516b08a ...
found 81516b08a in https://git.vuxu.org/mirror/zsh/

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).