diff --git a/share/chruby/chruby.sh b/share/chruby/chruby.sh index 2943fe43..53774163 100644 --- a/share/chruby/chruby.sh +++ b/share/chruby/chruby.sh @@ -1,6 +1,6 @@ typeset -a RUBIES -function chruby_reset() +function __chruby_reset() { [[ -z "$RUBY" ]] && return @@ -19,10 +19,10 @@ function chruby_reset() hash -r } -function chruby_use() +function __chruby_use() { [[ "$RUBY" == "$1" && "$RUBYOPT" == "$2" ]] && return - [[ -n "$RUBY" ]] && chruby_reset + [[ -n "$RUBY" ]] && __chruby_reset export RUBY="$1" export RUBYOPT="$2" @@ -42,6 +42,17 @@ EOF` fi } +__complete_chruby() { + local cur rubie basenames + typeset -a basenames + cur="${COMP_WORDS[COMP_CWORD]}" + for rubie in ${RUBIES[@]}; do + basenames+=($(basename $rubie)) + done + COMPREPLY=( $(compgen -W "${basenames[*]}" -- ${cur}) ) +} +complete -F __complete_chruby chruby + function chruby() { local ruby_path @@ -61,12 +72,12 @@ function chruby() echo " $star $(basename "$ruby_path")" done ;; - system) chruby_reset ;; + system) __chruby_reset ;; *) for ruby_path in ${RUBIES[@]}; do if [[ `basename "$ruby_path"` == *$1* ]]; then shift - chruby_use "$ruby_path" "$*" + __chruby_use "$ruby_path" "$*" return fi done diff --git a/test/chruby_reset_test.sh b/test/chruby_reset_test.sh index d147b927..e24e30de 100755 --- a/test/chruby_reset_test.sh +++ b/test/chruby_reset_test.sh @@ -12,12 +12,12 @@ setUp() export PATH="$GEM_HOME/bin:$GEM_ROOT/bin:$RUBY/bin:$TEST_PATH" - chruby_use "$TEST_RUBY" + __chruby_use "$TEST_RUBY" } -test_chruby_reset() +test___chruby_reset() { - chruby_reset + __chruby_reset assertNull "RUBY was not unset" "$RUBY" assertNull "RUBY_ENGINE was not unset" "$RUBY_ENGINE" @@ -29,11 +29,11 @@ test_chruby_reset() assertEquals "PATH was not sanitized" "$TEST_PATH" "$PATH" } -test_chruby_reset_duplicate_path() +test___chruby_reset_duplicate_path() { export PATH="$PATH:$GEM_HOME/bin:$GEM_ROOT/bin:$RUBY/bin" - chruby_reset + __chruby_reset assertEquals "PATH was not sanitized" "$TEST_PATH" "$PATH" } diff --git a/test/chruby_test.sh b/test/chruby_test.sh index 804fdf4c..4e741b62 100755 --- a/test/chruby_test.sh +++ b/test/chruby_test.sh @@ -4,17 +4,17 @@ tearDown() { - chruby_reset + __chruby_reset } -test_chruby_1_9() +test___chruby_1_9() { chruby "1.9" assertEquals "did not match $TEST_RUBY with 1.9" "$TEST_RUBY" "$RUBY" } -test_chruby_system() +test___chruby_system() { chruby "$TEST_RUBY_VERSION" chruby system @@ -22,7 +22,7 @@ test_chruby_system() assertNull "did not reset the Ruby" "$RUBY" } -test_chruby_unknown() +test___chruby_unknown() { chruby "foo" 2>/dev/null diff --git a/test/chruby_use_test.sh b/test/chruby_use_test.sh index 6c3ffe14..33b5322a 100755 --- a/test/chruby_use_test.sh +++ b/test/chruby_use_test.sh @@ -4,10 +4,10 @@ setUp() { - chruby_use $TEST_RUBY + __chruby_use $TEST_RUBY } -test_chruby_use() +test___chruby_use() { assertEquals "invalid RUBY" "$TEST_RUBY" "$RUBY" assertEquals "invalid RUBY_ENGINE" "$TEST_RUBY_ENGINE" "$RUBY_ENGINE" @@ -20,7 +20,7 @@ test_chruby_use() } tearDown() { - chruby_reset + __chruby_reset } SHUNIT_PARENT=$0 . /usr/share/shunit2/shunit2 diff --git a/test/helper.sh b/test/helper.sh index 3f7d8534..cf146c76 100644 --- a/test/helper.sh +++ b/test/helper.sh @@ -4,7 +4,7 @@ . ./share/chruby/chruby.sh -chruby_reset +__chruby_reset TEST_PATH="$PATH" TEST_RUBY_ENGINE="ruby"