From 0ef27e258372017af011dafda93cdc8b13d74a5d Mon Sep 17 00:00:00 2001 From: Mark Keisler Date: Thu, 10 Jul 2014 16:36:14 -0500 Subject: [PATCH 1/3] sort rubies versions properly --- share/chruby/chruby.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/share/chruby/chruby.sh b/share/chruby/chruby.sh index 1736c79a..bea75c1c 100644 --- a/share/chruby/chruby.sh +++ b/share/chruby/chruby.sh @@ -2,7 +2,7 @@ CHRUBY_VERSION="0.3.8" RUBIES=() for dir in "$PREFIX/opt/rubies" "$HOME/.rubies"; do - [[ -d "$dir" && -n "$(ls -A "$dir")" ]] && RUBIES+=("$dir"/*) + [[ -d "$dir" && -n "$(ls -A "$dir")" ]] && RUBIES+=($(ls -dv "$dir"/*)) done unset dir From 0b1575758ce02e83f6abe404b998b356f3a6c3fd Mon Sep 17 00:00:00 2001 From: Mark Keisler Date: Fri, 11 Jul 2014 23:04:39 -0500 Subject: [PATCH 2/3] test for GNU ls and use it if it is there --- share/chruby/chruby.sh | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/share/chruby/chruby.sh b/share/chruby/chruby.sh index bea75c1c..c8d91ca6 100644 --- a/share/chruby/chruby.sh +++ b/share/chruby/chruby.sh @@ -1,8 +1,20 @@ CHRUBY_VERSION="0.3.8" RUBIES=() +if \ls --version >/dev/null 2>&1; then + GNU_LS=1 +else + GNU_LS=0 +fi + for dir in "$PREFIX/opt/rubies" "$HOME/.rubies"; do - [[ -d "$dir" && -n "$(ls -A "$dir")" ]] && RUBIES+=($(ls -dv "$dir"/*)) + if [[ -d "$dir" && -n "$(ls -A "$dir")" ]]; then + if [ $GNU_LS == 1 ]; then + RUBIES+=($(\ls -dv "$dir"/*)) + else + RUBIES+=("$dir"/*) + fi + fi done unset dir From bab6dc1d00461b89b9830cc49697a155b202345b Mon Sep 17 00:00:00 2001 From: Mark Keisler Date: Tue, 15 Jul 2014 14:19:32 -0500 Subject: [PATCH 3/3] cross platform way to sort rubies --- share/chruby/chruby.sh | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/share/chruby/chruby.sh b/share/chruby/chruby.sh index c8d91ca6..c81d5aaf 100644 --- a/share/chruby/chruby.sh +++ b/share/chruby/chruby.sh @@ -1,23 +1,16 @@ CHRUBY_VERSION="0.3.8" RUBIES=() - -if \ls --version >/dev/null 2>&1; then - GNU_LS=1 -else - GNU_LS=0 -fi +UNSORTED_RUBIES=() for dir in "$PREFIX/opt/rubies" "$HOME/.rubies"; do - if [[ -d "$dir" && -n "$(ls -A "$dir")" ]]; then - if [ $GNU_LS == 1 ]; then - RUBIES+=($(\ls -dv "$dir"/*)) - else - RUBIES+=("$dir"/*) - fi - fi + [[ -d "$dir" && -n "$(ls -A "$dir")" ]] && UNSORTED_RUBIES+=("$dir"/*) done unset dir +RUBIES=($(for rubie in ${UNSORTED_RUBIES[*]}; do + echo $rubie +done | sed 'h; s/-/./g ;; s/.*\///g ;; G ; s/\n/ /' | LC_ALL=C sort -t. -k 1,1 -k 2,2n -k 3,3n -k 4,4n | awk '{print $2}' )) + function chruby_reset() { [[ -z "$RUBY_ROOT" ]] && return