#compdef sed

local args

args=(
  '(-n --quiet --silent)'{-n,--quiet,--silent}'[suppress automatic printing of pattern space]'
  '(1)*'{-e,--expression=-}'[add sed commands to run]:sed script'
  '(1)*'{-f,--file=-}'[add contents of file to commands to run]:file:_files'
  '(-e)1: :_guard "^-*" sed script'
  '*:input file:_files'
)

if _pick_variant gnu=GNU unix --version; then
  args+=(
    '--follow-symlinks[follow symlinks when processing in place]'
    '(-i --in-place)'{-i-,--in-place=-}'[edit files in place]::suffix for backup'
    '(-l --line-length)'{-l,--line-length=-}'[specify line-wrap length for the l command]'
    '(-r)--posix[disable GNU extensions]'
    '(-r --regexp-extended)'{-r,--regexp-extended}'[use extended regular expressions]'
    '(-s --separate)'{-s,--separate}'[consider files separately instead of as a combined stream]'
    '(-u --unbuffered)'{-u,--unbuffered}'[disable data buffering]'
    '(- 1 :)--help[print program usage]'
    '(- 1 :)'{-V,--version}'[print program version]'
  )
else
  args=( "${(@)args:#(|\(*\))(|\*)--*}" )
fi

_arguments "$args[@]"
