Loading bin/rbenv-install +12 −1 Original line number Diff line number Diff line Loading @@ -7,7 +7,8 @@ # rbenv install -l|--list # rbenv install --version # # -l/--list List all available versions # -l/--list List latest stable versions for each Ruby # -L/--list-all List all local versions # -f/--force Install even if the version appears to be installed already # -s/--skip-existing Skip if the version appears to be installed already # Loading Loading @@ -38,6 +39,7 @@ shopt -u nullglob # Provide rbenv completions if [ "$1" = "--complete" ]; then echo --list echo --list-all echo --force echo --skip-existing echo --keep Loading Loading @@ -77,6 +79,15 @@ for option in "${OPTIONS[@]}"; do usage 0 ;; "l" | "list" ) ruby-build --list { echo echo "Only latest stable releases for each Ruby implementation are shown." echo "Use 'rbenv install --list-all' to show all local versions." } 1>&2 exit ;; "L" | "list-all" ) ruby-build --definitions exit ;; Loading bin/ruby-build +26 −0 Original line number Diff line number Diff line Loading @@ -10,6 +10,7 @@ # -4/--ipv4 Resolve names to IPv4 addresses only # -6/--ipv6 Resolve names to IPv6 addresses only # --definitions List all local definitions # -l/--list List latest stable releases for each Ruby # --version Show version of ruby-build # Loading Loading @@ -1209,6 +1210,7 @@ usage() { [ -z "$1" ] || exit "$1" } # list all versions list_definitions() { { for DEFINITION_DIR in "${RUBY_BUILD_DEFINITIONS[@]}"; do [ -d "$DEFINITION_DIR" ] && ls "$DEFINITION_DIR" Loading @@ -1216,6 +1218,26 @@ list_definitions() { } | sort_versions | uniq } # list only latest stable versions excluding RC, preview, dev and EoL'ed list_maintained_versions() { { for DEFINITION_DIR in "${RUBY_BUILD_DEFINITIONS[@]}"; do [ -d "$DEFINITION_DIR" ] && \ grep -L -e warn_eol "$DEFINITION_DIR"/* 2>/dev/null | \ sed 's|.*/||' | \ grep -v -e '-rc[0-9]*$' -e '-preview[0-9]*$' -e '-dev$' done } | extract_latest_versions | sort_versions | uniq } extract_latest_versions() { # sort in this function looks redundunt but it is necessary # rbx-3.99 appears latest unless the sort sed 'h; s/[+-]/./g; s/.p\([[:digit:]]\)/.z.\1/; s/$/.z/; G; s/\n/ /' | \ LC_ALL=C sort -t. -k 1,1 -k 2,2n -k 3,3n -k 4,4n -k 5,5n | \ sed 's/[+.]/ /; s/[0-9].*z //; s/^\([0-9].[0-9]\)/mri\1 \1/' | \ awk '{ latest[$1] =$2 } END{ for(key in latest) { print latest[key] } }' } sort_versions() { sed 'h; s/[+-]/./g; s/.p\([[:digit:]]\)/.z.\1/; s/$/.z/; G; s/\n/ /' | \ LC_ALL=C sort -t. -k 1,1 -k 2,2n -k 3,3n -k 4,4n -k 5,5n | awk '{print $2}' Loading Loading @@ -1246,6 +1268,10 @@ for option in "${OPTIONS[@]}"; do list_definitions exit 0 ;; "l" | "list") list_maintained_versions exit 0 ;; "k" | "keep" ) KEEP_BUILD_PATH=true ;; Loading test/definitions.bats +65 −0 Original line number Diff line number Diff line Loading @@ -102,6 +102,71 @@ truffleruby-19.3.0" assert_success "$expected" } @test "filtering previous Ruby versions" { export RUBY_BUILD_ROOT="$TMP" mkdir -p "${RUBY_BUILD_ROOT}/share/ruby-build" all_versions=" 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.4.8 2.4.9 2.5.0 2.5.1 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.6.5 2.7.0 jruby-1.5.6 jruby-9.2.7.0 jruby-9.2.8.0 jruby-9.2.9.0 maglev-1.0.0 mruby-1.4.1 mruby-2.0.0 mruby-2.0.1 mruby-2.1.0 rbx-3.104 rbx-3.105 rbx-3.106 rbx-3.107 truffleruby-19.2.0.1 truffleruby-19.3.0 truffleruby-19.3.0.2 truffleruby-19.3.1" expected="2.4.9 2.5.7 2.6.5 2.7.0 jruby-9.2.9.0 maglev-1.0.0 mruby-2.1.0 rbx-3.107 truffleruby-19.3.1" for ver in $all_versions; do touch "${RUBY_BUILD_ROOT}/share/ruby-build/$ver" done run ruby-build --list assert_success "$expected" } @test "removing duplicate Ruby versions" { export RUBY_BUILD_ROOT="$TMP" export RUBY_BUILD_DEFINITIONS="${RUBY_BUILD_ROOT}/share/ruby-build" Loading test/rbenv.bats +3 −2 Original line number Diff line number Diff line Loading @@ -38,7 +38,7 @@ stub_ruby_build() { stub_ruby_build \ "--definitions : echo 1.8.7 1.9.3-p0 1.9.3-p194 2.1.2 | tr ' ' $'\\n'" run rbenv-install --list run rbenv-install --list-all assert_success assert_output <<OUT 1.8.7 Loading Loading @@ -122,7 +122,7 @@ OUT mkdir -p "${RBENV_ROOT}/plugins/bar/share/ruby-build" stub_ruby_build "--definitions : echo \$RUBY_BUILD_DEFINITIONS | tr ':' $'\\n'" run rbenv-install --list run rbenv-install --list-all assert_success assert_output <<OUT Loading @@ -140,6 +140,7 @@ OUT assert_success assert_output <<OUT --list --list-all --force --skip-existing --keep Loading Loading
bin/rbenv-install +12 −1 Original line number Diff line number Diff line Loading @@ -7,7 +7,8 @@ # rbenv install -l|--list # rbenv install --version # # -l/--list List all available versions # -l/--list List latest stable versions for each Ruby # -L/--list-all List all local versions # -f/--force Install even if the version appears to be installed already # -s/--skip-existing Skip if the version appears to be installed already # Loading Loading @@ -38,6 +39,7 @@ shopt -u nullglob # Provide rbenv completions if [ "$1" = "--complete" ]; then echo --list echo --list-all echo --force echo --skip-existing echo --keep Loading Loading @@ -77,6 +79,15 @@ for option in "${OPTIONS[@]}"; do usage 0 ;; "l" | "list" ) ruby-build --list { echo echo "Only latest stable releases for each Ruby implementation are shown." echo "Use 'rbenv install --list-all' to show all local versions." } 1>&2 exit ;; "L" | "list-all" ) ruby-build --definitions exit ;; Loading
bin/ruby-build +26 −0 Original line number Diff line number Diff line Loading @@ -10,6 +10,7 @@ # -4/--ipv4 Resolve names to IPv4 addresses only # -6/--ipv6 Resolve names to IPv6 addresses only # --definitions List all local definitions # -l/--list List latest stable releases for each Ruby # --version Show version of ruby-build # Loading Loading @@ -1209,6 +1210,7 @@ usage() { [ -z "$1" ] || exit "$1" } # list all versions list_definitions() { { for DEFINITION_DIR in "${RUBY_BUILD_DEFINITIONS[@]}"; do [ -d "$DEFINITION_DIR" ] && ls "$DEFINITION_DIR" Loading @@ -1216,6 +1218,26 @@ list_definitions() { } | sort_versions | uniq } # list only latest stable versions excluding RC, preview, dev and EoL'ed list_maintained_versions() { { for DEFINITION_DIR in "${RUBY_BUILD_DEFINITIONS[@]}"; do [ -d "$DEFINITION_DIR" ] && \ grep -L -e warn_eol "$DEFINITION_DIR"/* 2>/dev/null | \ sed 's|.*/||' | \ grep -v -e '-rc[0-9]*$' -e '-preview[0-9]*$' -e '-dev$' done } | extract_latest_versions | sort_versions | uniq } extract_latest_versions() { # sort in this function looks redundunt but it is necessary # rbx-3.99 appears latest unless the sort sed 'h; s/[+-]/./g; s/.p\([[:digit:]]\)/.z.\1/; s/$/.z/; G; s/\n/ /' | \ LC_ALL=C sort -t. -k 1,1 -k 2,2n -k 3,3n -k 4,4n -k 5,5n | \ sed 's/[+.]/ /; s/[0-9].*z //; s/^\([0-9].[0-9]\)/mri\1 \1/' | \ awk '{ latest[$1] =$2 } END{ for(key in latest) { print latest[key] } }' } sort_versions() { sed 'h; s/[+-]/./g; s/.p\([[:digit:]]\)/.z.\1/; s/$/.z/; G; s/\n/ /' | \ LC_ALL=C sort -t. -k 1,1 -k 2,2n -k 3,3n -k 4,4n -k 5,5n | awk '{print $2}' Loading Loading @@ -1246,6 +1268,10 @@ for option in "${OPTIONS[@]}"; do list_definitions exit 0 ;; "l" | "list") list_maintained_versions exit 0 ;; "k" | "keep" ) KEEP_BUILD_PATH=true ;; Loading
test/definitions.bats +65 −0 Original line number Diff line number Diff line Loading @@ -102,6 +102,71 @@ truffleruby-19.3.0" assert_success "$expected" } @test "filtering previous Ruby versions" { export RUBY_BUILD_ROOT="$TMP" mkdir -p "${RUBY_BUILD_ROOT}/share/ruby-build" all_versions=" 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.4.8 2.4.9 2.5.0 2.5.1 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.6.5 2.7.0 jruby-1.5.6 jruby-9.2.7.0 jruby-9.2.8.0 jruby-9.2.9.0 maglev-1.0.0 mruby-1.4.1 mruby-2.0.0 mruby-2.0.1 mruby-2.1.0 rbx-3.104 rbx-3.105 rbx-3.106 rbx-3.107 truffleruby-19.2.0.1 truffleruby-19.3.0 truffleruby-19.3.0.2 truffleruby-19.3.1" expected="2.4.9 2.5.7 2.6.5 2.7.0 jruby-9.2.9.0 maglev-1.0.0 mruby-2.1.0 rbx-3.107 truffleruby-19.3.1" for ver in $all_versions; do touch "${RUBY_BUILD_ROOT}/share/ruby-build/$ver" done run ruby-build --list assert_success "$expected" } @test "removing duplicate Ruby versions" { export RUBY_BUILD_ROOT="$TMP" export RUBY_BUILD_DEFINITIONS="${RUBY_BUILD_ROOT}/share/ruby-build" Loading
test/rbenv.bats +3 −2 Original line number Diff line number Diff line Loading @@ -38,7 +38,7 @@ stub_ruby_build() { stub_ruby_build \ "--definitions : echo 1.8.7 1.9.3-p0 1.9.3-p194 2.1.2 | tr ' ' $'\\n'" run rbenv-install --list run rbenv-install --list-all assert_success assert_output <<OUT 1.8.7 Loading Loading @@ -122,7 +122,7 @@ OUT mkdir -p "${RBENV_ROOT}/plugins/bar/share/ruby-build" stub_ruby_build "--definitions : echo \$RUBY_BUILD_DEFINITIONS | tr ':' $'\\n'" run rbenv-install --list run rbenv-install --list-all assert_success assert_output <<OUT Loading @@ -140,6 +140,7 @@ OUT assert_success assert_output <<OUT --list --list-all --force --skip-existing --keep Loading