#compdef kvno

local curcontext="$curcontext" state line ret=1

_arguments -C \
  '-c[specify credentials cache to use]:cache:_files' \
  '-e[specify encryption type]:encryption type' \
  '-q[suppress printing]' \
  '(- :)-h[display help information]' \
  '-P[acquire credentials for the principal during S4U2Self]' \
  '-S[specify the service name of the principal]:service' \
  '-U[specify user for S4U2Self]:user:_users' \
  ':principal:->principal' && ret=0

if [[ $state = principal ]]; then
  if compset -P '*/'; then
    _hosts && ret=0
  else
    _alternative \
      'users:user:_users' \
      'services:service:compadd -S/ host' && ret=0
  fi
fi

return ret
