#compdef jq

# last updated for jq-1.5-1-a5b5cbe (debian package 1.5+dfsg-1.3)

# Note:
#   Arguments to options must be in separate words.  Thus,
#     {-f,--from-file}'[foo]'
#   is correct like that, without the usual {-f+,--from-file=} suffixes.
#
_arguments -S -s : \
  "--version[output jq's version number]" \
  "--seq[use application/json-seq ASCII RS/LF scheme in input and output]" \
  "--stream[parse input streamily (changes output)]" \
  '(-s --slurp)'{-s,--slurp}'[join input JSON objects to array before filtering]' \
  '(-R --raw-input)'{-R,--raw-input}'[consider each input line as a JSON strings]' \
  '(-n --null-input)'{-n,--null-input}'[input is ignored]' \
  '(-c --compact-output)'{-c,--compact-output}"[don't pretty-print]" \
  '(--indent)--tab[indent output using TAB characters]' \
  '(--tab)--indent[indent output using given number of spaces]:number of spaces (integer):(2 4 8)' \
  '(-C --color-output -M --monochrome-output)'{-C,--color-output}'[output in color]' \
  '(-C --color-output -M --monochrome-output)'{-M,--monochrome-output}'[output without color]' \
  '(-a --ascii-output)'{-a,--ascii-output}'[restrict output to ASCII]' \
  '--unbuffered[flush output after each JSON object]' \
  '(-S --sort-keys)'{-S,--sort-keys}'[output object keys in sorted order]' \
  '(-r --raw-output -j --join-output)'{-r,--raw-output}"[don't JSON-quote output if it's a string]" \
  '(-r --raw-output -j --join-output)'{-j,--join-output}"[like -r, without newlines between outputs]" \
  '(-f --from-file)'{-f,--from-file}'[read filter from file]:_files' \
  '-L+[prepend a directory to the module search path]:_directories' \
  '(-e --exit-status)'{-e,--exit-status}'[report "false" and "null" results via exit code]' \
  '*--arg[pre-set a variable to a string]: :_guard "|[A-Za-z][A-Za-z0-9]#" "variable name":value (string): ' \
  '*--argjson[pre-set a variable to an object]: :_guard "|[A-Za-z][A-Za-z0-9]#" "variable name":value (JSON): ' \
  '*--slurpfile[pre-set a variable to contents of a file]: :_guard "|[A-Za-z][A-Za-z0-9]#" "variable name":value (filename of file containing JSON):_files' \
  "1: :_guard '|[^-]' filter" \
  "*: :_files"
