123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104 |
- #!/usr/bin/env bash
- __rvm_parse_args_find_known_flags()
- {
- \typeset _args_array_name _temp_var
- \typeset -a _new_args
- _args_array_name="$1"
- (( $# == 0 )) || shift
- _new_args=()
- while
- (( $# ))
- do
- case "$1" in
- (--verify-downloads)
- export "rvm_verify_downloads_flag_cli"="${2:-}"
- shift
- ;;
- (--force|--verbose|--debug|--quiet|--silent|--create)
- export "rvm_${1#--}_flag=1"
- ;;
- (--only-path)
- _temp_var="${1#--}"
- export "rvm_${_temp_var//-/_}_flag=1"
- ;;
- (--32|--64)
- rvm_architectures+=( "${1#--}" )
- rvm_disable_binary_flag=1
- ;;
- (--universal)
- rvm_architectures+=( "32" "64" )
- rvm_disable_binary_flag=1
- ;;
- (--patches|--patch)
- __rvm_custom_separated_array rvm_patch_names , "${2:-}"
- rvm_patch_original_pwd="$PWD"
- rvm_disable_binary_flag=1
- shift
- ;;
- (--autolibs=*)
- export rvm_autolibs_flag="${1#*=}"
- ;;
- (--)
- shift
- _new_args+=( "$@" )
- shift $#
- ;;
- (*)
- _new_args+=( "$1" )
- ;;
- esac
- (( $# == 0 )) || shift # check in case shifted already
- done
- eval "${_args_array_name}+=( \"\${_new_args[@]}\" )"
- }
- __rvm_parse_args_error_finding_project_file()
- {
- unset RVM_PROJECT_PATH
- case $? in
- 101)
- true # should be printed already
- ;;
- *)
- rvm_error_message="Could not determine which Ruby to use; $rvm_token should contain .rvmrc or .versions.conf or .ruby-version or .rbfu-version or .rbenv-version, or an appropriate line in Gemfile."
- ;;
- esac
- rvm_action="error"
- }
- __rvm_parse_args()
- {
- \typeset _string
- export rvm_ruby_string
- rvm_action="${rvm_action:-""}"
- rvm_parse_break=0
- if
- [[ " $* " == *" --trace "* ]]
- then
- echo "$@"
- __rvm_print_headline
- fi
- while
- [[ -n "$next_token" ]]
- do
- rvm_token="$next_token"
- if
- (( $# > 0 ))
- then
- next_token="$1"
- shift
- else
- next_token=""
- fi
- case "$rvm_token" in
- [0-9a-zA-ZuU]*|@*) # Commands, Rubies and Gemsets
- case "$rvm_token" in
- use)
- rvm_action="$rvm_token"
- rvm_verbose_flag=1
- __rvm_file_env_check_unload
- if
- [[ -n "${next_token:-}" && ! -d "${next_token:-}" &&
- "${next_token:-}" != "-"* && "${next_token:-}" != "@"*
- ]]
- then
- rvm_ruby_interpreter="$next_token"
- rvm_ruby_string="$next_token"
- rvm_ruby_strings="$next_token"
- next_token="${1:-}"
- (( $# == 0 )) || shift
- elif
- [[ -z "${next_token:-}" ]] &&
- __rvm_project_dir_check .
- then
- __rvm_rvmrc_tools try_to_read_ruby . ||
- __rvm_parse_args_error_finding_project_file
- fi
- ;;
- install|uninstall|reinstall|try_install)
- export ${rvm_token}_flag=1
- rvm_action=$rvm_token
- ;;
- gemset)
- rvm_action=$rvm_token
- rvm_ruby_args=()
- __rvm_parse_args_find_known_flags rvm_ruby_args "$next_token" "$@"
- : rvm_ruby_args:${#rvm_ruby_args[@]}:${rvm_ruby_args[*]}:
- next_token="${rvm_ruby_args[__array_start]}"
- rvm_gemset_name="${rvm_ruby_args[__array_start+1]}"
- case "${next_token:-help}" in
- (help)
- true
- ;;
- (use|delete)
- [[ "delete" != "$next_token" ]] || rvm_delete_flag=1
- [[ "use" != "$next_token" ]] || rvm_action+="_$next_token"
- case "$rvm_gemset_name" in
- *${rvm_gemset_separator:-"@"}*)
- rvm_ruby_string="${rvm_gemset_name%%${rvm_gemset_separator:-"@"}*}"
- rvm_gemset_name="${rvm_gemset_name##*${rvm_gemset_separator:-"@"}}"
- if
- [[ "${rvm_ruby_string:-""}" != "${rvm_gemset_name:-""}" ]]
- then
- rvm_ruby_string="$rvm_ruby_string${rvm_gemset_separator:-"@"}$rvm_gemset_name"
- fi
- rvm_ruby_gem_home="$rvm_ruby_gem_home${rvm_gemset_separator:-"@"}$rvm_gemset_name"
- ;;
- ("")
- rvm_error "Gemset was not given.\n Usage:\n rvm gemset $rvm_gemset_name <gemsetname>\n"
- return 1
- ;;
- esac
- ;;
- esac
- rvm_parse_break=1
- ;;
- gemdir|gempath|gemhome)
- rvm_ruby_args=("$rvm_token")
- rvm_action="gemset"
- rvm_gemdir_flag=1
- if
- [[ "system" == "$next_token" ]]
- then
- rvm_system_flag=1
- next_token="${1:-}"
- (( $# == 0 )) || shift
- fi
- if
- [[ "user" == "$next_token" ]]
- then
- rvm_user_flag=1
- next_token="${1:-}"
- (( $# == 0 )) || shift
- fi
- ;;
- pkg)
- rvm_action="$rvm_token"
- __rvm_parse_args_find_known_flags rvm_ruby_args "$next_token" "$@"
- rvm_parse_break=1
- ;;
- do|exec)
- if
- [[ -z "$next_token" ]]
- then
- rvm_action="error"
- rvm_error_message="'rvm $rvm_token' must be followed by arguments."
- break
- fi
- rvm_action="do"
- rvm_ruby_args=("$next_token" "$@")
- rvm_parse_break=1
- ;;
- gem|rake|ruby)
- [[ "$rvm_token" == "ruby" ]] &&
- case $rvm_action in
- install|reinstall|use|remove)
- rvm_ruby_string=ruby
- rvm_ruby_strings=ruby
- continue
- ;;
- esac
- # deprecated 2011.10.11 for RVM 1.9.0, removed 2012.09.13 for RVM 1.16.0
- rvm_action=error
- rvm_error_message="Please note that \`rvm $rvm_token ...\` was removed, try \`$rvm_token $next_token $*\` or \`rvm all do $rvm_token $next_token $*\` instead."
- ;;
- fetch|version|remote_version|reset|debug|reload|update|monitor|notes|implode|seppuku|env|unexport|automount|prepare)
- rvm_action=$rvm_token
- ;;
- doctor)
- rvm_action=notes
- ;;
- mount)
- rvm_action=$rvm_token
- while
- [[ -n "${next_token:-}" ]] &&
- [[ -x "${next_token:-}" ||
- -d "${next_token:-}" ||
- "${next_token:-}" == http* ||
- "${next_token:-}" == *tar.bz2 ||
- "${next_token:-}" == *tar.gz
- ]]
- do
- rvm_ruby_args=("$next_token" "${rvm_ruby_args[@]}")
- next_token="${1:-}"
- (( $# == 0 )) || shift
- done
- ;;
- rm|remove)
- rvm_action="remove"
- rvm_remove_flag=1
- ;;
- rtfm|RTFM|rvmrc|help|inspect|list|ls|info|strings|get|current|docs|alias|rubygems|cleanup|tools|disk-usage|snapshot|repair|migrate|downgrade|upgrade|cron|group|switch|which|config-get|requirements|autolibs|osx-ssl-certs|fix-permissions)
- case "$rvm_token" in
- (downgrade) rvm_action="upgrade" ;;
- (ls) rvm_action="list" ;;
- (RTFM) rvm_action="rtfm" ;;
- (*) rvm_action="$rvm_token" ;;
- esac
- rvm_ruby_args=()
- __rvm_parse_args_find_known_flags rvm_ruby_args "$next_token" "$@"
- rvm_parse_break=1
- ;;
- user)
- rvm_action="tools"
- rvm_ruby_args=("$rvm_token" "$next_token" "$@")
- rvm_parse_break=1
- ;;
- load-rvmrc)
- rvm_action="rvmrc"
- rvm_ruby_args=("load" "$next_token" "$@")
- rvm_parse_break=1
- ;;
- specs|tests)
- rvm_action="rake"
- rvm_ruby_args=("${rvm_token/%ss/s}")
- ;;
- export)
- if
- [[ -n "$next_token" ]]
- then
- \typeset -a ___args
- ___args=( "$next_token" "$@" )
- rvm_export_args="${___args[*]}"
- rvm_action="export"
- rvm_parse_break=1
- else
- rvm_action="error"
- rvm_error_message="rvm export must be followed by a NAME=VALUE argument"
- fi
- ;;
- alt*)
- rvm_action="help"
- rvm_ruby_args=("alt.md")
- rvm_parse_break=1
- ;;
- wrapper)
- rvm_action="wrapper"
- rvm_ruby_args=( "$next_token" "$@")
- rvm_parse_break=1
- ;;
- in)
- rvm_token="${next_token}"
- next_token="${1:-}"
- (( $# == 0 )) || shift
- export rvm_in_flag="$rvm_token"
- __rvm_project_dir_check "$rvm_token" &&
- __rvm_rvmrc_tools try_to_read_ruby $rvm_token ||
- __rvm_parse_args_error_finding_project_file
- ;;
- usage)
- rvm_action="deprecated"
- rvm_error_message="This command has been deprecated. Use ${rvm_notify_clr:-}rvm help${rvm_error_clr:-} instead."
- rvm_parse_break=1
- ;;
- *,*)
- rvm_ruby_strings="$rvm_token"
- [[ -n "${rvm_action:-""}" ]] ||
- rvm_action="ruby" # Not sure if we really want to do this but we'll try it out.
- ;;
- ${rvm_gemset_separator:-"@"}*)
- rvm_action="${rvm_action:-use}"
- rvm_gemset_name="${rvm_token#${rvm_gemset_separator:-"@"}}"
- rvm_ruby_string="${rvm_ruby_string:-${GEM_HOME##*/}}"
- rvm_ruby_string="${rvm_ruby_string%%${rvm_gemset_separator:-"@"}*}"
- rvm_ruby_strings="${rvm_ruby_string}${rvm_gemset_separator:-"@"}${rvm_gemset_name}"
- ;;
- *${rvm_gemset_separator:-"@"}*)
- rvm_verbose_flag=1
- rvm_action="${rvm_action:-use}"
- rvm_gemset_name="${rvm_token/*${rvm_gemset_separator:-"@"}/}"
- rvm_ruby_string="$rvm_token"
- rvm_ruby_strings="$rvm_token"
- ;;
- *+*)
- rvm_action="${rvm_action:-use}"
- rvm_ruby_alias="${rvm_token/*+/}"
- rvm_ruby_string="${rvm_token/+*/}"
- rvm_ruby_strings="$rvm_ruby_string"
- ;;
- *-*|+([0-9]).+([0-9])*)
- rvm_verbose_flag=1
- rvm_action="${rvm_action:-use}"
- rvm_ruby_string="$rvm_token"
- rvm_ruby_strings="$rvm_token"
- ;;
- opal*|jruby*|ree*|macruby*|rbx*|rubinius*|mruby|ironruby*|default*|maglev*|topaz*|truffleruby*|ruby*|system|default|all)
- rvm_action="${rvm_action:-use}"
- rvm_ruby_interpreter="$rvm_token"
- rvm_ruby_string="$rvm_token"
- rvm_ruby_strings="$rvm_token"
- ;;
- kiji*|tcs*|jamesgolick*)
- rvm_error_message="The $rvm_token was removed from RVM, use: rvm install ruby-head-<name> --url https://github.com/github/ruby.git --branch 2.1"
- rvm_action="error"
- ;;
- old)
- case "${rvm_action:-action-missing}" in
- remove)
- rvm_ruby_strings="old:${next_token:-}"
- next_token="${1:-}"
- (( $# == 0 )) || shift
- ;;
- action-missing)
- rvm_error_message="what do you want to do with old rubies? rvm can only remove old rubies."
- rvm_action="error"
- ;;
- *)
- rvm_error_message="rvm can not $rvm_action old rubies, rvm can only remove old rubies."
- rvm_action="error"
- ;;
- esac
- ;;
- *.rb) # we have a specified ruby script
- rvm_ruby_args=("$rvm_token")
- rvm_ruby_file="$rvm_token"
- if
- [[ -z "${rvm_action:-""}" || "$rvm_action" == "use" ]]
- then
- rvm_action="ruby"
- fi
- ;;
- *.gems)
- rvm_file_name="${rvm_token}"
- ;;
- ("")
- rvm_action="error"
- rvm_error_message="Unrecognized command line argument(s): $@"
- ;;
- *)
- if
- [[ "gemset" == "$rvm_action" ]]
- then
- rvm_gemset_name="${rvm_token/.gems/}"
- rvm_file_name="$rvm_gemset_name.gems"
- elif
- [[ -f "$rvm_rubies_path/$rvm_token" || -L "$rvm_rubies_path/$rvm_token" ]] # ruby || alias
- then
- rvm_ruby_string=$rvm_token
- rvm_ruby_strings="$rvm_token"
- rvm_action="${rvm_action:-use}"
- elif
- [[ -d "$rvm_token" ]] ||
- __rvm_project_dir_check "$rvm_token"
- then
- __rvm_rvmrc_tools try_to_read_ruby $rvm_token ||
- __rvm_parse_args_error_finding_project_file
- else
- rvm_action="error"
- rvm_error_message="Unrecognized command line argument: $rvm_token"
- fi
- ;;
- esac
- ;;
- -*) # Flags
- case "$rvm_token" in
- -S)
- rvm_action="ruby"
- rvm_ruby_args=("$rvm_token" "$next_token" "$@")
- rvm_parse_break=1
- ;;
- -e)
- rvm_action="ruby"
- IFS="\n"
- rvm_ruby_args=("$rvm_token" "'$next_token $@'")
- IFS=" "
- rvm_parse_break=1
- ;;
- -v|--version)
- if [[ -z "$next_token" ]] ; then
- rvm_action="version"
- else
- rvm_ruby_version="$next_token"
- next_token="${1:-}"
- (( $# == 0 )) || shift
- fi
- ;;
- -n|--name)
- rvm_ruby_name="$next_token"
- next_token="${1:-}"
- (( $# == 0 )) || shift
- #TODO: ??? rvm_disable_binary_flag=1
- ;;
- --branch)
- rvm_ruby_repo_branch="$next_token"
- next_token="${1:-}"
- (( $# == 0 )) || shift
- rvm_disable_binary_flag=1
- ;;
- --tag)
- rvm_ruby_repo_tag="$next_token"
- next_token="${1:-}"
- (( $# == 0 )) || shift
- rvm_disable_binary_flag=1
- ;;
- --repository|--repo|--url)
- rvm_ruby_repo_url="$next_token"
- next_token="${1:-}"
- (( $# == 0 )) || shift
- rvm_disable_binary_flag=1
- ;;
- -r|--remote|--binary|--latest-binary)
- rvm_remote_flag=1
- if [[ "$rvm_token" == "--latest-binary" ]]
- then rvm_fuzzy_flag=1
- fi
- while
- [[ -n "${next_token:-}" ]] &&
- [[ "${next_token:-}" == http* ||
- "${next_token:-}" == *tar.bz2 ||
- "${next_token:-}" == *tar.gz ||
- "${next_token:-}" == *":"*
- ]]
- do
- rvm_ruby_args=("${rvm_ruby_args[@]}" "$next_token")
- next_token="${1:-}"
- (( $# == 0 )) || shift
- done
- ;;
- --ree-options)
- if
- [[ -n "$next_token" ]]
- then
- __rvm_custom_separated_array rvm_ree_options , "${next_token}"
- next_token="${1:-}"
- (( $# == 0 )) || shift
- else
- rvm_action="error"
- rvm_error_message="--ree-options *must* be followed by... well... comma,separated,list,of,options."
- fi
- ;;
- --patches|--patch)
- __rvm_custom_separated_array rvm_patch_names , "$next_token"
- next_token="${1:-}"
- (( $# == 0 )) || shift
- rvm_patch_original_pwd="$PWD"
- rvm_disable_binary_flag=1
- ;;
- --arch|--archflags)
- rvm_architectures+=( "${next_token#-arch }" )
- next_token="${1:-}"
- (( $# == 0 )) || shift
- rvm_disable_binary_flag=1
- ;;
- --with-arch=*)
- rvm_architectures+=( "${rvm_token#--with-arch=}" )
- rvm_disable_binary_flag=1
- ;;
- --32|--64)
- rvm_architectures+=( "${rvm_token#--}" )
- rvm_disable_binary_flag=1
- ;;
- --universal)
- rvm_architectures+=( "32" "64" )
- rvm_disable_binary_flag=1
- ;;
- --bin)
- rvm_bin_path="$next_token"
- next_token="${1:-}"
- (( $# == 0 )) || shift
- ;;
- --rdoc|--yard)
- rvm_docs_type="$rvm_token"
- rvm_docs_type
- ;;
- -f|--file)
- rvm_action="ruby"
- rvm_ruby_file="$next_token"
- next_token="${1:-}"
- (( $# == 0 )) || shift
- ;;
- --passenger|--editor)
- rvm_warn "NOTE: ${rvm_token} flag is deprecated, RVM now automatically generates wrappers" # 2017-09-21
- ;;
- -h|--help)
- rvm_action=help
- ;;
- -l|--level)
- rvm_ruby_patch_level="p$next_token"
- next_token="${1:-}"
- (( $# == 0 )) || shift
- ;;
- --sha|--make|--make-install)
- rvm_token=${rvm_token#--}
- rvm_token=${rvm_token//-/_}
- export "rvm_ruby_${rvm_token}"="$next_token"
- next_token="${1:-}"
- rvm_disable_binary_flag=1
- (( $# == 0 )) || shift
- ;;
- --nice|--sdk|--autoconf-flags|--proxy)
- rvm_token=${rvm_token#--}
- rvm_token=${rvm_token//-/_}
- export "rvm_${rvm_token}"="$next_token"
- next_token="${1:-}"
- (( $# == 0 )) || shift
- ;;
- --disable-llvm|--disable-jit)
- rvm_llvm_flag=0
- ;;
- --enable-llvm|--enable-jit)
- rvm_llvm_flag=1
- ;;
- --install)
- rvm_install_on_use_flag=1
- ;;
- --autolibs=*)
- export rvm_autolibs_flag="${rvm_token#*=}"
- ;;
- --color=*)
- rvm_pretty_print_flag=${rvm_token#--color=}
- ;;
- --pretty)
- rvm_pretty_print_flag=auto
- ;;
- --1.8|--1.9|--2.0|--2.1|--18|--19|--20|--21)
- rvm_token=${rvm_token#--}
- rvm_token=${rvm_token//\./}
- export "rvm_${rvm_token}_flag"=1
- rvm_disable_binary_flag=1
- ;;
- --rvmrc|--versions-conf|--ruby-version)
- rvm_token=${rvm_token#--}
- rvm_token=${rvm_token//-/_}
- export rvm_rvmrc_flag="${rvm_token}"
- ;;
- --list-missing-packages)
- export rvm_list_missing_packages_flag=1
- export rvm_quiet_flag=1
- ;;
- --list-undesired-packages)
- export rvm_list_undesired_packages_flag=1
- export rvm_quiet_flag=1
- ;;
- --list-installed-packages)
- export rvm_list_installed_packages_flag=1
- export rvm_quiet_flag=1
- ;;
- --list-all-packages)
- export rvm_list_missing_packages_flag=1
- export rvm_list_undesired_packages_flag=1
- export rvm_list_installed_packages_flag=1
- export rvm_quiet_flag=1
- ;;
- --head|--static|--self|--gem|--reconfigure|--default|--force|--export|--summary|--latest|--yaml|--json|--archive|--shebang|--path|--cron|--tail|--delete|--verbose|--import|--sticky|--create|--gems|--docs|--skip-autoreconf|--force-autoconf|--auto-dotfiles|--autoinstall-bundler|--disable-binary|--ignore-gemsets|--skip-gemsets|--debug|--quiet|--silent|--skip-openssl|--fuzzy|--quiet-curl|--skip-pristine|--dynamic-extensions)
- rvm_token=${rvm_token#--}
- rvm_token=${rvm_token//-/_}
- export "rvm_${rvm_token}_flag"=1
- ;;
- --no-docs)
- rvm_token=${rvm_token#--no-}
- rvm_token=${rvm_token//-/_}
- export "rvm_${rvm_token}_flag"=0
- ;;
- --auto)
- export "rvm_auto_dotfiles_flag"=1
- rvm_warn "Warning, --auto is deprecated in favor of --auto-dotfiles."
- ;;
- --rubygems)
- rvm_token=${rvm_token#--}
- rvm_token=${rvm_token//-/_}
- export "rvm_${rvm_token}_version"="$next_token"
- next_token="${1:-}"
- (( $# == 0 )) || shift
- ;;
- --dump-environment|--max-time)
- rvm_token=${rvm_token#--}
- rvm_token=${rvm_token//-/_}
- export "rvm_${rvm_token}_flag"="$next_token"
- next_token="${1:-}"
- (( $# == 0 )) || shift
- ;;
- --verify-downloads)
- rvm_token=${rvm_token#--}
- rvm_token=${rvm_token//-/_}
- export "rvm_${rvm_token}_flag_cli"="$next_token"
- next_token="${1:-}"
- (( $# == 0 )) || shift
- ;;
- --clang)
- export CC=clang
- export CXX=clang++
- rvm_disable_binary_flag=1
- ;;
- -M)
- if
- [[ -n "$next_token" ]]
- then
- __rvm_custom_separated_array rvm_make_flags , "${next_token}"
- next_token="${1:-}"
- (( $# == 0 )) || shift
- rvm_disable_binary_flag=1
- else
- rvm_action="error"
- rvm_error_message="--make *must* be followed by make flags."
- fi
- ;;
- -j)
- if
- [[ -n "$next_token" ]]
- then
- rvm_make_flags+=( -j$next_token )
- next_token="${1:-}"
- (( $# == 0 )) || shift
- else
- rvm_action="error"
- rvm_error_message="-j *must* be followed by an integer (normally the # of CPU's in your machine)."
- fi
- ;;
- --with-rubies)
- rvm_ruby_strings="$next_token"
- next_token="${1:-}"
- (( $# == 0 )) || shift
- ;;
- -C|--configure)
- if
- [[ -n "$next_token" ]]
- then
- __rvm_custom_separated_array rvm_configure_flags , "${next_token}"
- next_token="${1:-}"
- (( $# == 0 )) || shift
- rvm_disable_binary_flag=1
- else
- rvm_action="error"
- rvm_error_message="--configure *must* be followed by configure flags."
- fi
- ;;
- -E|--env)
- if
- [[ -n "$next_token" ]]
- then
- __rvm_custom_separated_array rvm_configure_env , "${next_token}"
- next_token="${1:-}"
- (( $# == 0 )) || shift
- rvm_disable_binary_flag=1
- else
- rvm_action="error"
- rvm_error_message="--configure *must* be followed by configure flags."
- fi
- ;;
- --movable)
- rvm_movable_flag=1
- rvm_disable_binary_flag=1
- ;;
- --with-*|--without-*|--enable-*|--disable-*)
- rvm_configure_flags+=( "$rvm_token" )
- rvm_disable_binary_flag=1
- ;;
- --trace)
- export rvm_trace_flag=1
- # duplication marker jkdfkdfngjdjkfngjkdfngjkd
- if [[ -n "${BASH_VERSION:-}" ]]
- then export PS4="+ \$(__rvm_date \"+%s.%N\" 2>/dev/null) \${BASH_SOURCE##\${rvm_path:-}} : \${FUNCNAME[0]:+\${FUNCNAME[0]}()} \${LINENO} > "
- elif [[ -n "${ZSH_VERSION:-}" ]]
- then export PS4="+ %* %F{red}%x:%I %F{green}%N:%i%F{white} %_"
- fi
- set -o xtrace
- ;;
- --)
- if [[ "${rvm_action}" == *install ]]
- then rvm_configure_flags+=( "$next_token" "$@" )
- else rvm_ruby_args=( "$next_token" "$@" )
- fi
- rvm_disable_binary_flag=1
- rvm_parse_break=1
- ;;
- *)
- rvm_action="error"
- rvm_error_message="Unrecognized command line flag: '$rvm_token'"
- esac
- ;;
- *)
- if
- [[ -d "$rvm_token" ]] ||
- __rvm_project_dir_check "$rvm_token"
- then
- __rvm_rvmrc_tools try_to_read_ruby "$rvm_token" ||
- __rvm_parse_args_error_finding_project_file
- else
- rvm_action="error"
- rvm_error_message="Unrecognized command line argument(s): '$rvm_token $@'"
- fi
- ;;
- esac
- if [[ -z "${rvm_action:-""}" && -n "${rvm_ruby_string:-""}" ]]
- then rvm_action="use"
- fi
- if [[ "error" == "${rvm_action:-""}" || ${rvm_parse_break:-0} -eq 1 || -n "${rvm_error_message:-""}" ]]
- then break
- fi
- done
- : rvm_ruby_args:${#rvm_ruby_args[@]}:${rvm_ruby_args[*]}:
- if
- [[ -n "${rvm_error_message:-""}" ]]
- then
- if
- [[ "${rvm_action}" == "deprecated" ]]
- then
- rvm_error "$rvm_error_message"
- else
- rvm_error "$rvm_error_message"
- rvm_out "Run \`rvm help\` to see usage information"
- fi
- unset rvm_error_message
- return 1
- fi
- }
- rvm()
- {
- \typeset result current_result
- rvm_ruby_args=()
- __rvm_teardown_if_broken
- __rvm_cli_posix_check || return $?
- __rvm_cli_load_rvmrc || return $?
- __rvm_cli_version_check "$@" || return $?
- __rvm_initialize
- __rvm_path_match_gem_home_check
- __rvm_setup
- __rvm_cli_autoupdate "$@" || return $?
- next_token="$1"
- (( $# == 0 )) || shift
- __rvm_parse_args "$@"
- result=$?
- : rvm_ruby_args:${#rvm_ruby_args[@]}:${rvm_ruby_args[*]}:
- (( ${rvm_trace_flag:-0} == 0 )) || set -o xtrace
- (( result )) ||
- case "${rvm_action:=help}" in
- use)
- if rvm_is_a_shell_function
- then __rvm_use && __rvm_use_ruby_warnings
- fi
- ;;
- switch)
- if rvm_is_a_shell_function
- then __rvm_switch "${rvm_ruby_args[@]}"
- fi
- ;;
- inspect|strings|version|remote_version)
- __rvm_${rvm_action}
- ;;
- ls|list)
- "$rvm_scripts_path/list" "${rvm_ruby_args[@]}"
- ;;
- # TODO: Make debug run in the current environment, issues with not exported vars.
- debug)
- rvm_is_not_a_shell_function="${rvm_is_not_a_shell_function}" "$rvm_scripts_path/info" '' debug
- ;;
- info)
- rvm_is_not_a_shell_function="${rvm_is_not_a_shell_function}" "$rvm_scripts_path/${rvm_action}" "${rvm_ruby_args[@]}"
- ;;
- reset)
- source "$rvm_scripts_path/functions/${rvm_action}"
- __rvm_${rvm_action}
- ;;
- update)
- printf "%b" "ERROR: rvm update has been removed. Try 'rvm get head' or see the 'rvm get' and rvm 'rubygems' CLI API instead\n"
- ;;
- implode|seppuku)
- source "$rvm_scripts_path/functions/implode"
- __rvm_implode
- ;;
- get)
- next_token="${1:-}"
- (( $# == 0 )) || shift
- [[ "$next_token" == "${rvm_action}" ]] && shift
- __rvm_cli_rvm_get "${rvm_ruby_args[@]}"
- ;;
- current)
- __rvm_env_string
- ;;
- help|rtfm|env|list|monitor|notes|pkg|requirements)
- next_token="${1:-}"
- (( $# == 0 )) || shift
- if (( $# )) && [[ "$next_token" == "${rvm_action}" ]] #TODO why is this check here ???
- then shift
- fi
- "$rvm_scripts_path/${rvm_action}" "${rvm_ruby_args[@]}"
- ;;
- cleanup|tools|snapshot|disk-usage|repair|alias|docs|rubygems|migrate|cron|group|wrapper)
- "$rvm_scripts_path/${rvm_action}" "${rvm_ruby_args[@]}"
- ;;
- upgrade)
- # file action params
- __rvm_fix_selected_ruby \
- __rvm_run_wrapper "$rvm_action" "$rvm_action" "${rvm_ruby_args[@]}"
- ;;
- autolibs|osx-ssl-certs|fix-permissions)
- # file action params
- __rvm_run_wrapper "$rvm_action" "$rvm_action" "${rvm_ruby_args[@]}"
- ;;
- do)
- old_rvm_ruby_string=${rvm_ruby_string:-}
- unset rvm_ruby_string
- export rvm_ruby_strings rvm_in_flag
- result=0
- # run in a subprocess only when a function, when called via PATH just replace the process
- if rvm_is_a_shell_function no_warning
- then "$rvm_scripts_path/set" "$rvm_action" "${rvm_ruby_args[@]}" || result=$?
- else exec "$rvm_scripts_path/set" "$rvm_action" "${rvm_ruby_args[@]}" || result=$?
- fi
- # Restore the state pre-sets.
- [[ -n "$old_rvm_ruby_string" ]] && rvm_ruby_string=$old_rvm_ruby_string
- unset old_rvm_ruby_string
- ;;
- rvmrc)
- __rvm_rvmrc_tools "${rvm_ruby_args[@]}"
- ;;
- config-get)
- \typeset __ruby __var
- __ruby=$( __rvm_which ruby )
- for __var in "${rvm_ruby_args[@]}"
- do
- __rvm_ruby_config_get "${__var}" "${__ruby}"
- done
- ;;
- gemset_use)
- if rvm_is_a_shell_function
- then __rvm_gemset_use
- fi
- ;;
- gemset)
- export rvm_ruby_strings
- "$rvm_scripts_path/gemsets" "${rvm_ruby_args[@]}"
- result=$?
- rvm_ruby_strings=""
- if
- rvm_is_a_shell_function no_warning
- then
- # Clear the gemset.
- if
- [[ ${rvm_delete_flag:-0} -eq 1 ]]
- then
- if
- [[ "${GEM_HOME:-""}" == "${GEM_HOME%%${rvm_gemset_separator:-@}*}${rvm_gemset_separator:-@}${rvm_gemset_name}" ]]
- then
- rvm_delete_flag=0
- __rvm_use "@default"
- fi
- unset gem_prefix
- elif
- [[ "${rvm_ruby_args[*]}" == rename* ]]
- then
- \typeset _command _from _to
- read _command _from _to <<<"${rvm_ruby_args[*]}"
- if
- [[ "${GEM_HOME:-""}" == "${GEM_HOME%%${rvm_gemset_separator:-@}*}${rvm_gemset_separator:-@}${_from}" ]]
- then
- __rvm_use "@${_to}"
- fi
- fi
- fi
- ;;
- reload)
- rvm_reload_flag=1
- ;;
- tests|specs)
- rvm_action="rake"
- __rvm_do
- ;;
- remove)
- export rvm_path
- if [[ -n "${rvm_ruby_strings}" ]]
- then __rvm_run_wrapper manage "$rvm_action" "${rvm_ruby_strings//*-- }"
- else __rvm_run_wrapper manage "$rvm_action"
- fi
- __rvm_use default
- ;;
- fetch|uninstall|reinstall)
- export rvm_path
- if [[ -n "${rvm_ruby_strings}" ]]
- then __rvm_run_wrapper manage "$rvm_action" "${rvm_ruby_strings//*-- }"
- else __rvm_run_wrapper manage "$rvm_action"
- fi
- ;;
- try_install|install)
- export rvm_path
- __rvm_cli_install_ruby "${rvm_ruby_strings}"
- ;;
- automount)
- if [[ -n "$rvm_ruby_string" ]]
- then rvm_ruby_args=( "$rvm_ruby_string" "${rvm_ruby_args[@]}" )
- fi
- "${rvm_scripts_path}/mount" "$rvm_action" "${rvm_ruby_args[@]}"
- ;;
- mount|prepare)
- if [[ -n "$rvm_ruby_string" ]]
- then rvm_ruby_args=( "$rvm_ruby_string" "${rvm_ruby_args[@]}" )
- fi
- "${rvm_scripts_path}/$rvm_action" "$rvm_action" "${rvm_ruby_args[@]}"
- ;;
- export)
- __rvm_export "$rvm_export_args"
- ;;
- unexport)
- __rvm_unset_exports
- ;;
- error)
- false
- ;;
- which)
- __rvm_which "${rvm_ruby_args[@]}"
- ;;
- *)
- rvm_error "unknown action '$rvm_action'"
- false # result
- ;;
- esac
- current_result=$? # Use the result of first found error
- (( result )) || result=${current_result}
- (( result )) ||
- case "$rvm_action" in
- reinstall|try_install|install)
- if
- [[ -n "${rvm_ruby_string}" ]]
- rvm_is_a_shell_function no_warning
- then
- if [[ -e "${rvm_environments_path}/default" ]]
- then rvm_verbose_flag=0 __rvm_use
- else rvm_verbose_flag=0 rvm_default_flag=1 __rvm_use
- fi
- fi
- ;;
- esac
- current_result=$? # Use the result of first found error
- (( result )) || result=${current_result}
- \typeset __local_rvm_trace_flag
- __local_rvm_trace_flag=${rvm_trace_flag:-0}
- __rvm_cli_autoreload
- if (( __local_rvm_trace_flag > 0 ))
- then
- set +o verbose
- set +o xtrace
- [[ -n "${ZSH_VERSION:-""}" ]] || set +o errtrace
- fi
- return ${result:-0}
- }
|