#compdef dpkg-parsechangelog

local -a args
args=(
  '(-l --file)'{-l+,--file=}'[specify path to d/changelog]: :_files'
  # Note: We have to use "= " since _perl_modules in zsh ≤5.8 assumes ${words[1]} is a perl. (See workers/48321)
  '-F+[specify changelog format]:changelog format:= _perl_modules --strip-prefix --perl-hierarchy=Dpkg\:\:Changelog'
  '!-L+'
  '(-S --show-field)'{-S+,--show-field=}'[show only one field]:changelog field:(Source Version Distribution Urgency Maintainer Date Timestamp Closes Changelog)'
  '(-)'{-\?,--help}'[show the usage message]'
  '(-)--version[show the version information]'
  '--format=[set the output format]:output format:((dpkg\:classic rfc822))'
  '(--all)--reverse[print all changes, oldest to newest]'
  '(--reverse)--all[print all changes, newest to oldest]'
  # TODO: all these should complete version numbers from ${(Q)opt_args[-l]:-debian/changelog}
  '(-s --since -v)'{-s+,--since=,-v+}'[specify strict lower bound]:version number'
  '(-u --until)'{-u+,--until=}'[specify strict upper bound]:version number'
  '(-f --from)'{-f+,--from=}'[specify weak lower bound]:version number'
  '(-t --to)'{-t+,-to=}'[specify weak upper bound]:version number'
  '(-c --count -n)'{-c+,-n+,--count=}'[specify number of entries to print]:limit (integer)'
  '(-o --offset)'{-o+,--offset=}'[offset the number of entries to print]:offset (integer)'
)
_arguments : "${args[@]}"
