????

Your IP : 13.59.83.202


Current Path : /proc/self/root/usr/share/zsh/site-functions/
Upload File :
Current File : //proc/self/root/usr/share/zsh/site-functions/_dkms

#compdef dkms
# Based on the completion from the zsh-users/zsh repository.

local curcontext="$curcontext" ign cmds opts ret=1
local -a state line expl args subcmds dirs
local -A opt_args

subcmds=(
  'add:add a module/version combination to the tree for builds and installs'
  'remove:remove a module from the tree'
  'build:compile a module for a kernel'
  'unbuild:undoes the build of a module'
  "install:install a build module for it's corresponding kernel"
  'uninstall:uninstall a module for a kernel'
  'autoinstall:try to install the latest revision of all modules that have been installed for other kernel revisions'
  'match:install every module that is installed for a template kernel for another kernel'
  'mktarball:tar up files in the DKMS tree for a specific module'
  'ldtarball:extract a tarball created with mktarball into the DKMS tree'
  'status:display the current status of modules, versions and kernels within the tree'
  'generate_mok:generate the MOK keys outside of the first build'
)

args=(
  '(--all)*'{-a,--arch}'[specify system architecture]:architecture:->architectures'
  '(1)-m[specify module]:module:->modules'
  '(1)-v[specify module version]:version'
  {-q,--quiet}'[suppress output]'
  '*--directive=:directive'
  '--dkmstree=:path:_directories'
  '--installtree=:path:_directories'
  '--sourcetree=:path:_directories'
  '--force-version-override'
  '1: : _describe -t commands command subcmds'
)

cmd=${${${subcmds%%:*}:*words}[1]}
if [[ -n $cmd ]]; then
  curcontext="${curcontext%:*}-$cmd:"
else
  # Exclude sub-commands based on any options specified so far.
  for cmds opts in \
    '(remove|build|install|uninstall|match|status|mktarball)' 'k' \
    '(add|remove)' '-_safe_upgrade' \
    'mktarball' '-(source|binary)-only' \
    '(match|build)' '(k|-no-(prepare|clean)-kernel|-kernelsourcedir)' \
    '(|un)install' '-no-(depmod|initrd)' \
    '(add|build|install|ldtarball)' '-force' \
    'match' '-templatekernel' \
    '(mktarball|ldtarball)' '-archive' \
    '(match|build)' '(j*|-no-(prepare|clean)-kernel|-kernelsourcedir)' \
    '(remove|build|install|status|mktarball)' '-all' \
    'build' '-config'
  do
    [[ -n ${(M)words:#-${~opts}*} ]] &&
      subcmds=( ${(M)subcmds:#${~cmds}:*} )
  done
  args+=( '(1 -)'{-V,--version}'[display version information]' )
  ign='!' # hide some uncommon options but handle their arguments
fi

case $cmd in
  remove|build|install|uninstall|mktarball|status)
    args+=( ': :->modules' )
  ;|
  |remove|(un|)build|install|uninstall|match|status|mktarball)
    args+=( '(--all)*-k[specify kernel version]:kernel:->kernels' )
  ;|
  |add|remove) args+=( "${ign}--rpm_safe_upgrade" ) ;|
  |(mk|ld)tarball)
    args+=( "${ign}--archive=:tarball:_files -g '*.tar(-.)'" )
  ;|
  |mktarball) args+=( "${ign}(--source-only --binaries-only)--"{source,binaries}-only ) ;|
  |match|build)
    args+=( # TODO: check ignore needed in absence of parameters
      "${ign}--no-prepare-kernel"
      "${ign}--no-clean-kernel"
      '--kernelsourcedir=:directory:_directories'
      "${ign}-j+[specify maximum number of jobs to use when building]:jobs"
    )
  ;|
  |(|un)install)
    args+=(
      "${ign}--no-depmod"
      "${ign}--no-initrd"
    )
  ;|
  |add)
    args+=(
      '-c[specify location of dkms.conf file]:location:_files'
    )
  ;|
  |remove|(un|)build|install|status)
    args+=( '(-a --arch -k)--all[specify all relevant kernels/arches]' )
  ;|
  |build)
    args+=( "${ign}--config=:kernel config file:_files" )
  ;|
  |add|build|install|ldtarball)
    args+=( '--force[force overwriting of extant files]' )
  ;|
  |match)
    args+=( "${ign}--templatekernel=:kernel:->kernels" )
  ;|
  add)
    args+=(
      '3:path:_directories'
      '4:tarball:_files -g "*.tar(-.)"'
    )
  ;;
  install)
    args+=(
      '3:rpm file:_files -g "*.rpm(-.)"'
    )
  ;;
  generate_mok)
    args=()
  ;;
esac

_arguments -C $args && ret=0

case $state in
  modules)
    dirs=( ${(e)opt_args[--dkmstree]:-/var/lib/dkms}/*/*(/) )
    dirs=( ${${(M)dirs%/*/*}#/} )
    _description modules expl module
    _multi_parts -i "$expl[@]" / dirs && ret=0
  ;;
  kernels)
    if compset -P 1 '*/'; then
      _description architectures expl architecture
      compadd "$expl[@]" /lib/modules/$IPREFIX/build/arch/*(/:t) && ret=0
    else
      compset -S '/*'
      dirs=( /lib/modules/*(/:t) )
      _description -V kernels expl kernel
      compadd "$expl[@]" -r "/ \t\n\-" ${(on)dirs} && ret=0
    fi
  ;;
  architectures)
    _description architectures expl architecture
    compadd "$expl[@]" /lib/modules/$(uname -r)/build/arch/*(/:t) && ret=0
  ;;
esac

return ret