Mark Szymanski | f6950f9 | 2011-06-29 11:33:39 -0500 | [diff] [blame] | 1 | #!/usr/bin/env bash |
| 2 | # Completion for gem |
| 3 | |
Mark Szymanski | f6950f9 | 2011-06-29 11:33:39 -0500 | [diff] [blame] | 4 | _installcomp() { |
Victor Castell | 484c57b | 2011-07-25 13:47:03 +0200 | [diff] [blame^] | 5 | if [ -z "$REMOTE_GEMS" ] |
| 6 | then |
| 7 | REMOTE_GEMS=( $(gem list --remote --no-versions | tr '\n' ' ') ) |
| 8 | fi |
| 9 | |
Mark Szymanski | f6950f9 | 2011-06-29 11:33:39 -0500 | [diff] [blame] | 10 | local cur=${COMP_WORDS[COMP_CWORD]} |
| 11 | COMPREPLY=( $(compgen -W "${REMOTE_GEMS[*]}" -- $cur) ) |
| 12 | } |
| 13 | |
| 14 | _uninstallcomp() { |
Victor Castell | 484c57b | 2011-07-25 13:47:03 +0200 | [diff] [blame^] | 15 | if [ -z "$LOCAL_GEMS" ] |
| 16 | then |
| 17 | LOCAL_GEMS=( $(gem list --no-versions | sed 's/\*\*\* LOCAL GEMS \*\*\*//' | tr '\n' ' ') ) |
| 18 | fi |
| 19 | |
Mark Szymanski | f6950f9 | 2011-06-29 11:33:39 -0500 | [diff] [blame] | 20 | local cur=${COMP_WORDS[COMP_CWORD]} |
| 21 | COMPREPLY=( $(compgen -W "${LOCAL_GEMS[*]}" -- $cur) ) |
| 22 | } |
| 23 | |
| 24 | _gem() { |
| 25 | local cur=${COMP_WORDS[COMP_CWORD]} |
| 26 | local prev=${COMP_WORDS[COMP_CWORD-1]} |
| 27 | case $prev in |
| 28 | install) |
| 29 | _installcomp |
| 30 | return 0 |
| 31 | ;; |
| 32 | uninstall) |
| 33 | _uninstallcomp |
| 34 | return 0 |
| 35 | ;; |
| 36 | esac |
| 37 | 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) |
| 38 | COMPREPLY=( $(compgen -W "${commands[*]}" -- $cur) ) |
| 39 | } |
| 40 | |
| 41 | complete -F _gem gem |