Permalink
Browse files

Proof-of-concept external completions

  • Loading branch information...
1 parent eefd5ea commit 6da85246c65fb65f0aa32e8feef4a7e0a909e510 @sstephenson sstephenson committed Sep 13, 2011
Showing with 31 additions and 24 deletions.
  1. +9 −24 completions/rbenv.bash
  2. +15 −0 libexec/rbenv-completions
  3. +7 −0 libexec/rbenv-local
@@ -1,29 +1,14 @@
-_rbenv_commands() {
- COMPREPLY=()
- local cur="${COMP_WORDS[COMP_CWORD]}"
- COMPREPLY=( $( compgen -W "$(rbenv commands)" -- $cur ) )
-}
-
-_rbenv_versions() {
- COMPREPLY=()
- local cur="${COMP_WORDS[COMP_CWORD]}"
- local versions="$(echo system; rbenv versions --bare)"
- COMPREPLY=( $( compgen -W "$versions" -- $cur ) )
-}
-
_rbenv() {
COMPREPLY=()
- local cur="${COMP_WORDS[COMP_CWORD]}"
- local prev="${COMP_WORDS[COMP_CWORD-1]}"
-
- case "$prev" in
- set-* | global | local | shell | prefix )
- _rbenv_versions
- ;;
- * )
- _rbenv_commands
- ;;
- esac
+ local word="${COMP_WORDS[COMP_CWORD]}"
+
+ if [ "$COMP_CWORD" -eq 1 ]; then
+ COMPREPLY=( $(compgen -W "$(rbenv commands)" -- "$word") )
+ else
+ local command="${COMP_WORDS[1]}"
+ local completions="$(rbenv completions "$command")"
+ COMPREPLY=( $(compgen -W "$completions" -- "$word") )
+ fi
}
complete -F _rbenv rbenv
@@ -0,0 +1,15 @@
+#!/usr/bin/env bash
+set -e
+[ -n "$RBENV_DEBUG" ] && set -x
+
+COMMAND="$1"
+if [ -z "$COMMAND" ]; then
+ echo "usage: rbenv completions COMMAND [arg1 arg2...]" >&2
+ exit 1
+fi
+
+COMMAND_PATH="$(command -v "rbenv-$COMMAND")"
+if grep -i "^# provide rbenv completions" "$COMMAND_PATH" >/dev/null; then
+ shift
+ exec "$COMMAND_PATH" --complete "$@"
+fi
View
@@ -2,6 +2,13 @@
set -e
[ -n "$RBENV_DEBUG" ] && set -x
+# Provide rbenv completions
+if [ "$1" = "--complete" ]; then
+ shift
+ echo system
+ exec rbenv-versions --bare
+fi
+
RBENV_VERSION="$1"
RBENV_VERSION_FILE=".rbenv-version"

1 comment on commit 6da8524

@josh
Contributor
josh commented on 6da8524 Sep 13, 2011

❤️

Please sign in to comment.