diff --git a/completion/available/gem.completion.bash b/completion/available/gem.completion.bash new file mode 100644 index 00000000..7231eef0 --- /dev/null +++ b/completion/available/gem.completion.bash @@ -0,0 +1,41 @@ +#!/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