| 
									
										
										
										
											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 | 
					
						
							| 
									
										
										
										
											2024-06-14 12:22:02 +01:00
										 |  |  | # HOMEBREW_LIBRARY set by bin/brew | 
					
						
							|  |  |  | # shellcheck disable=SC2154 | 
					
						
							|  |  |  | export HOMEBREW_REQUIRED_RUBY_VERSION="3.3" | 
					
						
							|  |  |  | HOMEBREW_PORTABLE_RUBY_VERSION="$(cat "${HOMEBREW_LIBRARY}/Homebrew/vendor/portable-ruby-version")" | 
					
						
							| 
									
										
										
										
											2023-12-05 02:10:01 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-02 10:33:42 +01:00
										 |  |  | # Disable Ruby options we don't need. | 
					
						
							|  |  |  | export HOMEBREW_RUBY_DISABLE_OPTIONS="--disable=gems,rubyopt" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-14 12:22:02 +01:00
										 |  |  | # HOMEBREW_LIBRARY set by bin/brew | 
					
						
							| 
									
										
										
										
											2021-04-21 22:19:35 +09:00
										 |  |  | # 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_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" | 
					
						
							| 
									
										
										
										
											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}" | 
					
						
							| 
									
										
										
										
											2024-06-14 12:22:02 +01:00
										 |  |  |     if [[ "${vendor_ruby_current_version}" != "${HOMEBREW_PORTABLE_RUBY_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 | 
					
						
							| 
									
										
										
										
											2025-04-07 16:55:20 +01:00
										 |  |  |     HOMEBREW_BOOTSNAP_GEM_PATH="$( | 
					
						
							|  |  |  |       shopt -s nullglob | 
					
						
							|  |  |  |       echo "${vendor_ruby_root}"/lib/ruby/gems/*/gems/bootsnap-*/lib/bootsnap 2>/dev/null | 
					
						
							|  |  |  |     )"
 | 
					
						
							| 
									
										
										
										
											2020-05-21 15:06:21 -05:00
										 |  |  |   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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-03-31 17:15:31 +01:00
										 |  |  |   export HOMEBREW_RUBY_PATH HOMEBREW_BOOTSNAP_GEM_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
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2024-05-02 10:33:42 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | setup-gem-home-bundle-gemfile() { | 
					
						
							|  |  |  |   GEM_VERSION="$("${HOMEBREW_RUBY_PATH}" "${HOMEBREW_RUBY_DISABLE_OPTIONS}" "${HOMEBREW_LIBRARY}/Homebrew/utils/ruby_sh/ruby_gem_version.rb")" | 
					
						
							|  |  |  |   GEM_HOME="${HOMEBREW_LIBRARY}/Homebrew/vendor/bundle/ruby/${GEM_VERSION}" | 
					
						
							|  |  |  |   BUNDLE_GEMFILE="${HOMEBREW_LIBRARY}/Homebrew/Gemfile" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   export GEM_HOME | 
					
						
							|  |  |  |   export BUNDLE_GEMFILE | 
					
						
							|  |  |  | } |