| 
									
										
										
										
											2023-04-12 12:22:20 +01:00
										 |  |  | # When bumping, run `brew vendor-gems --update=--ruby` | 
					
						
							|  |  |  | # When bumping to a new major/minor version, also update the bounds in the Gemfile | 
					
						
							| 
									
										
										
										
											2023-12-05 02:10:01 +00:00
										 |  |  | export HOMEBREW_REQUIRED_RUBY_VERSION=3.1 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-21 22:19:35 +09:00
										 |  |  | # HOMEBREW_LIBRARY is from the user environment | 
					
						
							|  |  |  | # shellcheck disable=SC2154 | 
					
						
							| 
									
										
										
										
											2021-01-26 15:21:24 -05:00
										 |  |  | test_ruby() { | 
					
						
							| 
									
										
										
										
											2021-09-11 01:15:13 +08:00
										 |  |  |   if [[ ! -x "$1" ]] | 
					
						
							| 
									
										
										
										
											2020-06-03 18:01:38 -05:00
										 |  |  |   then | 
					
						
							|  |  |  |     return 1 | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-12-05 02:10:01 +00:00
										 |  |  |   "$1" --enable-frozen-string-literal --disable=gems,did_you_mean,rubyopt \
 | 
					
						
							|  |  |  |     "${HOMEBREW_LIBRARY}/Homebrew/utils/ruby_check_version_script.rb" \
 | 
					
						
							|  |  |  |     "${HOMEBREW_REQUIRED_RUBY_VERSION}" 2>/dev/null | 
					
						
							| 
									
										
										
										
											2020-05-15 10:30:45 -05:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-12-12 03:09:59 +00:00
										 |  |  | system_ruby_supported() { | 
					
						
							|  |  |  |   ([[ -z "${HOMEBREW_MACOS}" ]] || can_use_ruby_from_path) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-31 15:16:34 +01:00
										 |  |  | can_use_ruby_from_path() { | 
					
						
							| 
									
										
										
										
											2023-09-29 01:58:41 +01:00
										 |  |  |   if [[ -n "${HOMEBREW_DEVELOPER}" || -n "${HOMEBREW_TESTS}" ]] && [[ -n "${HOMEBREW_USE_RUBY_FROM_PATH}" ]] | 
					
						
							| 
									
										
										
										
											2022-08-31 15:16:34 +01:00
										 |  |  |   then | 
					
						
							|  |  |  |     return 0 | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   return 1 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | find_first_valid_ruby() { | 
					
						
							|  |  |  |   local ruby_exec | 
					
						
							|  |  |  |   while IFS= read -r ruby_exec | 
					
						
							|  |  |  |   do | 
					
						
							|  |  |  |     if test_ruby "${ruby_exec}" | 
					
						
							|  |  |  |     then | 
					
						
							|  |  |  |       echo "${ruby_exec}" | 
					
						
							|  |  |  |       break | 
					
						
							|  |  |  |     fi | 
					
						
							|  |  |  |   done | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-21 22:19:35 +09:00
										 |  |  | # HOMEBREW_PATH is set by global.rb | 
					
						
							| 
									
										
										
										
											2021-09-11 01:15:13 +08:00
										 |  |  | # shellcheck disable=SC2154 | 
					
						
							| 
									
										
										
										
											2020-08-13 23:45:10 +00:00
										 |  |  | find_ruby() { | 
					
						
							| 
									
										
										
										
											2023-12-12 03:09:59 +00:00
										 |  |  |   local valid_ruby | 
					
						
							| 
									
										
										
										
											2022-08-31 15:16:34 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-12-12 03:09:59 +00:00
										 |  |  |   # Prioritise rubies from the filtered path (/usr/bin etc) unless explicitly overridden. | 
					
						
							|  |  |  |   if ! can_use_ruby_from_path | 
					
						
							|  |  |  |   then | 
					
						
							|  |  |  |     # function which() is set by brew.sh | 
					
						
							|  |  |  |     # it is aliased to `type -P` | 
					
						
							|  |  |  |     # shellcheck disable=SC2230 | 
					
						
							|  |  |  |     valid_ruby=$(find_first_valid_ruby < <(which -a ruby)) | 
					
						
							|  |  |  |   fi | 
					
						
							| 
									
										
										
										
											2022-08-31 15:16:34 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-12-12 03:09:59 +00:00
										 |  |  |   if [[ -z "${valid_ruby}" ]] | 
					
						
							|  |  |  |   then | 
					
						
							|  |  |  |     # Same as above | 
					
						
							|  |  |  |     # shellcheck disable=SC2230 | 
					
						
							|  |  |  |     valid_ruby=$(find_first_valid_ruby < <(PATH="${HOMEBREW_PATH}" which -a ruby)) | 
					
						
							| 
									
										
										
										
											2020-08-13 23:45:10 +00:00
										 |  |  |   fi | 
					
						
							| 
									
										
										
										
											2023-12-12 03:09:59 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   echo "${valid_ruby}" | 
					
						
							| 
									
										
										
										
											2020-08-13 23:45:10 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-21 22:19:35 +09:00
										 |  |  | # HOMEBREW_FORCE_VENDOR_RUBY is from the user environment | 
					
						
							|  |  |  | # shellcheck disable=SC2154 | 
					
						
							| 
									
										
										
										
											2020-12-08 18:05:28 -06:00
										 |  |  | need_vendored_ruby() { | 
					
						
							| 
									
										
										
										
											2023-11-07 19:27:30 +00:00
										 |  |  |   if [[ -n "${HOMEBREW_FORCE_VENDOR_RUBY}" ]] | 
					
						
							| 
									
										
										
										
											2020-12-08 18:05:28 -06:00
										 |  |  |   then | 
					
						
							|  |  |  |     return 0 | 
					
						
							| 
									
										
										
										
											2023-12-12 03:09:59 +00:00
										 |  |  |   elif system_ruby_supported && test_ruby "${HOMEBREW_RUBY_PATH}" | 
					
						
							| 
									
										
										
										
											2020-08-13 23:45:10 +00:00
										 |  |  |   then | 
					
						
							|  |  |  |     return 1 | 
					
						
							| 
									
										
										
										
											2020-08-14 12:37:10 +00:00
										 |  |  |   else | 
					
						
							|  |  |  |     return 0 | 
					
						
							| 
									
										
										
										
											2020-08-13 23:45:10 +00:00
										 |  |  |   fi | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-21 22:19:35 +09:00
										 |  |  | # HOMEBREW_LINUX is set by brew.sh | 
					
						
							|  |  |  | # shellcheck disable=SC2154 | 
					
						
							| 
									
										
										
										
											2016-06-28 23:41:28 +08:00
										 |  |  | setup-ruby-path() { | 
					
						
							|  |  |  |   local vendor_dir | 
					
						
							| 
									
										
										
										
											2020-08-12 17:07:41 -05:00
										 |  |  |   local vendor_ruby_root | 
					
						
							| 
									
										
										
										
											2016-06-28 23:41:28 +08:00
										 |  |  |   local vendor_ruby_path | 
					
						
							| 
									
										
										
										
											2020-08-12 17:07:41 -05:00
										 |  |  |   local vendor_ruby_terminfo | 
					
						
							| 
									
										
										
										
											2020-05-21 17:15:14 -05:00
										 |  |  |   local vendor_ruby_latest_version | 
					
						
							|  |  |  |   local vendor_ruby_current_version | 
					
						
							| 
									
										
										
										
											2020-05-19 12:24:00 -05:00
										 |  |  |   local ruby_exec | 
					
						
							| 
									
										
										
										
											2020-08-13 23:45:10 +00:00
										 |  |  |   local upgrade_fail | 
					
						
							|  |  |  |   local install_fail | 
					
						
							| 
									
										
										
										
											2020-08-14 12:37:10 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  |   if [[ -n "${HOMEBREW_MACOS}" ]] | 
					
						
							| 
									
										
										
										
											2020-08-13 23:45:10 +00:00
										 |  |  |   then | 
					
						
							|  |  |  |     upgrade_fail="Failed to upgrade Homebrew Portable Ruby!" | 
					
						
							|  |  |  |     install_fail="Failed to install Homebrew Portable Ruby (and your system version is too old)!" | 
					
						
							|  |  |  |   else | 
					
						
							| 
									
										
										
										
											2020-08-14 12:37:10 +00:00
										 |  |  |     local advice="
 | 
					
						
							|  |  |  | If there's no Homebrew Portable Ruby available for your processor: | 
					
						
							| 
									
										
										
										
											2021-04-21 22:19:35 +09:00
										 |  |  | - install Ruby ${HOMEBREW_REQUIRED_RUBY_VERSION} with your system package manager (or rbenv/ruby-build) | 
					
						
							| 
									
										
										
										
											2020-08-14 12:37:10 +00:00
										 |  |  | - make it first in your PATH | 
					
						
							|  |  |  | - try again | 
					
						
							|  |  |  | "
 | 
					
						
							| 
									
										
										
										
											2021-04-21 22:19:35 +09:00
										 |  |  |     upgrade_fail="Failed to upgrade Homebrew Portable Ruby!${advice}" | 
					
						
							|  |  |  |     install_fail="Failed to install Homebrew Portable Ruby and cannot find another Ruby ${HOMEBREW_REQUIRED_RUBY_VERSION}!${advice}" | 
					
						
							| 
									
										
										
										
											2020-08-13 23:45:10 +00:00
										 |  |  |   fi | 
					
						
							| 
									
										
										
										
											2016-06-28 23:41:28 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-21 22:19:35 +09:00
										 |  |  |   vendor_dir="${HOMEBREW_LIBRARY}/Homebrew/vendor" | 
					
						
							|  |  |  |   vendor_ruby_root="${vendor_dir}/portable-ruby/current" | 
					
						
							|  |  |  |   vendor_ruby_path="${vendor_ruby_root}/bin/ruby" | 
					
						
							|  |  |  |   vendor_ruby_terminfo="${vendor_ruby_root}/share/terminfo" | 
					
						
							| 
									
										
										
										
											2023-11-29 15:27:50 +00:00
										 |  |  |   vendor_ruby_latest_version="$(cat "${vendor_dir}/portable-ruby-version")" | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  |   vendor_ruby_current_version="$(readlink "${vendor_ruby_root}")" | 
					
						
							| 
									
										
										
										
											2016-06-28 23:41:28 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-05-15 14:21:51 -05:00
										 |  |  |   unset HOMEBREW_RUBY_PATH | 
					
						
							| 
									
										
										
										
											2016-06-28 23:41:28 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-21 22:19:35 +09:00
										 |  |  |   if [[ "${HOMEBREW_COMMAND}" == "vendor-install" ]] | 
					
						
							| 
									
										
										
										
											2020-08-14 12:37:10 +00:00
										 |  |  |   then | 
					
						
							|  |  |  |     return 0 | 
					
						
							|  |  |  |   fi | 
					
						
							| 
									
										
										
										
											2020-05-21 15:06:21 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-21 22:19:35 +09:00
										 |  |  |   if [[ -x "${vendor_ruby_path}" ]] | 
					
						
							| 
									
										
										
										
											2020-05-21 15:06:21 -05:00
										 |  |  |   then | 
					
						
							| 
									
										
										
										
											2021-04-21 22:19:35 +09:00
										 |  |  |     HOMEBREW_RUBY_PATH="${vendor_ruby_path}" | 
					
						
							|  |  |  |     TERMINFO_DIRS="${vendor_ruby_terminfo}" | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  |     if [[ "${vendor_ruby_current_version}" != "${vendor_ruby_latest_version}" ]] | 
					
						
							| 
									
										
										
										
											2020-05-21 15:06:21 -05:00
										 |  |  |     then | 
					
						
							| 
									
										
										
										
											2021-04-21 22:19:35 +09:00
										 |  |  |       brew vendor-install ruby || odie "${upgrade_fail}" | 
					
						
							| 
									
										
										
										
											2020-05-21 15:06:21 -05:00
										 |  |  |     fi | 
					
						
							|  |  |  |   else | 
					
						
							| 
									
										
										
										
											2023-12-12 03:09:59 +00:00
										 |  |  |     if system_ruby_supported | 
					
						
							|  |  |  |     then | 
					
						
							|  |  |  |       HOMEBREW_RUBY_PATH="$(find_ruby)" | 
					
						
							|  |  |  |     fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-08 18:05:28 -06:00
										 |  |  |     if need_vendored_ruby | 
					
						
							| 
									
										
										
										
											2020-05-21 15:06:21 -05:00
										 |  |  |     then | 
					
						
							| 
									
										
										
										
											2021-04-21 22:19:35 +09:00
										 |  |  |       brew vendor-install ruby || odie "${install_fail}" | 
					
						
							|  |  |  |       HOMEBREW_RUBY_PATH="${vendor_ruby_path}" | 
					
						
							|  |  |  |       TERMINFO_DIRS="${vendor_ruby_terminfo}" | 
					
						
							| 
									
										
										
										
											2016-06-28 23:41:28 +08:00
										 |  |  |     fi | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   export HOMEBREW_RUBY_PATH | 
					
						
							| 
									
										
										
										
											2021-04-21 22:19:35 +09:00
										 |  |  |   [[ -n "${HOMEBREW_LINUX}" && -n "${TERMINFO_DIRS}" ]] && export TERMINFO_DIRS | 
					
						
							| 
									
										
										
										
											2016-06-28 23:41:28 +08:00
										 |  |  | } |