scripts/utility in rvm-0.0.58 vs scripts/utility in rvm-0.0.59

- old
+ new

@@ -61,13 +61,11 @@ function __rvm_log { if [ ! -z "$2" ] ; then level=$1 ; shift ; else level="info" ; fi message=$1 case "$level" in debug) shift ; - if [ ! -z "$rvm_debug_flag" ] ; then - echo -e "$(tput setaf 5)<d>$(tput sgr0) $message $(tput setaf 5)</d> $(tput sgr0) " - fi + ((rvm_debug_flag)) && echo -e "$(tput setaf 5)<d>$(tput sgr0) $message $(tput setaf 5)</d> $(tput sgr0) " ;; info) shift ; echo -e "$(tput setaf 2)<i>$(tput sgr0) $message $(tput setaf 2)</i> $(tput sgr0) " ;; warn) shift ; echo -e "$(tput setaf 3)<w>$(tput sgr0) $message $(tput setaf 3)</w> $(tput sgr0) " ;; error) shift ; echo -e "$(tput setaf 1)<e>$(tput sgr0) $message $(tput setaf 1)</e> $(tput sgr0) " ;; fail) shift ; echo -e "$(tput setaf 1)<f>$(tput sgr0) $message $(tput setaf 1)</f> $(tput sgr0) " ; __rvm_pushpop ; return 1 ;; @@ -82,11 +80,11 @@ eval "index=\$((\${#${array}[*]} + $__shell_array_start))" eval "${array}[${index}]=${item}" unset array item } -function __rvm_clean-path { +function __rvm_clean_path { PATH=$(echo $PATH | tr -s ':' '\n' | awk '!($0 in a){a[$0];print}' | tr -s '\n' ':' | sed 's/:$//') export PATH } function __rvm_remove-rvm-from-path { @@ -114,19 +112,19 @@ unset log_file command } function __rvm_cleanup_variables { __rvm_unset_ruby_variables - unset rvm_selected_flag rvm_action rvm_irbrc_file rvm_src_path rvm_path rvm_prefix_path rvm_gem_path rvm_command rvm_error_message rvm_gem_set_name rvm_url rvm_config_path rvm_bin_path rvm_force_flag rvm_all_flag rvm_reconfigure_flag rvm_make_flags rvm_bin_flag rvm_load_flag rvm_dump_flag rvm_self_flag rvm_gem_flag rvm_rubygems_flag rvm_debug_flag rvm_delete_flag rvm_summary_flag rvm_test_flag _rvm_spec_flag rvm_json_flag rvm_yaml_flag rvm_shebang_flag rvm_env_flag rvm_head_flag rvm_tail_flag rvm_use_flag rvm_dir_flag rvm_list_flag rvm_empty_flag rvm_log_path rvm_file_name + unset rvm_ruby_selected_flag rvm_action rvm_irbrc_file rvm_src_path rvm_path rvm_prefix_path rvm_gem_path rvm_command rvm_error_message rvm_gem_set_name rvm_url rvm_config_path rvm_bin_path rvm_force_flag rvm_all_flag rvm_reconfigure_flag rvm_make_flags rvm_bin_flag rvm_load_flag rvm_dump_flag rvm_self_flag rvm_gem_flag rvm_rubygems_flag rvm_debug_flag rvm_delete_flag rvm_summary_flag rvm_test_flag _rvm_spec_flag rvm_json_flag rvm_yaml_flag rvm_shebang_flag rvm_env_flag rvm_head_flag rvm_tail_flag rvm_use_flag rvm_dir_flag rvm_list_flag rvm_empty_flag rvm_log_path rvm_file_name } function __rvm_unset_ruby_variables { - unset rvm_ruby_interpreter rvm_ruby_version rvm_ruby_repo_url rvm_ruby_package_name rvm_ruby_patch_level rvm_ruby_configure rvm_ruby_make rvm_ruby_make_install rvm_ruby_revision rvm_ruby_tag rvm_major_version rvm_minor_version rvm_ruby_gem_home rvm_ruby_binary rvm_ruby_home rvm_ruby_log_path rvm_ruby_src_path rvm_ruby_irbrc rvm_selected_flag rvm_ruby_selector rvm_ruby_string rvm_ruby_src_path rvm_ruby_repo_url rvm_major_version rvm_minor_version rvm_ruby_gem_home + unset rvm_ruby_interpreter rvm_ruby_version rvm_ruby_repo_url rvm_ruby_package_name rvm_ruby_patch_level rvm_ruby_configure rvm_ruby_make rvm_ruby_make_install rvm_ruby_revision rvm_ruby_tag rvm_major_version rvm_minor_version rvm_ruby_gem_home rvm_ruby_binary rvm_ruby_home rvm_ruby_log_path rvm_ruby_src_path rvm_ruby_irbrc rvm_ruby_selected_flag rvm_ruby_string rvm_ruby_string rvm_ruby_src_path rvm_ruby_repo_url rvm_major_version rvm_minor_version rvm_ruby_gem_home } # TODO: root user loadng of /etc/rvmrc -function __rvm_load-rvmrc { +function __rvm_load_rvmrc { if [ -s ~/.rvmrc ] ; then source ~/.rvmrc ; fi } function __rvm_bin_scripts { for rvm_ruby_binary in $(/bin/ls $rvm_path/*/bin/ruby 2> /dev/null) ; do @@ -137,11 +135,11 @@ fi done } function __rvm_bin_script { - if [ -z "$rvm_selected_flag" ] ; then __rvm_select $* ; fi + if [ -z "$rvm_ruby_selected_flag" ] ; then __rvm_select $* ; fi ruby_wrapper=$(cat <<RubyWrapper #!/bin/bash GEM_HOME=$rvm_ruby_gem_home ; export GEM_HOME GEM_PATH=$rvm_ruby_gem_home ; export GEM_PATH @@ -292,28 +290,28 @@ fi done } function __rvm_gemdir { - if [ -z "$rvm_selected_flag" ] ; then __rvm_select $* ; fi + if [ -z "$rvm_ruby_selected_flag" ] ; then __rvm_select $* ; fi mkdir -p $rvm_ruby_gem_home echo $rvm_ruby_gem_home } function __rvm_source_dir { - if [ -z "$rvm_selected_flag" ] ; then __rvm_select $* ; fi + if [ -z "$rvm_ruby_selected_flag" ] ; then __rvm_select $* ; fi if [ -z "$rvm_ruby_src_path" ] ; then __rvm_log "fail" "No source directory exists for the default implementation." else echo "$rvm_ruby_src_path" fi } # clones from source implementation/version to default # TODO: Merge this into 'rvm sync' function __rvm_gemdup { - if [ -z "$rvm_selected_flag" ] ; then __rvm_select $* ; fi + if [ -z "$rvm_ruby_selected_flag" ] ; then __rvm_select $* ; fi __rvm_log "debug" "$rvm_ruby_interpreter" if [ "default" = "$rvm_ruby_interpreter" ] ; then # TODO: ~/.rvm/default first, then system user rvm_source_gem_path="$rvm_system_user_gem_path" elif [ "user" = "$rvm_ruby_interpreter" ] ; then @@ -472,11 +470,11 @@ rvm_ruby_load_path="." rvm_ruby_require="" if [ "Darwin" = "$(uname)" ] ; then rvm_archflags="${rvm_archflags:-'-arch i386 -arch x86_64'}" ; fi - __rvm_clean-path + __rvm_clean_path rvm_result=$(echo $PATH | grep 'rvm\/bin:') if [ -z $rvm_result ] ; then PATH=$rvm_bin_path:$PATH ; export PATH fi @@ -539,23 +537,27 @@ else __rvm_log "info" "Carry on then..." fi ; unset response } -function __rvm_reload { +__rvm_reload() { source $rvm_path/scripts/rvm } -function __rvm_ruby_do { +__rvm_ruby_do() { __rvm_select __rvm_use binary="$(echo $rvm_action | sed 's/do$//')" if [ -x $rvm_ruby_home/bin/$binary ] ; then load_path="$rvm_ruby_home/bin:$rvm_ruby_load_path" if [ "ruby" = "$binary" ] ; then if [ -z "$(echo $rvm_ruby_args | awk '/\.rb$/')" ] ; then - rvm_ruby_args="-S $rvm_ruby_args" + #if [[ $rvm_ruby_args =~ '\.rb$' ]] ; then + if [ -z "$prefix" ] ; then prefix="-S" ; fi + if [[ ! $rvm_ruby_args =~ $prefix ]] ; then + rvm_ruby_args="$prefix $rvm_ruby_args" + fi fi rvm_command="$rvm_ruby_home/bin/$binary $rvm_ruby_require -I$load_path $rvm_ruby_args" else rvm_command="$rvm_ruby_home/bin/$binary $rvm_ruby_args" fi @@ -589,12 +591,11 @@ # TODO: Extract the common functionality out of the if below if [ ! -z "$rvm_ruby_string" ] ; then unset rvm_ruby_interpreter rvm_ruby_version __rvm_ruby_do elif [ ! -z "$rvm_ruby_version" ] ;then - for rvm_ruby_selector in $(echo $rvm_ruby_version | tr ',' ' ') ; do - unset rvm_ruby_string + for rvm_ruby_string in $(echo $rvm_ruby_version | tr ',' ' ') ; do __rvm_ruby_do done elif [ ! -z "$rvm_ruby_interpreter" ] ; then unset rvm_ruby_string rvm_ruby_version __rvm_ruby_do @@ -715,11 +716,11 @@ function __rvm_pushpop { if [ -z "$1" ] ; then popd > /dev/null 2>&1 else - pushd $1 > /dev/null 2>&1 + pushd "$1" > /dev/null 2>&1 fi } function __rvm_state { if [ -z "$rvm_state" ] ; then @@ -793,13 +794,27 @@ elif [ -d spec/ ] ; then : fi } +# +# Actual Utility functions. +# timestamp() { if [ "Darwin" = "$(uname)" ] ; then echo $(stat -c "%Y" $1) else echo $(stat -f "%m" $1) fi +} + +# Usage: contains "a_string" "${an_array[@]}" +contains() { + local pattern="$1" ; shift + local index list + list=("$@") + for index in "${!list[@]}" ; do + [[ ${list[index]} = $pattern ]] && { echo $index ; return 0 ; } + done + echo -1 ; return 1 }