#!/usr/bin/env bash
# Completion for gem

_installcomp() {
  if [ -z "$REMOTE_GEMS" ]
  then
    REMOTE_GEMS=( $(gem list --remote --no-versions | tr '\n' ' ') )
  fi
  
  local cur=${COMP_WORDS[COMP_CWORD]}
  COMPREPLY=( $(compgen -W "${REMOTE_GEMS[*]}" -- $cur) )
}

_uninstallcomp() {
  if [ -z "$LOCAL_GEMS" ]
  then
    LOCAL_GEMS=( $(gem list --no-versions | sed 's/\*\*\* LOCAL GEMS \*\*\*//' | tr '\n' ' ') )
  fi
  
  local cur=${COMP_WORDS[COMP_CWORD]}
  COMPREPLY=( $(compgen -W "${LOCAL_GEMS[*]}" -- $cur) )
}

_gem() {
  local cur=${COMP_WORDS[COMP_CWORD]}
  local prev=${COMP_WORDS[COMP_CWORD-1]}
  case $prev in
    install)
      _installcomp
      return 0
      ;;
    uninstall)
      _uninstallcomp
      return 0
      ;;
  esac
  local commands=(build cert check cleanup contents dependency environment fetch generate_index help install list lock outdated owner pristine push query rdoc search server sources specification stale uninstall unpack update which)
  COMPREPLY=( $(compgen -W "${commands[*]}" -- $cur) )
}

complete -F _gem gem
