#compdef installpkg upgradepkg removepkg pkgtool explodepkg makepkg

local expl

case "$service" in
  installpkg)
    _arguments \
      '-warn[warn if files would be overwritten, but do not install]' \
      '-root=[specify alternate install location]:root directory:_path_files -/' \
      '-infobox[use dialog to draw an info box]' \
      '-menu[confirm package installation with a menu]' \
      "-ask[always ask on package installation regardless of package's priority]" \
      '-priority[provide a priority for the entire package list to use]:priority list:(ADD REC OPT SKP)' \
      '-tagfile[specify a different file to use for package priorities]:tagfile:_files -/' \
      '*:package file:_files -g "*.t[gblx]z(-.)"'
  ;;

  removepkg)
    _arguments \
      '-warn[list which files & directories would be removed, skip actual removal]' \
      '-preserve[reconstruct complete package subtree in /tmp/preserved_packages]' \
      '-copy[construct a copy of the package in /tmp/preserved_packages]' \
      '-keep[save the intermediate files created]' \
      '*:package:_files -W /var/log/packages/ -/'
  ;;

  upgradepkg)
    _arguments \
      '--install-new[install new packages in addition to upgrading existing ones]' \
      '--reinstall[upgrade even when the same version is already installed]' \
      '--verbose[show all the gory details of the upgrade]' \
      '*:package file:_files -g "*.t[gblx]z(-.)"'
  ;;

  explodepkg)
    _wanted file expl 'package file' _files -g '*.t[gblx]z(-.)'
  ;;

  makepkg)
    _arguments -s \
      '(--linkadd -l)'{--linkadd,-l}'[move symlinks into doinst.sh]:answer:(y n)' \
      '(--chown -c)'{--chown,-c}'[reset all permissions to root:root 755]:answer:(y n)'
  ;;

  pkgtool)
    _arguments \
      "-sets[install the disk sets A, B, C]" \
      "(-source_device)-source_mounted[don't attempt to unmount and remount source device with each disk]" \
      '-ignore_tagfile[install every package encountered regardless of tagfiles]' \
      '-tagfile[specify tagfile to be used for the installation]:tagfile:_files -/' \
      '-source_dir[specify directory containing each disk subdirectory]:source directory:_path_files -/' \
      '-target_dir[specify directory where the target root directory is located]:target directory:_path_files -/' \
      '(-source_mounted)-source_device[specify source device to install from]:source device:{compadd "$expl[@]" /dev/*}'
  ;;
esac
