--- /dev/null
+#!/usr/bin/env bash
+# Completion for gem
+
+if [ -z "$REMOTE_GEMS" ]
+then
+ REMOTE_GEMS=( $(gem list --remote --no-versions | tr '\n' ' ') )
+fi
+
+if [ -z "$LOCAL_GEMS" ]
+then
+ LOCAL_GEMS=( $(gem list --no-versions | sed 's/\*\*\* LOCAL GEMS \*\*\*//' | tr '\n' ' ') )
+fi
+
+_installcomp() {
+ local cur=${COMP_WORDS[COMP_CWORD]}
+ COMPREPLY=( $(compgen -W "${REMOTE_GEMS[*]}" -- $cur) )
+}
+
+_uninstallcomp() {
+ 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