grub-set-defaultの補完

zshgrub-set-defaultの補完設定を書いてみた。.zshrcから読み込むファイル用なのでfpathにおくのなら変更が必要なはず。

_grub-set-default () {
  _arguments \
    '(1 * -)'{-h,--help}'[print this message and exit]' \
    '(1 * -)'{-v,--version}'[print the version information and exit]' \
    '--root-directory=[Use the directory DIR instead of the root directory]:directory:_files -/' \
    '1:grub entry:_grub_titles' && return 0
}

_grub_titles () {
  [ -r /boot/grub/menu.lst ] || return
  local -a titles
  local key title index
  index=0
  while read key title; do
    if [[ "$key" == title ]]; then
      titles+=("$((index++)):$title")
    fi
  done < /boot/grub/menu.lst
  _describe "grub entry" titles
}

compdef _grub-set-default grub-set-default