| 
									
										
										
										
											2020-10-12 09:23:49 +01:00
										 |  |  | ##### | 
					
						
							| 
									
										
										
										
											2023-02-10 23:15:40 -05:00
										 |  |  | ##### First do the essential, fast things to ensure commands like `brew --prefix` and others that we want | 
					
						
							|  |  |  | ##### to be able to `source` in shell configurations run quickly. | 
					
						
							| 
									
										
										
										
											2020-10-12 09:23:49 +01:00
										 |  |  | ##### | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-14 15:29:43 +09:00
										 |  |  | case "${MACHTYPE}" in | 
					
						
							|  |  |  |   arm64-*) | 
					
						
							|  |  |  |     HOMEBREW_PROCESSOR="arm64" | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  |   x86_64-*) | 
					
						
							|  |  |  |     HOMEBREW_PROCESSOR="x86_64" | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  |   *) | 
					
						
							|  |  |  |     HOMEBREW_PROCESSOR="$(uname -m)" | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  | esac | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | case "${OSTYPE}" in | 
					
						
							|  |  |  |   darwin*) | 
					
						
							|  |  |  |     HOMEBREW_SYSTEM="Darwin" | 
					
						
							|  |  |  |     HOMEBREW_MACOS="1" | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  |   linux*) | 
					
						
							|  |  |  |     HOMEBREW_SYSTEM="Linux" | 
					
						
							|  |  |  |     HOMEBREW_LINUX="1" | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  |   *) | 
					
						
							|  |  |  |     HOMEBREW_SYSTEM="$(uname -s)" | 
					
						
							|  |  |  |     ;; | 
					
						
							| 
									
										
										
										
											2020-07-20 10:26:40 -07:00
										 |  |  | esac | 
					
						
							| 
									
										
										
										
											2024-05-14 15:29:43 +09:00
										 |  |  | HOMEBREW_PHYSICAL_PROCESSOR="${HOMEBREW_PROCESSOR}" | 
					
						
							| 
									
										
										
										
											2020-07-20 10:26:40 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-02-24 13:25:18 +00:00
										 |  |  | HOMEBREW_MACOS_ARM_DEFAULT_PREFIX="/opt/homebrew" | 
					
						
							|  |  |  | HOMEBREW_MACOS_ARM_DEFAULT_REPOSITORY="${HOMEBREW_MACOS_ARM_DEFAULT_PREFIX}" | 
					
						
							|  |  |  | HOMEBREW_LINUX_DEFAULT_PREFIX="/home/linuxbrew/.linuxbrew" | 
					
						
							|  |  |  | HOMEBREW_LINUX_DEFAULT_REPOSITORY="${HOMEBREW_LINUX_DEFAULT_PREFIX}/Homebrew" | 
					
						
							|  |  |  | HOMEBREW_GENERIC_DEFAULT_PREFIX="/usr/local" | 
					
						
							|  |  |  | HOMEBREW_GENERIC_DEFAULT_REPOSITORY="${HOMEBREW_GENERIC_DEFAULT_PREFIX}/Homebrew" | 
					
						
							|  |  |  | if [[ -n "${HOMEBREW_MACOS}" && "${HOMEBREW_PROCESSOR}" == "arm64" ]] | 
					
						
							|  |  |  | then | 
					
						
							|  |  |  |   HOMEBREW_DEFAULT_PREFIX="${HOMEBREW_MACOS_ARM_DEFAULT_PREFIX}" | 
					
						
							|  |  |  |   HOMEBREW_DEFAULT_REPOSITORY="${HOMEBREW_MACOS_ARM_DEFAULT_REPOSITORY}" | 
					
						
							|  |  |  | elif [[ -n "${HOMEBREW_LINUX}" ]] | 
					
						
							|  |  |  | then | 
					
						
							|  |  |  |   HOMEBREW_DEFAULT_PREFIX="${HOMEBREW_LINUX_DEFAULT_PREFIX}" | 
					
						
							|  |  |  |   HOMEBREW_DEFAULT_REPOSITORY="${HOMEBREW_LINUX_DEFAULT_REPOSITORY}" | 
					
						
							|  |  |  | else | 
					
						
							|  |  |  |   HOMEBREW_DEFAULT_PREFIX="${HOMEBREW_GENERIC_DEFAULT_PREFIX}" | 
					
						
							|  |  |  |   HOMEBREW_DEFAULT_REPOSITORY="${HOMEBREW_GENERIC_DEFAULT_REPOSITORY}" | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  | if [[ -n "${HOMEBREW_MACOS}" ]] | 
					
						
							| 
									
										
										
										
											2020-10-12 09:23:49 +01:00
										 |  |  | then | 
					
						
							|  |  |  |   HOMEBREW_DEFAULT_CACHE="${HOME}/Library/Caches/Homebrew" | 
					
						
							|  |  |  |   HOMEBREW_DEFAULT_LOGS="${HOME}/Library/Logs/Homebrew" | 
					
						
							|  |  |  |   HOMEBREW_DEFAULT_TEMP="/private/tmp" | 
					
						
							|  |  |  | else | 
					
						
							| 
									
										
										
										
											2023-10-28 18:29:16 -07:00
										 |  |  |   CACHE_HOME="${HOMEBREW_XDG_CACHE_HOME:-${HOME}/.cache}" | 
					
						
							| 
									
										
										
										
											2020-10-12 09:23:49 +01:00
										 |  |  |   HOMEBREW_DEFAULT_CACHE="${CACHE_HOME}/Homebrew" | 
					
						
							|  |  |  |   HOMEBREW_DEFAULT_LOGS="${CACHE_HOME}/Homebrew/Logs" | 
					
						
							|  |  |  |   HOMEBREW_DEFAULT_TEMP="/tmp" | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-09 17:41:30 -04:00
										 |  |  | realpath() { | 
					
						
							|  |  |  |   (cd "$1" &>/dev/null && pwd -P) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Support systems where HOMEBREW_PREFIX is the default, | 
					
						
							|  |  |  | # but a parent directory is a symlink. | 
					
						
							|  |  |  | # Example: Fedora Silverblue symlinks /home -> var/home | 
					
						
							|  |  |  | if [[ "${HOMEBREW_PREFIX}" != "${HOMEBREW_DEFAULT_PREFIX}" && "$(realpath "${HOMEBREW_DEFAULT_PREFIX}")" == "${HOMEBREW_PREFIX}" ]] | 
					
						
							|  |  |  | then | 
					
						
							|  |  |  |   HOMEBREW_PREFIX="${HOMEBREW_DEFAULT_PREFIX}" | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Support systems where HOMEBREW_REPOSITORY is the default, | 
					
						
							|  |  |  | # but a parent directory is a symlink. | 
					
						
							|  |  |  | # Example: Fedora Silverblue symlinks /home -> var/home | 
					
						
							|  |  |  | if [[ "${HOMEBREW_REPOSITORY}" != "${HOMEBREW_DEFAULT_REPOSITORY}" && "$(realpath "${HOMEBREW_DEFAULT_REPOSITORY}")" == "${HOMEBREW_REPOSITORY}" ]] | 
					
						
							|  |  |  | then | 
					
						
							|  |  |  |   HOMEBREW_REPOSITORY="${HOMEBREW_DEFAULT_REPOSITORY}" | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-08 21:55:26 -04:00
										 |  |  | # Where we store built products; a Cellar in HOMEBREW_PREFIX (often /usr/local | 
					
						
							|  |  |  | # for bottles) unless there's already a Cellar in HOMEBREW_REPOSITORY. | 
					
						
							|  |  |  | # These variables are set by bin/brew | 
					
						
							|  |  |  | # shellcheck disable=SC2154 | 
					
						
							|  |  |  | if [[ -d "${HOMEBREW_REPOSITORY}/Cellar" ]] | 
					
						
							|  |  |  | then | 
					
						
							|  |  |  |   HOMEBREW_CELLAR="${HOMEBREW_REPOSITORY}/Cellar" | 
					
						
							|  |  |  | else | 
					
						
							|  |  |  |   HOMEBREW_CELLAR="${HOMEBREW_PREFIX}/Cellar" | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-17 11:59:40 +09:00
										 |  |  | HOMEBREW_CASKROOM="${HOMEBREW_PREFIX}/Caskroom" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-10-12 09:23:49 +01:00
										 |  |  | HOMEBREW_CACHE="${HOMEBREW_CACHE:-${HOMEBREW_DEFAULT_CACHE}}" | 
					
						
							|  |  |  | HOMEBREW_LOGS="${HOMEBREW_LOGS:-${HOMEBREW_DEFAULT_LOGS}}" | 
					
						
							|  |  |  | HOMEBREW_TEMP="${HOMEBREW_TEMP:-${HOMEBREW_DEFAULT_TEMP}}" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-30 12:06:16 +01:00
										 |  |  | # commands that take a single or no arguments. | 
					
						
							| 
									
										
										
										
											2024-05-14 15:29:43 +09:00
										 |  |  | # HOMEBREW_LIBRARY set by bin/brew | 
					
						
							|  |  |  | # shellcheck disable=SC2154 | 
					
						
							|  |  |  | # doesn't need a default case as other arguments handled elsewhere. | 
					
						
							|  |  |  | # shellcheck disable=SC2249 | 
					
						
							| 
									
										
										
										
											2024-04-30 12:06:16 +01:00
										 |  |  | case "$1" in | 
					
						
							| 
									
										
										
										
											2021-09-16 01:08:02 +08:00
										 |  |  |   formulae) | 
					
						
							|  |  |  |     source "${HOMEBREW_LIBRARY}/Homebrew/cmd/formulae.sh" | 
					
						
							|  |  |  |     homebrew-formulae | 
					
						
							|  |  |  |     exit 0 | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  |   casks) | 
					
						
							|  |  |  |     source "${HOMEBREW_LIBRARY}/Homebrew/cmd/casks.sh" | 
					
						
							|  |  |  |     homebrew-casks | 
					
						
							|  |  |  |     exit 0 | 
					
						
							|  |  |  |     ;; | 
					
						
							| 
									
										
										
										
											2024-04-30 12:06:16 +01:00
										 |  |  |   shellenv) | 
					
						
							|  |  |  |     source "${HOMEBREW_LIBRARY}/Homebrew/cmd/shellenv.sh" | 
					
						
							|  |  |  |     shift | 
					
						
							|  |  |  |     homebrew-shellenv "$1" | 
					
						
							|  |  |  |     exit 0 | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  |   setup-ruby) | 
					
						
							|  |  |  |     source "${HOMEBREW_LIBRARY}/Homebrew/cmd/setup-ruby.sh" | 
					
						
							|  |  |  |     shift | 
					
						
							|  |  |  |     homebrew-setup-ruby "$1" | 
					
						
							|  |  |  |     exit 0 | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  | esac | 
					
						
							|  |  |  | # functions that take multiple arguments or handle multiple commands. | 
					
						
							| 
									
										
										
										
											2024-05-14 15:29:43 +09:00
										 |  |  | # doesn't need a default case as other arguments handled elsewhere. | 
					
						
							|  |  |  | # shellcheck disable=SC2249 | 
					
						
							| 
									
										
										
										
											2024-04-30 12:06:16 +01:00
										 |  |  | case "$@" in | 
					
						
							| 
									
										
										
										
											2024-04-30 16:58:11 +01:00
										 |  |  |   --cellar) | 
					
						
							|  |  |  |     echo "${HOMEBREW_CELLAR}" | 
					
						
							|  |  |  |     exit 0 | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  |   --repository | --repo) | 
					
						
							|  |  |  |     echo "${HOMEBREW_REPOSITORY}" | 
					
						
							|  |  |  |     exit 0 | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  |   --caskroom) | 
					
						
							| 
									
										
										
										
											2024-05-17 11:59:40 +09:00
										 |  |  |     echo "${HOMEBREW_CASKROOM}" | 
					
						
							| 
									
										
										
										
											2024-04-30 16:58:11 +01:00
										 |  |  |     exit 0 | 
					
						
							|  |  |  |     ;; | 
					
						
							|  |  |  |   --cache) | 
					
						
							|  |  |  |     echo "${HOMEBREW_CACHE}" | 
					
						
							|  |  |  |     exit 0 | 
					
						
							|  |  |  |     ;; | 
					
						
							| 
									
										
										
										
											2023-02-16 21:56:50 +00:00
										 |  |  |   # falls back to cmd/--prefix.rb and cmd/--cellar.rb on a non-zero return | 
					
						
							|  |  |  |   --prefix* | --cellar*) | 
					
						
							|  |  |  |     source "${HOMEBREW_LIBRARY}/Homebrew/formula_path.sh" | 
					
						
							|  |  |  |     homebrew-formula-path "$@" && exit 0 | 
					
						
							| 
									
										
										
										
											2021-09-16 01:08:02 +08:00
										 |  |  |     ;; | 
					
						
							| 
									
										
										
										
											2024-04-30 11:09:42 +01:00
										 |  |  |   # falls back to cmd/command.rb on a non-zero return | 
					
						
							|  |  |  |   command*) | 
					
						
							|  |  |  |     source "${HOMEBREW_LIBRARY}/Homebrew/command_path.sh" | 
					
						
							|  |  |  |     homebrew-command-path "$@" && exit 0 | 
					
						
							|  |  |  |     ;; | 
					
						
							| 
									
										
										
										
											2024-05-17 11:59:40 +09:00
										 |  |  |   # falls back to cmd/list.rb on a non-zero return | 
					
						
							|  |  |  |   list*) | 
					
						
							|  |  |  |     source "${HOMEBREW_LIBRARY}/Homebrew/list.sh" | 
					
						
							|  |  |  |     homebrew-list "$@" && exit 0 | 
					
						
							|  |  |  |     ;; | 
					
						
							| 
									
										
										
										
											2017-07-25 06:54:40 -07:00
										 |  |  | esac | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-10-12 09:23:49 +01:00
										 |  |  | ##### | 
					
						
							|  |  |  | ##### Next, define all helper functions. | 
					
						
							|  |  |  | ##### | 
					
						
							| 
									
										
										
										
											2016-10-01 15:18:09 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-17 20:34:16 +09:00
										 |  |  | # These variables are set from the user environment. | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  | # shellcheck disable=SC2154 | 
					
						
							| 
									
										
										
										
											2019-11-21 16:18:46 -05:00
										 |  |  | ohai() { | 
					
						
							| 
									
										
										
										
											2021-09-16 01:04:06 +08:00
										 |  |  |   # Check whether stdout is a tty. | 
					
						
							|  |  |  |   if [[ -n "${HOMEBREW_COLOR}" || (-t 1 && -z "${HOMEBREW_NO_COLOR}") ]] | 
					
						
							| 
									
										
										
										
											2019-11-21 16:18:46 -05:00
										 |  |  |   then | 
					
						
							|  |  |  |     echo -e "\\033[34m==>\\033[0m \\033[1m$*\\033[0m" # blue arrow and bold text | 
					
						
							|  |  |  |   else | 
					
						
							|  |  |  |     echo "==> $*" | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-14 11:01:46 -04:00
										 |  |  | opoo() { | 
					
						
							| 
									
										
										
										
											2021-09-16 01:04:06 +08:00
										 |  |  |   # Check whether stderr is a tty. | 
					
						
							|  |  |  |   if [[ -n "${HOMEBREW_COLOR}" || (-t 2 && -z "${HOMEBREW_NO_COLOR}") ]] | 
					
						
							| 
									
										
										
										
											2021-07-14 11:01:46 -04:00
										 |  |  |   then | 
					
						
							|  |  |  |     echo -ne "\\033[4;33mWarning\\033[0m: " >&2 # highlight Warning with underline and yellow color | 
					
						
							|  |  |  |   else | 
					
						
							|  |  |  |     echo -n "Warning: " >&2 | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  |   if [[ $# -eq 0 ]] | 
					
						
							|  |  |  |   then | 
					
						
							|  |  |  |     cat >&2 | 
					
						
							|  |  |  |   else | 
					
						
							|  |  |  |     echo "$*" >&2 | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | bold() { | 
					
						
							| 
									
										
										
										
											2021-09-16 01:04:06 +08:00
										 |  |  |   # Check whether stderr is a tty. | 
					
						
							|  |  |  |   if [[ -n "${HOMEBREW_COLOR}" || (-t 2 && -z "${HOMEBREW_NO_COLOR}") ]] | 
					
						
							| 
									
										
										
										
											2021-07-14 11:01:46 -04:00
										 |  |  |   then | 
					
						
							|  |  |  |     echo -e "\\033[1m""$*""\\033[0m" | 
					
						
							|  |  |  |   else | 
					
						
							|  |  |  |     echo "$*" | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-03 14:24:41 +01:00
										 |  |  | onoe() { | 
					
						
							| 
									
										
										
										
											2021-09-16 01:04:06 +08:00
										 |  |  |   # Check whether stderr is a tty. | 
					
						
							|  |  |  |   if [[ -n "${HOMEBREW_COLOR}" || (-t 2 && -z "${HOMEBREW_NO_COLOR}") ]] | 
					
						
							| 
									
										
										
										
											2016-02-16 09:29:03 +00:00
										 |  |  |   then | 
					
						
							| 
									
										
										
										
											2018-10-04 09:31:37 +01:00
										 |  |  |     echo -ne "\\033[4;31mError\\033[0m: " >&2 # highlight Error with underline and red color | 
					
						
							| 
									
										
										
										
											2016-02-16 09:29:03 +00:00
										 |  |  |   else | 
					
						
							|  |  |  |     echo -n "Error: " >&2 | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  |   if [[ $# -eq 0 ]] | 
					
						
							|  |  |  |   then | 
					
						
							| 
									
										
										
										
											2018-03-17 17:05:39 -07:00
										 |  |  |     cat >&2 | 
					
						
							| 
									
										
										
										
											2016-02-16 09:29:03 +00:00
										 |  |  |   else | 
					
						
							|  |  |  |     echo "$*" >&2 | 
					
						
							|  |  |  |   fi | 
					
						
							| 
									
										
										
										
											2016-05-03 14:24:41 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | odie() { | 
					
						
							|  |  |  |   onoe "$@" | 
					
						
							| 
									
										
										
										
											2016-02-16 09:29:03 +00:00
										 |  |  |   exit 1 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-28 21:35:49 +02:00
										 |  |  | safe_cd() { | 
					
						
							| 
									
										
										
										
											2020-07-06 15:28:50 -04:00
										 |  |  |   cd "$@" >/dev/null || odie "Failed to cd to $*!" | 
					
						
							| 
									
										
										
										
											2016-02-16 09:29:03 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-03 16:14:15 +08:00
										 |  |  | brew() { | 
					
						
							| 
									
										
										
										
											2022-11-24 22:15:03 +08:00
										 |  |  |   # This variable is set by bin/brew | 
					
						
							|  |  |  |   # shellcheck disable=SC2154 | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  |   "${HOMEBREW_BREW_FILE}" "$@" | 
					
						
							| 
									
										
										
										
											2016-05-03 16:14:15 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-03 21:47:17 +01:00
										 |  |  | curl() { | 
					
						
							|  |  |  |   "${HOMEBREW_LIBRARY}/Homebrew/shims/shared/curl" "$@" | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-13 14:40:14 +08:00
										 |  |  | git() { | 
					
						
							| 
									
										
										
										
											2021-10-03 21:47:17 +01:00
										 |  |  |   "${HOMEBREW_LIBRARY}/Homebrew/shims/shared/git" "$@" | 
					
						
							| 
									
										
										
										
											2016-05-13 14:40:14 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-15 01:45:21 +08:00
										 |  |  | # Search given executable in PATH (remove dependency for `which` command) | 
					
						
							|  |  |  | which() { | 
					
						
							|  |  |  |   # Alias to Bash built-in command `type -P` | 
					
						
							|  |  |  |   type -P "$@" | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-10-26 17:08:59 -04:00
										 |  |  | numeric() { | 
					
						
							|  |  |  |   # Condense the exploded argument into a single return value. | 
					
						
							|  |  |  |   # shellcheck disable=SC2086,SC2183 | 
					
						
							| 
									
										
										
										
											2019-11-11 20:31:59 +07:00
										 |  |  |   printf "%01d%02d%02d%03d" ${1//[.rc]/ } 2>/dev/null | 
					
						
							| 
									
										
										
										
											2018-10-26 17:08:59 -04:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-10-12 09:23:49 +01:00
										 |  |  | check-run-command-as-root() { | 
					
						
							| 
									
										
										
										
											2024-05-14 15:29:43 +09:00
										 |  |  |   [[ "${EUID}" == 0 || "${UID}" == 0 ]] || return | 
					
						
							| 
									
										
										
										
											2020-10-12 09:23:49 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |   # Allow Azure Pipelines/GitHub Actions/Docker/Concourse/Kubernetes to do everything as root (as it's normal there) | 
					
						
							| 
									
										
										
										
											2022-09-06 16:32:35 +01:00
										 |  |  |   [[ -f /.dockerenv ]] && return | 
					
						
							| 
									
										
										
										
											2020-10-12 09:23:49 +01:00
										 |  |  |   [[ -f /proc/1/cgroup ]] && grep -E "azpl_job|actions_job|docker|garden|kubepods" -q /proc/1/cgroup && return | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   # Homebrew Services may need `sudo` for system-wide daemons. | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  |   [[ "${HOMEBREW_COMMAND}" == "services" ]] && return | 
					
						
							| 
									
										
										
										
											2020-10-12 09:23:49 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |   # It's fine to run this as root as it's not changing anything. | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  |   [[ "${HOMEBREW_COMMAND}" == "--prefix" ]] && return | 
					
						
							| 
									
										
										
										
											2020-10-12 09:23:49 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |   odie <<EOS | 
					
						
							|  |  |  | Running Homebrew as root is extremely dangerous and no longer supported. | 
					
						
							|  |  |  | As Homebrew does not drop privileges on installation you would be giving all | 
					
						
							|  |  |  | build scripts full access to your system. | 
					
						
							|  |  |  | EOS | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | check-prefix-is-not-tmpdir() { | 
					
						
							|  |  |  |   [[ -z "${HOMEBREW_MACOS}" ]] && return | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  |   if [[ "${HOMEBREW_PREFIX}" == "${HOMEBREW_TEMP}"* ]] | 
					
						
							| 
									
										
										
										
											2020-10-12 09:23:49 +01:00
										 |  |  |   then | 
					
						
							|  |  |  |     odie <<EOS | 
					
						
							|  |  |  | Your HOMEBREW_PREFIX is in the Homebrew temporary directory, which Homebrew | 
					
						
							| 
									
										
										
										
											2023-02-10 23:15:40 -05:00
										 |  |  | uses to store downloads and builds. You can resolve this by installing Homebrew | 
					
						
							|  |  |  | to either the standard prefix for your platform or to a non-standard prefix that | 
					
						
							|  |  |  | is not in the Homebrew temporary directory. | 
					
						
							| 
									
										
										
										
											2020-10-12 09:23:49 +01:00
										 |  |  | EOS | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-26 20:55:51 +02:00
										 |  |  | # NOTE: The members of the array in the second arg must not have spaces! | 
					
						
							| 
									
										
										
										
											2023-02-08 02:41:41 +08:00
										 |  |  | check-array-membership() { | 
					
						
							|  |  |  |   local item=$1 | 
					
						
							|  |  |  |   shift | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   if [[ " ${*} " == *" ${item} "* ]] | 
					
						
							|  |  |  |   then | 
					
						
							|  |  |  |     return 0 | 
					
						
							|  |  |  |   else | 
					
						
							|  |  |  |     return 1 | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-17 20:34:16 +09:00
										 |  |  | # These variables are set from various Homebrew scripts. | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  | # shellcheck disable=SC2154 | 
					
						
							| 
									
										
										
										
											2022-05-19 11:04:20 -04:00
										 |  |  | auto-update() { | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  |   [[ -z "${HOMEBREW_HELP}" ]] || return | 
					
						
							|  |  |  |   [[ -z "${HOMEBREW_NO_AUTO_UPDATE}" ]] || return | 
					
						
							|  |  |  |   [[ -z "${HOMEBREW_AUTO_UPDATING}" ]] || return | 
					
						
							| 
									
										
										
										
											2022-05-19 11:04:20 -04:00
										 |  |  |   [[ -z "${HOMEBREW_UPDATE_AUTO}" ]] || return | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  |   [[ -z "${HOMEBREW_AUTO_UPDATE_CHECKED}" ]] || return | 
					
						
							| 
									
										
										
										
											2020-10-12 09:23:49 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |   # If we've checked for updates, we don't need to check again. | 
					
						
							|  |  |  |   export HOMEBREW_AUTO_UPDATE_CHECKED="1" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-03-10 17:53:15 +00:00
										 |  |  |   if [[ -n "${HOMEBREW_AUTO_UPDATE_COMMAND}" ]] | 
					
						
							| 
									
										
										
										
											2020-10-12 09:23:49 +01:00
										 |  |  |   then | 
					
						
							|  |  |  |     export HOMEBREW_AUTO_UPDATING="1" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-29 17:42:51 +01:00
										 |  |  |     # Look for commands that may be referring to a formula/cask in a specific | 
					
						
							|  |  |  |     # 3rd-party tap so they can be auto-updated more often (as they do not get | 
					
						
							|  |  |  |     # their data from the API). | 
					
						
							|  |  |  |     AUTO_UPDATE_TAP_COMMANDS=( | 
					
						
							|  |  |  |       install | 
					
						
							|  |  |  |       outdated | 
					
						
							|  |  |  |       upgrade | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     if check-array-membership "${HOMEBREW_COMMAND}" "${AUTO_UPDATE_TAP_COMMANDS[@]}" | 
					
						
							|  |  |  |     then | 
					
						
							|  |  |  |       for arg in "$@" | 
					
						
							|  |  |  |       do | 
					
						
							|  |  |  |         if [[ "${arg}" == */*/* ]] && [[ "${arg}" != Homebrew/* ]] && [[ "${arg}" != homebrew/* ]] | 
					
						
							|  |  |  |         then | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           HOMEBREW_AUTO_UPDATE_TAP="1" | 
					
						
							|  |  |  |           break | 
					
						
							|  |  |  |         fi | 
					
						
							|  |  |  |       done | 
					
						
							|  |  |  |     fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  |     if [[ -z "${HOMEBREW_AUTO_UPDATE_SECS}" ]] | 
					
						
							| 
									
										
										
										
											2021-01-21 13:19:06 +00:00
										 |  |  |     then | 
					
						
							| 
									
										
										
										
											2024-04-29 17:42:51 +01:00
										 |  |  |       if [[ -n "${HOMEBREW_NO_INSTALL_FROM_API}" || -n "${HOMEBREW_AUTO_UPDATE_TAP}" ]] | 
					
						
							| 
									
										
										
										
											2023-01-18 15:11:30 +00:00
										 |  |  |       then | 
					
						
							| 
									
										
										
										
											2023-06-22 15:17:19 +01:00
										 |  |  |         # 5 minutes | 
					
						
							|  |  |  |         HOMEBREW_AUTO_UPDATE_SECS="300" | 
					
						
							| 
									
										
										
										
											2023-02-15 17:37:12 +00:00
										 |  |  |       elif [[ -n "${HOMEBREW_DEV_CMD_RUN}" ]] | 
					
						
							|  |  |  |       then | 
					
						
							|  |  |  |         # 1 hour | 
					
						
							|  |  |  |         HOMEBREW_AUTO_UPDATE_SECS="3600" | 
					
						
							| 
									
										
										
										
											2023-01-18 15:11:30 +00:00
										 |  |  |       else | 
					
						
							| 
									
										
										
										
											2023-06-22 15:17:19 +01:00
										 |  |  |         # 24 hours | 
					
						
							|  |  |  |         HOMEBREW_AUTO_UPDATE_SECS="86400" | 
					
						
							| 
									
										
										
										
											2023-01-18 15:11:30 +00:00
										 |  |  |       fi | 
					
						
							| 
									
										
										
										
											2021-01-21 13:19:06 +00:00
										 |  |  |     fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-06-19 03:50:47 +01:00
										 |  |  |     repo_fetch_heads=("${HOMEBREW_REPOSITORY}/.git/FETCH_HEAD") | 
					
						
							|  |  |  |     # We might have done an auto-update recently, but not a core/cask clone auto-update. | 
					
						
							|  |  |  |     # So we check the core/cask clone FETCH_HEAD too. | 
					
						
							| 
									
										
										
										
											2023-07-28 10:13:57 +01:00
										 |  |  |     if [[ -n "${HOMEBREW_AUTO_UPDATE_CORE_TAP}" && -d "${HOMEBREW_CORE_REPOSITORY}/.git" ]] | 
					
						
							| 
									
										
										
										
											2023-06-19 03:50:47 +01:00
										 |  |  |     then | 
					
						
							|  |  |  |       repo_fetch_heads+=("${HOMEBREW_CORE_REPOSITORY}/.git/FETCH_HEAD") | 
					
						
							|  |  |  |     fi | 
					
						
							| 
									
										
										
										
											2023-07-28 10:13:57 +01:00
										 |  |  |     if [[ -n "${HOMEBREW_AUTO_UPDATE_CASK_TAP}" && -d "${HOMEBREW_CASK_REPOSITORY}/.git" ]] | 
					
						
							| 
									
										
										
										
											2023-06-19 03:50:47 +01:00
										 |  |  |     then | 
					
						
							|  |  |  |       repo_fetch_heads+=("${HOMEBREW_CASK_REPOSITORY}/.git/FETCH_HEAD") | 
					
						
							|  |  |  |     fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     # Skip auto-update if all of the selected repositories have been checked in the | 
					
						
							| 
									
										
										
										
											2020-10-12 09:23:49 +01:00
										 |  |  |     # last $HOMEBREW_AUTO_UPDATE_SECS. | 
					
						
							| 
									
										
										
										
											2023-06-19 03:50:47 +01:00
										 |  |  |     needs_auto_update= | 
					
						
							|  |  |  |     for repo_fetch_head in "${repo_fetch_heads[@]}" | 
					
						
							|  |  |  |     do | 
					
						
							|  |  |  |       if [[ ! -f "${repo_fetch_head}" ]] || | 
					
						
							|  |  |  |          [[ -z "$(find "${repo_fetch_head}" -type f -mtime -"${HOMEBREW_AUTO_UPDATE_SECS}"s 2>/dev/null)" ]] | 
					
						
							|  |  |  |       then | 
					
						
							|  |  |  |         needs_auto_update=1 | 
					
						
							|  |  |  |         break | 
					
						
							|  |  |  |       fi | 
					
						
							|  |  |  |     done | 
					
						
							|  |  |  |     if [[ -z "${needs_auto_update}" ]] | 
					
						
							| 
									
										
										
										
											2020-10-12 09:23:49 +01:00
										 |  |  |     then | 
					
						
							|  |  |  |       return | 
					
						
							|  |  |  |     fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-19 11:04:20 -04:00
										 |  |  |     brew update --auto-update | 
					
						
							| 
									
										
										
										
											2020-10-12 09:23:49 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     unset HOMEBREW_AUTO_UPDATING | 
					
						
							| 
									
										
										
										
											2024-04-29 17:42:51 +01:00
										 |  |  |     unset HOMEBREW_AUTO_UPDATE_TAP | 
					
						
							| 
									
										
										
										
											2020-10-12 09:23:49 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     # exec a new process to set any new environment variables. | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  |     exec "${HOMEBREW_BREW_FILE}" "$@" | 
					
						
							| 
									
										
										
										
											2020-10-12 09:23:49 +01:00
										 |  |  |   fi | 
					
						
							| 
									
										
										
										
											2023-02-08 02:41:41 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   unset AUTO_UPDATE_COMMANDS | 
					
						
							| 
									
										
										
										
											2023-06-19 03:50:47 +01:00
										 |  |  |   unset AUTO_UPDATE_CORE_TAP_COMMANDS | 
					
						
							|  |  |  |   unset AUTO_UPDATE_CASK_TAP_COMMANDS | 
					
						
							| 
									
										
										
										
											2023-07-28 10:13:57 +01:00
										 |  |  |   unset HOMEBREW_AUTO_UPDATE_CORE_TAP | 
					
						
							|  |  |  |   unset HOMEBREW_AUTO_UPDATE_CASK_TAP | 
					
						
							| 
									
										
										
										
											2020-10-12 09:23:49 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ##### | 
					
						
							|  |  |  | ##### Setup output so e.g. odie looks as nice as possible. | 
					
						
							|  |  |  | ##### | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Colorize output on GitHub Actions. | 
					
						
							| 
									
										
										
										
											2021-04-17 20:34:16 +09:00
										 |  |  | # This is set by the user environment. | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  | # shellcheck disable=SC2154 | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  | if [[ -n "${GITHUB_ACTIONS}" ]] | 
					
						
							|  |  |  | then | 
					
						
							| 
									
										
										
										
											2020-10-12 09:23:49 +01:00
										 |  |  |   export HOMEBREW_COLOR="1" | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Force UTF-8 to avoid encoding issues for users with broken locale settings. | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  | if [[ -n "${HOMEBREW_MACOS}" ]] | 
					
						
							| 
									
										
										
										
											2020-10-12 09:23:49 +01:00
										 |  |  | then | 
					
						
							|  |  |  |   if [[ "$(locale charmap)" != "UTF-8" ]] | 
					
						
							|  |  |  |   then | 
					
						
							|  |  |  |     export LC_ALL="en_US.UTF-8" | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | else | 
					
						
							|  |  |  |   if ! command -v locale >/dev/null | 
					
						
							|  |  |  |   then | 
					
						
							|  |  |  |     export LC_ALL=C | 
					
						
							|  |  |  |   elif [[ "$(locale charmap)" != "UTF-8" ]] | 
					
						
							|  |  |  |   then | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  |     locales="$(locale -a)" | 
					
						
							| 
									
										
										
										
											2020-10-12 09:23:49 +01:00
										 |  |  |     c_utf_regex='\bC\.(utf8|UTF-8)\b' | 
					
						
							|  |  |  |     en_us_regex='\ben_US\.(utf8|UTF-8)\b' | 
					
						
							|  |  |  |     utf_regex='\b[a-z][a-z]_[A-Z][A-Z]\.(utf8|UTF-8)\b' | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  |     if [[ ${locales} =~ ${c_utf_regex} || ${locales} =~ ${en_us_regex} || ${locales} =~ ${utf_regex} ]] | 
					
						
							| 
									
										
										
										
											2020-10-12 09:23:49 +01:00
										 |  |  |     then | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  |       export LC_ALL="${BASH_REMATCH[0]}" | 
					
						
							| 
									
										
										
										
											2020-10-12 09:23:49 +01:00
										 |  |  |     else | 
					
						
							|  |  |  |       export LC_ALL=C | 
					
						
							|  |  |  |     fi | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ##### | 
					
						
							|  |  |  | ##### odie as quickly as possible. | 
					
						
							|  |  |  | ##### | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  | if [[ "${HOMEBREW_PREFIX}" == "/" || "${HOMEBREW_PREFIX}" == "/usr" ]] | 
					
						
							| 
									
										
										
										
											2016-02-16 09:29:03 +00:00
										 |  |  | then | 
					
						
							|  |  |  |   # it may work, but I only see pain this route and don't want to support it | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  |   odie "Cowardly refusing to continue at this prefix: ${HOMEBREW_PREFIX}" | 
					
						
							| 
									
										
										
										
											2016-02-16 09:29:03 +00:00
										 |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-10-12 09:23:49 +01:00
										 |  |  | # Many Pathname operations use getwd when they shouldn't, and then throw | 
					
						
							|  |  |  | # odd exceptions. Reduce our support burden by showing a user-friendly error. | 
					
						
							| 
									
										
										
										
											2024-05-14 15:29:43 +09:00
										 |  |  | if ! [[ -d "${PWD}" ]] | 
					
						
							| 
									
										
										
										
											2020-10-12 09:23:49 +01:00
										 |  |  | then | 
					
						
							| 
									
										
										
										
											2024-01-10 17:21:57 +00:00
										 |  |  |   odie "The current working directory must exist to run brew." | 
					
						
							|  |  |  | fi | 
					
						
							| 
									
										
										
										
											2024-05-14 15:29:43 +09:00
										 |  |  | if ! [[ -r "${PWD}" ]] | 
					
						
							| 
									
										
										
										
											2024-01-10 17:21:57 +00:00
										 |  |  | then | 
					
						
							| 
									
										
										
										
											2024-01-11 12:24:04 +00:00
										 |  |  |   odie "The current working directory must be readable to ${USER} to run brew." | 
					
						
							| 
									
										
										
										
											2020-10-12 09:23:49 +01:00
										 |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ##### | 
					
						
							|  |  |  | ##### Now, do everything else (that may be a bit slower). | 
					
						
							|  |  |  | ##### | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-06 04:57:06 +01:00
										 |  |  | # Docker image deprecation | 
					
						
							|  |  |  | if [[ -f "${HOMEBREW_REPOSITORY}/.docker-deprecate" ]] | 
					
						
							|  |  |  | then | 
					
						
							|  |  |  |   DOCKER_DEPRECATION_MESSAGE="$(cat "${HOMEBREW_REPOSITORY}/.docker-deprecate")" | 
					
						
							|  |  |  |   if [[ -n "${GITHUB_ACTIONS}" ]] | 
					
						
							|  |  |  |   then | 
					
						
							|  |  |  |     echo "::warning::${DOCKER_DEPRECATION_MESSAGE}" >&2 | 
					
						
							|  |  |  |   else | 
					
						
							|  |  |  |     opoo "${DOCKER_DEPRECATION_MESSAGE}" | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-10-12 09:23:49 +01:00
										 |  |  | # USER isn't always set so provide a fall back for `brew` and subprocesses. | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  | export USER="${USER:-$(id -un)}" | 
					
						
							| 
									
										
										
										
											2020-10-12 09:23:49 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | # A depth of 1 means this command was directly invoked by a user. | 
					
						
							|  |  |  | # Higher depths mean this command was invoked by another Homebrew command. | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  | export HOMEBREW_COMMAND_DEPTH="$((HOMEBREW_COMMAND_DEPTH + 1))" | 
					
						
							| 
									
										
										
										
											2020-10-12 09:23:49 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-05 15:15:15 +01:00
										 |  |  | setup_curl() { | 
					
						
							|  |  |  |   # This is set by the user environment. | 
					
						
							|  |  |  |   # shellcheck disable=SC2154 | 
					
						
							| 
									
										
										
										
											2021-10-23 15:09:34 -04:00
										 |  |  |   HOMEBREW_BREWED_CURL_PATH="${HOMEBREW_PREFIX}/opt/curl/bin/curl" | 
					
						
							|  |  |  |   if [[ -n "${HOMEBREW_FORCE_BREWED_CURL}" && -x "${HOMEBREW_BREWED_CURL_PATH}" ]] && | 
					
						
							|  |  |  |      "${HOMEBREW_BREWED_CURL_PATH}" --version &>/dev/null | 
					
						
							| 
									
										
										
										
											2021-10-05 15:15:15 +01:00
										 |  |  |   then | 
					
						
							| 
									
										
										
										
											2021-10-23 15:09:34 -04:00
										 |  |  |     HOMEBREW_CURL="${HOMEBREW_BREWED_CURL_PATH}" | 
					
						
							| 
									
										
										
										
											2022-06-14 10:33:30 +01:00
										 |  |  |   elif [[ -n "${HOMEBREW_CURL_PATH}" ]] | 
					
						
							| 
									
										
										
										
											2021-10-05 15:15:15 +01:00
										 |  |  |   then | 
					
						
							|  |  |  |     HOMEBREW_CURL="${HOMEBREW_CURL_PATH}" | 
					
						
							|  |  |  |   else | 
					
						
							|  |  |  |     HOMEBREW_CURL="curl" | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2020-05-04 03:16:51 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-05 15:15:15 +01:00
										 |  |  | setup_git() { | 
					
						
							|  |  |  |   # This is set by the user environment. | 
					
						
							|  |  |  |   # shellcheck disable=SC2154 | 
					
						
							|  |  |  |   if [[ -n "${HOMEBREW_FORCE_BREWED_GIT}" && -x "${HOMEBREW_PREFIX}/opt/git/bin/git" ]] && | 
					
						
							|  |  |  |      "${HOMEBREW_PREFIX}/opt/git/bin/git" --version &>/dev/null | 
					
						
							|  |  |  |   then | 
					
						
							|  |  |  |     HOMEBREW_GIT="${HOMEBREW_PREFIX}/opt/git/bin/git" | 
					
						
							| 
									
										
										
										
											2022-06-14 10:33:30 +01:00
										 |  |  |   elif [[ -n "${HOMEBREW_GIT_PATH}" ]] | 
					
						
							| 
									
										
										
										
											2021-10-05 15:15:15 +01:00
										 |  |  |   then | 
					
						
							|  |  |  |     HOMEBREW_GIT="${HOMEBREW_GIT_PATH}" | 
					
						
							|  |  |  |   else | 
					
						
							|  |  |  |     HOMEBREW_GIT="git" | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | setup_curl | 
					
						
							|  |  |  | setup_git | 
					
						
							| 
									
										
										
										
											2020-05-11 07:30:25 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-13 23:53:44 +01:00
										 |  |  | GIT_DESCRIBE_CACHE="${HOMEBREW_REPOSITORY}/.git/describe-cache" | 
					
						
							|  |  |  | GIT_REVISION=$("${HOMEBREW_GIT}" -C "${HOMEBREW_REPOSITORY}" rev-parse HEAD 2>/dev/null) | 
					
						
							|  |  |  | if [[ -n "${GIT_REVISION}" ]] | 
					
						
							|  |  |  | then | 
					
						
							|  |  |  |   GIT_DESCRIBE_CACHE_FILE="${GIT_DESCRIBE_CACHE}/${GIT_REVISION}" | 
					
						
							|  |  |  |   if [[ -f "${GIT_DESCRIBE_CACHE_FILE}" ]] | 
					
						
							|  |  |  |   then | 
					
						
							|  |  |  |     HOMEBREW_VERSION="$(cat "${GIT_DESCRIBE_CACHE_FILE}")" | 
					
						
							|  |  |  |   else | 
					
						
							|  |  |  |     rm -rf "${GIT_DESCRIBE_CACHE}" | 
					
						
							|  |  |  |     HOMEBREW_VERSION="$("${HOMEBREW_GIT}" -C "${HOMEBREW_REPOSITORY}" describe --tags --dirty --abbrev=7 2>/dev/null)" | 
					
						
							|  |  |  |     mkdir -p "${GIT_DESCRIBE_CACHE}" | 
					
						
							|  |  |  |     echo "${HOMEBREW_VERSION}" >"${GIT_DESCRIBE_CACHE_FILE}" | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  |   unset GIT_DESCRIBE_CACHE_FILE | 
					
						
							|  |  |  | else | 
					
						
							|  |  |  |   rm -rf "${GIT_DESCRIBE_CACHE}" | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | unset GIT_REVISION | 
					
						
							|  |  |  | unset GIT_DESCRIBE_CACHE | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  | HOMEBREW_USER_AGENT_VERSION="${HOMEBREW_VERSION}" | 
					
						
							|  |  |  | if [[ -z "${HOMEBREW_VERSION}" ]] | 
					
						
							| 
									
										
										
										
											2020-09-09 12:22:45 -05:00
										 |  |  | then | 
					
						
							| 
									
										
										
										
											2023-11-30 11:44:10 +00:00
										 |  |  |   HOMEBREW_VERSION=">=4.1.0 (shallow or no git repository)" | 
					
						
							|  |  |  |   HOMEBREW_USER_AGENT_VERSION="4.X.Y" | 
					
						
							| 
									
										
										
										
											2020-09-09 12:22:45 -05:00
										 |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  | HOMEBREW_CORE_REPOSITORY="${HOMEBREW_LIBRARY}/Taps/homebrew/homebrew-core" | 
					
						
							| 
									
										
										
										
											2021-05-18 17:10:20 +05:30
										 |  |  | # Used in --version.sh | 
					
						
							|  |  |  | # shellcheck disable=SC2034 | 
					
						
							| 
									
										
										
										
											2021-04-28 20:47:39 +09:00
										 |  |  | HOMEBREW_CASK_REPOSITORY="${HOMEBREW_LIBRARY}/Taps/homebrew/homebrew-cask" | 
					
						
							| 
									
										
										
										
											2021-03-03 10:22:54 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-07 08:57:57 +01:00
										 |  |  | # Shift the -v to the end of the parameter list | 
					
						
							|  |  |  | if [[ "$1" == "-v" ]] | 
					
						
							|  |  |  | then | 
					
						
							|  |  |  |   shift | 
					
						
							|  |  |  |   set -- "$@" -v | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-30 12:06:16 +01:00
										 |  |  | # commands that take a single or no arguments. | 
					
						
							| 
									
										
										
										
											2024-05-14 15:29:43 +09:00
										 |  |  | # doesn't need a default case as other arguments handled elsewhere. | 
					
						
							|  |  |  | # shellcheck disable=SC2249 | 
					
						
							| 
									
										
										
										
											2024-04-30 12:06:16 +01:00
										 |  |  | case "$1" in | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  |   --version | -v) | 
					
						
							|  |  |  |     source "${HOMEBREW_LIBRARY}/Homebrew/cmd/--version.sh" | 
					
						
							|  |  |  |     homebrew-version | 
					
						
							|  |  |  |     exit 0 | 
					
						
							|  |  |  |     ;; | 
					
						
							| 
									
										
										
										
											2021-03-03 10:22:54 +00:00
										 |  |  | esac | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-10-02 16:41:51 +01:00
										 |  |  | # TODO: bump version when new macOS is released or announced and update references in: | 
					
						
							|  |  |  | # - docs/Installation.md | 
					
						
							|  |  |  | # - https://github.com/Homebrew/install/blob/HEAD/install.sh | 
					
						
							|  |  |  | # and, if needed: | 
					
						
							|  |  |  | # - MacOSVersion::SYMBOLS | 
					
						
							| 
									
										
										
										
											2023-09-21 10:55:30 +02:00
										 |  |  | HOMEBREW_MACOS_NEWEST_UNSUPPORTED="15" | 
					
						
							| 
									
										
										
										
											2023-10-02 16:41:51 +01:00
										 |  |  | # TODO: bump version when new macOS is released and update references in: | 
					
						
							|  |  |  | # - docs/Installation.md | 
					
						
							| 
									
										
										
										
											2023-10-04 15:34:04 +01:00
										 |  |  | # - HOMEBREW_MACOS_OLDEST_SUPPORTED in .github/workflows/pkg-installer.yml | 
					
						
							| 
									
										
										
										
											2023-10-04 10:18:27 +01:00
										 |  |  | # - `os-version min` in package/Distribution.xml | 
					
						
							| 
									
										
										
										
											2023-10-02 16:41:51 +01:00
										 |  |  | # - https://github.com/Homebrew/install/blob/HEAD/install.sh | 
					
						
							| 
									
										
										
										
											2023-09-21 10:55:30 +02:00
										 |  |  | HOMEBREW_MACOS_OLDEST_SUPPORTED="12" | 
					
						
							| 
									
										
										
										
											2023-02-24 13:25:18 +00:00
										 |  |  | HOMEBREW_MACOS_OLDEST_ALLOWED="10.11" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  | if [[ -n "${HOMEBREW_MACOS}" ]] | 
					
						
							| 
									
										
										
										
											2016-04-04 11:46:33 +01:00
										 |  |  | then | 
					
						
							|  |  |  |   HOMEBREW_PRODUCT="Homebrew" | 
					
						
							|  |  |  |   HOMEBREW_SYSTEM="Macintosh" | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  |   [[ "${HOMEBREW_PROCESSOR}" == "x86_64" ]] && HOMEBREW_PROCESSOR="Intel" | 
					
						
							| 
									
										
										
										
											2016-09-18 19:57:19 +01:00
										 |  |  |   HOMEBREW_MACOS_VERSION="$(/usr/bin/sw_vers -productVersion)" | 
					
						
							| 
									
										
										
										
											2017-04-27 08:53:57 +01:00
										 |  |  |   # Don't change this from Mac OS X to match what macOS itself does in Safari on 10.12 | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  |   HOMEBREW_OS_USER_AGENT_VERSION="Mac OS X ${HOMEBREW_MACOS_VERSION}" | 
					
						
							| 
									
										
										
										
											2016-04-04 11:46:33 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-24 22:07:30 +08:00
										 |  |  |   if [[ "$(sysctl -n hw.optional.arm64 2>/dev/null)" == "1" ]] | 
					
						
							|  |  |  |   then | 
					
						
							|  |  |  |     # used in vendor-install.sh | 
					
						
							|  |  |  |     # shellcheck disable=SC2034 | 
					
						
							|  |  |  |     HOMEBREW_PHYSICAL_PROCESSOR="arm64" | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-10-04 09:31:37 +01:00
										 |  |  |   # Intentionally set this variable by exploding another. | 
					
						
							|  |  |  |   # shellcheck disable=SC2086,SC2183 | 
					
						
							| 
									
										
										
										
											2016-09-18 19:57:19 +01:00
										 |  |  |   printf -v HOMEBREW_MACOS_VERSION_NUMERIC "%02d%02d%02d" ${HOMEBREW_MACOS_VERSION//./ } | 
					
						
							| 
									
										
										
										
											2023-02-24 13:25:18 +00:00
										 |  |  |   # shellcheck disable=SC2248 | 
					
						
							|  |  |  |   printf -v HOMEBREW_MACOS_OLDEST_ALLOWED_NUMERIC "%02d%02d%02d" ${HOMEBREW_MACOS_OLDEST_ALLOWED//./ } | 
					
						
							| 
									
										
										
										
											2017-09-16 12:41:08 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-07 09:12:11 +00:00
										 |  |  |   # Don't include minor versions for Big Sur and later. | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  |   if [[ "${HOMEBREW_MACOS_VERSION_NUMERIC}" -gt "110000" ]] | 
					
						
							| 
									
										
										
										
											2021-01-07 09:12:11 +00:00
										 |  |  |   then | 
					
						
							|  |  |  |     HOMEBREW_OS_VERSION="macOS ${HOMEBREW_MACOS_VERSION%.*}" | 
					
						
							|  |  |  |   else | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  |     HOMEBREW_OS_VERSION="macOS ${HOMEBREW_MACOS_VERSION}" | 
					
						
							| 
									
										
										
										
											2021-01-07 09:12:11 +00:00
										 |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-30 14:59:14 +01:00
										 |  |  |   # Refuse to run on pre-El Capitan | 
					
						
							| 
									
										
										
										
											2023-02-24 13:25:18 +00:00
										 |  |  |   if [[ "${HOMEBREW_MACOS_VERSION_NUMERIC}" -lt "${HOMEBREW_MACOS_OLDEST_ALLOWED_NUMERIC}" ]] | 
					
						
							| 
									
										
										
										
											2019-01-08 19:13:46 +00:00
										 |  |  |   then | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  |     printf "ERROR: Your version of macOS (%s) is too old to run Homebrew!\\n" "${HOMEBREW_MACOS_VERSION}" >&2 | 
					
						
							|  |  |  |     if [[ "${HOMEBREW_MACOS_VERSION_NUMERIC}" -lt "100700" ]] | 
					
						
							| 
									
										
										
										
											2019-01-08 19:13:46 +00:00
										 |  |  |     then | 
					
						
							| 
									
										
										
										
											2019-04-01 16:02:13 -04:00
										 |  |  |       printf "         For 10.4 - 10.6 support see: https://github.com/mistydemeo/tigerbrew\\n" >&2 | 
					
						
							| 
									
										
										
										
											2019-01-08 19:13:46 +00:00
										 |  |  |     fi | 
					
						
							| 
									
										
										
										
											2019-04-01 16:02:13 -04:00
										 |  |  |     printf "\\n" >&2 | 
					
						
							| 
									
										
										
										
											2019-01-08 19:13:46 +00:00
										 |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-01 15:06:04 +01:00
										 |  |  |   # Versions before Sierra don't handle custom cert files correctly, so need a full brewed curl. | 
					
						
							|  |  |  |   if [[ "${HOMEBREW_MACOS_VERSION_NUMERIC}" -lt "101200" ]] | 
					
						
							|  |  |  |   then | 
					
						
							|  |  |  |     HOMEBREW_SYSTEM_CURL_TOO_OLD="1" | 
					
						
							|  |  |  |     HOMEBREW_FORCE_BREWED_CURL="1" | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   # The system libressl has a bug before macOS 10.15.6 where it incorrectly handles expired roots. | 
					
						
							|  |  |  |   if [[ -z "${HOMEBREW_SYSTEM_CURL_TOO_OLD}" && "${HOMEBREW_MACOS_VERSION_NUMERIC}" -lt "101506" ]] | 
					
						
							|  |  |  |   then | 
					
						
							|  |  |  |     HOMEBREW_SYSTEM_CA_CERTIFICATES_TOO_OLD="1" | 
					
						
							|  |  |  |     HOMEBREW_FORCE_BREWED_CA_CERTIFICATES="1" | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-22 17:20:01 +00:00
										 |  |  |   # TEMP: backwards compatiblity with existing 10.11-cross image | 
					
						
							|  |  |  |   # Can (probably) be removed in March 2024. | 
					
						
							| 
									
										
										
										
											2022-05-31 16:32:23 +01:00
										 |  |  |   if [[ -n "${HOMEBREW_FAKE_EL_CAPITAN}" ]] | 
					
						
							| 
									
										
										
										
											2024-02-22 17:20:01 +00:00
										 |  |  |   then | 
					
						
							|  |  |  |     export HOMEBREW_FAKE_MACOS="10.11.6" | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   if [[ "${HOMEBREW_FAKE_MACOS}" =~ ^10\.11(\.|$) ]] | 
					
						
							| 
									
										
										
										
											2018-02-26 16:08:10 +00:00
										 |  |  |   then | 
					
						
							| 
									
										
										
										
											2022-05-31 16:32:23 +01:00
										 |  |  |     # We only need this to work enough to update brew and build the set portable formulae, so relax the requirement. | 
					
						
							|  |  |  |     HOMEBREW_MINIMUM_GIT_VERSION="2.7.4" | 
					
						
							|  |  |  |   else | 
					
						
							|  |  |  |     # The system Git on macOS versions before Sierra is too old for some Homebrew functionality we rely on. | 
					
						
							|  |  |  |     HOMEBREW_MINIMUM_GIT_VERSION="2.14.3" | 
					
						
							|  |  |  |     if [[ "${HOMEBREW_MACOS_VERSION_NUMERIC}" -lt "101200" ]] | 
					
						
							|  |  |  |     then | 
					
						
							|  |  |  |       HOMEBREW_FORCE_BREWED_GIT="1" | 
					
						
							|  |  |  |     fi | 
					
						
							| 
									
										
										
										
											2018-02-26 16:08:10 +00:00
										 |  |  |   fi | 
					
						
							| 
									
										
										
										
											2016-04-04 11:46:33 +01:00
										 |  |  | else | 
					
						
							|  |  |  |   HOMEBREW_PRODUCT="${HOMEBREW_SYSTEM}brew" | 
					
						
							| 
									
										
										
										
											2023-08-16 12:01:25 +01:00
										 |  |  |   # Don't try to follow /etc/os-release | 
					
						
							| 
									
										
										
										
											2023-08-25 17:32:02 -07:00
										 |  |  |   # shellcheck disable=SC1091,SC2154 | 
					
						
							| 
									
										
										
										
											2023-07-12 10:59:57 +02:00
										 |  |  |   [[ -n "${HOMEBREW_LINUX}" ]] && HOMEBREW_OS_VERSION="$(source /etc/os-release && echo "${PRETTY_NAME}")" | 
					
						
							| 
									
										
										
										
											2016-04-06 01:45:02 +02:00
										 |  |  |   : "${HOMEBREW_OS_VERSION:=$(uname -r)}" | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  |   HOMEBREW_OS_USER_AGENT_VERSION="${HOMEBREW_OS_VERSION}" | 
					
						
							| 
									
										
										
										
											2021-04-17 20:34:16 +09:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-08 11:22:48 +02:00
										 |  |  |   # Ensure the system Curl is a version that supports modern HTTPS certificates. | 
					
						
							|  |  |  |   HOMEBREW_MINIMUM_CURL_VERSION="7.41.0" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  |   curl_version_output="$(${HOMEBREW_CURL} --version 2>/dev/null)" | 
					
						
							| 
									
										
										
										
											2020-05-04 03:16:51 -05:00
										 |  |  |   curl_name_and_version="${curl_version_output%% (*}" | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  |   # shellcheck disable=SC2248 | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  |   if [[ "$(numeric "${curl_name_and_version##* }")" -lt "$(numeric "${HOMEBREW_MINIMUM_CURL_VERSION}")" ]] | 
					
						
							| 
									
										
										
										
											2018-10-26 17:08:59 -04:00
										 |  |  |   then | 
					
						
							| 
									
										
										
										
											2022-06-14 10:33:30 +01:00
										 |  |  |     message="Please update your system curl or set HOMEBREW_CURL_PATH to a newer version.
 | 
					
						
							| 
									
										
										
										
											2020-11-25 16:08:57 -06:00
										 |  |  | Minimum required version: ${HOMEBREW_MINIMUM_CURL_VERSION} | 
					
						
							| 
									
										
										
										
											2020-07-29 17:31:11 -04:00
										 |  |  | Your curl version: ${curl_name_and_version##* } | 
					
						
							| 
									
										
										
										
											2022-12-13 11:36:28 +00:00
										 |  |  | Your curl executable: $(type -p "${HOMEBREW_CURL}")"
 | 
					
						
							| 
									
										
										
										
											2020-11-18 16:38:08 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-06-14 10:33:30 +01:00
										 |  |  |     if [[ -z ${HOMEBREW_CURL_PATH} ]] | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  |     then | 
					
						
							| 
									
										
										
										
											2020-05-11 07:17:26 -05:00
										 |  |  |       HOMEBREW_SYSTEM_CURL_TOO_OLD=1 | 
					
						
							|  |  |  |       HOMEBREW_FORCE_BREWED_CURL=1 | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  |       if [[ -z ${HOMEBREW_CURL_WARNING} ]] | 
					
						
							|  |  |  |       then | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  |         onoe "${message}" | 
					
						
							| 
									
										
										
										
											2020-11-18 16:38:08 -06:00
										 |  |  |         HOMEBREW_CURL_WARNING=1 | 
					
						
							|  |  |  |       fi | 
					
						
							| 
									
										
										
										
											2020-05-11 07:17:26 -05:00
										 |  |  |     else | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  |       odie "${message}" | 
					
						
							| 
									
										
										
										
											2020-05-11 07:17:26 -05:00
										 |  |  |     fi | 
					
						
							| 
									
										
										
										
											2018-10-26 17:08:59 -04:00
										 |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   # Ensure the system Git is at or newer than the minimum required version. | 
					
						
							|  |  |  |   # Git 2.7.4 is the version of git on Ubuntu 16.04 LTS (Xenial Xerus). | 
					
						
							|  |  |  |   HOMEBREW_MINIMUM_GIT_VERSION="2.7.0" | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  |   git_version_output="$(${HOMEBREW_GIT} --version 2>/dev/null)" | 
					
						
							| 
									
										
										
										
											2019-08-07 14:22:20 -04:00
										 |  |  |   # $extra is intentionally discarded. | 
					
						
							|  |  |  |   # shellcheck disable=SC2034 | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  |   IFS='.' read -r major minor micro build extra <<<"${git_version_output##* }" | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  |   # shellcheck disable=SC2248 | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  |   if [[ "$(numeric "${major}.${minor}.${micro}.${build}")" -lt "$(numeric "${HOMEBREW_MINIMUM_GIT_VERSION}")" ]] | 
					
						
							| 
									
										
										
										
											2018-10-26 17:08:59 -04:00
										 |  |  |   then | 
					
						
							| 
									
										
										
										
											2022-06-14 10:33:30 +01:00
										 |  |  |     message="Please update your system Git or set HOMEBREW_GIT_PATH to a newer version.
 | 
					
						
							| 
									
										
										
										
											2020-11-26 08:35:42 +00:00
										 |  |  | Minimum required version: ${HOMEBREW_MINIMUM_GIT_VERSION} | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  | Your Git version: ${major}.${minor}.${micro}.${build} | 
					
						
							| 
									
										
										
										
											2022-12-13 11:36:28 +00:00
										 |  |  | Your Git executable: $(unset git && type -p "${HOMEBREW_GIT}")"
 | 
					
						
							| 
									
										
										
										
											2022-06-14 10:33:30 +01:00
										 |  |  |     if [[ -z ${HOMEBREW_GIT_PATH} ]] | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  |     then | 
					
						
							| 
									
										
										
										
											2020-05-11 07:20:16 -05:00
										 |  |  |       HOMEBREW_FORCE_BREWED_GIT="1" | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  |       if [[ -z ${HOMEBREW_GIT_WARNING} ]] | 
					
						
							|  |  |  |       then | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  |         onoe "${message}" | 
					
						
							| 
									
										
										
										
											2020-11-25 16:08:57 -06:00
										 |  |  |         HOMEBREW_GIT_WARNING=1 | 
					
						
							|  |  |  |       fi | 
					
						
							| 
									
										
										
										
											2020-05-11 07:20:16 -05:00
										 |  |  |     else | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  |       odie "${message}" | 
					
						
							| 
									
										
										
										
											2020-05-11 07:20:16 -05:00
										 |  |  |     fi | 
					
						
							| 
									
										
										
										
											2018-10-26 17:08:59 -04:00
										 |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-16 17:40:58 -06:00
										 |  |  |   HOMEBREW_LINUX_MINIMUM_GLIBC_VERSION="2.13" | 
					
						
							| 
									
										
										
										
											2021-08-29 21:40:35 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-28 17:18:55 +08:00
										 |  |  |   HOMEBREW_CORE_REPOSITORY_ORIGIN="$("${HOMEBREW_GIT}" -C "${HOMEBREW_CORE_REPOSITORY}" remote get-url origin 2>/dev/null)" | 
					
						
							| 
									
										
										
										
											2021-12-11 22:27:46 +00:00
										 |  |  |   if [[ "${HOMEBREW_CORE_REPOSITORY_ORIGIN}" =~ (/linuxbrew|Linuxbrew/homebrew)-core(\.git)?$ ]] | 
					
						
							| 
									
										
										
										
											2021-08-29 21:40:35 +02:00
										 |  |  |   then | 
					
						
							| 
									
										
										
										
											2021-10-07 11:16:03 +01:00
										 |  |  |     # triggers migration code in update.sh | 
					
						
							|  |  |  |     # shellcheck disable=SC2034 | 
					
						
							| 
									
										
										
										
											2021-10-20 11:01:38 +01:00
										 |  |  |     HOMEBREW_LINUXBREW_CORE_MIGRATION=1 | 
					
						
							| 
									
										
										
										
											2021-08-29 21:40:35 +02:00
										 |  |  |   fi | 
					
						
							| 
									
										
										
										
											2016-04-04 11:46:33 +01:00
										 |  |  | fi | 
					
						
							| 
									
										
										
										
											2018-02-15 13:26:17 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-05 15:15:15 +01:00
										 |  |  | setup_ca_certificates() { | 
					
						
							|  |  |  |   if [[ -n "${HOMEBREW_FORCE_BREWED_CA_CERTIFICATES}" && -f "${HOMEBREW_PREFIX}/etc/ca-certificates/cert.pem" ]] | 
					
						
							|  |  |  |   then | 
					
						
							|  |  |  |     export SSL_CERT_FILE="${HOMEBREW_PREFIX}/etc/ca-certificates/cert.pem" | 
					
						
							|  |  |  |     export GIT_SSL_CAINFO="${HOMEBREW_PREFIX}/etc/ca-certificates/cert.pem" | 
					
						
							| 
									
										
										
										
											2021-10-20 15:52:17 +01:00
										 |  |  |     export GIT_SSL_CAPATH="${HOMEBREW_PREFIX}/etc/ca-certificates" | 
					
						
							| 
									
										
										
										
											2021-10-05 15:15:15 +01:00
										 |  |  |   fi | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | setup_ca_certificates | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Redetermine curl and git paths as we may have forced some options above. | 
					
						
							|  |  |  | setup_curl | 
					
						
							|  |  |  | setup_git | 
					
						
							| 
									
										
										
										
											2021-10-01 15:06:04 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-16 12:17:50 +01:00
										 |  |  | # A bug in the auto-update process prior to 3.1.2 means $HOMEBREW_BOTTLE_DOMAIN | 
					
						
							|  |  |  | # could be passed down with the default domain. | 
					
						
							|  |  |  | # This is problematic as this is will be the old bottle domain. | 
					
						
							|  |  |  | # This workaround is necessary for many CI images starting on old version, | 
					
						
							|  |  |  | # and will only be unnecessary when updating from <3.1.2 is not a concern. | 
					
						
							|  |  |  | # That will be when macOS 12 is the minimum required version. | 
					
						
							| 
									
										
										
										
											2021-04-17 20:34:16 +09:00
										 |  |  | # HOMEBREW_BOTTLE_DOMAIN is set from the user environment | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  | # shellcheck disable=SC2154 | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  | if [[ -n "${HOMEBREW_BOTTLE_DEFAULT_DOMAIN}" ]] && | 
					
						
							|  |  |  |    [[ "${HOMEBREW_BOTTLE_DOMAIN}" == "${HOMEBREW_BOTTLE_DEFAULT_DOMAIN}" ]] | 
					
						
							| 
									
										
										
										
											2021-04-16 12:17:50 +01:00
										 |  |  | then | 
					
						
							|  |  |  |   unset HOMEBREW_BOTTLE_DOMAIN | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-02-03 14:10:40 +00:00
										 |  |  | HOMEBREW_API_DEFAULT_DOMAIN="https://formulae.brew.sh/api" | 
					
						
							| 
									
										
										
										
											2021-10-20 11:01:38 +01:00
										 |  |  | HOMEBREW_BOTTLE_DEFAULT_DOMAIN="https://ghcr.io/v2/homebrew/core" | 
					
						
							| 
									
										
										
										
											2018-10-20 13:58:27 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  | HOMEBREW_USER_AGENT="${HOMEBREW_PRODUCT}/${HOMEBREW_USER_AGENT_VERSION} (${HOMEBREW_SYSTEM}; ${HOMEBREW_PROCESSOR} ${HOMEBREW_OS_USER_AGENT_VERSION})" | 
					
						
							| 
									
										
										
										
											2021-10-03 21:47:17 +01:00
										 |  |  | curl_version_output="$(curl --version 2>/dev/null)" | 
					
						
							| 
									
										
										
										
											2018-10-26 17:08:59 -04:00
										 |  |  | curl_name_and_version="${curl_version_output%% (*}" | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  | HOMEBREW_USER_AGENT_CURL="${HOMEBREW_USER_AGENT} ${curl_name_and_version// //}" | 
					
						
							| 
									
										
										
										
											2016-04-04 11:46:33 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-02-10 17:27:10 +00:00
										 |  |  | # Timeout values to check for dead connections | 
					
						
							|  |  |  | # We don't use --max-time to support slow connections | 
					
						
							|  |  |  | HOMEBREW_CURL_SPEED_LIMIT=100 | 
					
						
							|  |  |  | HOMEBREW_CURL_SPEED_TIME=5 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-04-04 11:46:33 +01:00
										 |  |  | export HOMEBREW_VERSION | 
					
						
							| 
									
										
										
										
											2023-02-24 13:25:18 +00:00
										 |  |  | export HOMEBREW_MACOS_ARM_DEFAULT_PREFIX | 
					
						
							|  |  |  | export HOMEBREW_LINUX_DEFAULT_PREFIX | 
					
						
							|  |  |  | export HOMEBREW_GENERIC_DEFAULT_PREFIX | 
					
						
							|  |  |  | export HOMEBREW_DEFAULT_PREFIX | 
					
						
							|  |  |  | export HOMEBREW_MACOS_ARM_DEFAULT_REPOSITORY | 
					
						
							|  |  |  | export HOMEBREW_LINUX_DEFAULT_REPOSITORY | 
					
						
							|  |  |  | export HOMEBREW_GENERIC_DEFAULT_REPOSITORY | 
					
						
							|  |  |  | export HOMEBREW_DEFAULT_REPOSITORY | 
					
						
							| 
									
										
										
										
											2020-04-05 15:44:50 +01:00
										 |  |  | export HOMEBREW_DEFAULT_CACHE | 
					
						
							| 
									
										
										
										
											2016-05-03 16:01:42 +08:00
										 |  |  | export HOMEBREW_CACHE | 
					
						
							| 
									
										
										
										
											2020-04-05 15:44:50 +01:00
										 |  |  | export HOMEBREW_DEFAULT_LOGS | 
					
						
							| 
									
										
										
										
											2018-12-26 17:03:31 -08:00
										 |  |  | export HOMEBREW_LOGS | 
					
						
							| 
									
										
										
										
											2020-04-05 15:44:50 +01:00
										 |  |  | export HOMEBREW_DEFAULT_TEMP | 
					
						
							|  |  |  | export HOMEBREW_TEMP | 
					
						
							| 
									
										
										
										
											2016-02-16 09:29:03 +00:00
										 |  |  | export HOMEBREW_CELLAR | 
					
						
							| 
									
										
										
										
											2024-05-17 11:59:40 +09:00
										 |  |  | export HOMEBREW_CASKROOM | 
					
						
							| 
									
										
										
										
											2016-04-25 17:57:51 +01:00
										 |  |  | export HOMEBREW_SYSTEM | 
					
						
							| 
									
										
										
										
											2021-10-01 15:06:04 +01:00
										 |  |  | export HOMEBREW_SYSTEM_CA_CERTIFICATES_TOO_OLD | 
					
						
							| 
									
										
										
										
											2016-04-04 11:46:33 +01:00
										 |  |  | export HOMEBREW_CURL | 
					
						
							| 
									
										
										
										
											2021-10-23 15:09:34 -04:00
										 |  |  | export HOMEBREW_BREWED_CURL_PATH | 
					
						
							| 
									
										
										
										
											2020-11-18 16:38:08 -06:00
										 |  |  | export HOMEBREW_CURL_WARNING | 
					
						
							| 
									
										
										
										
											2018-10-04 09:31:37 +01:00
										 |  |  | export HOMEBREW_SYSTEM_CURL_TOO_OLD | 
					
						
							| 
									
										
										
										
											2018-08-23 11:50:42 -04:00
										 |  |  | export HOMEBREW_GIT | 
					
						
							| 
									
										
										
										
											2020-11-25 16:08:57 -06:00
										 |  |  | export HOMEBREW_GIT_WARNING | 
					
						
							| 
									
										
										
										
											2018-10-27 20:44:13 -04:00
										 |  |  | export HOMEBREW_MINIMUM_GIT_VERSION | 
					
						
							| 
									
										
										
										
											2020-12-16 17:40:58 -06:00
										 |  |  | export HOMEBREW_LINUX_MINIMUM_GLIBC_VERSION | 
					
						
							| 
									
										
										
										
											2023-02-15 16:34:50 +00:00
										 |  |  | export HOMEBREW_PHYSICAL_PROCESSOR | 
					
						
							| 
									
										
										
										
											2016-04-25 17:57:51 +01:00
										 |  |  | export HOMEBREW_PROCESSOR | 
					
						
							| 
									
										
										
										
											2016-04-12 11:02:22 +01:00
										 |  |  | export HOMEBREW_PRODUCT | 
					
						
							| 
									
										
										
										
											2016-04-04 11:46:33 +01:00
										 |  |  | export HOMEBREW_OS_VERSION | 
					
						
							| 
									
										
										
										
											2016-09-18 19:57:19 +01:00
										 |  |  | export HOMEBREW_MACOS_VERSION | 
					
						
							| 
									
										
										
										
											2018-09-20 13:49:10 +01:00
										 |  |  | export HOMEBREW_MACOS_VERSION_NUMERIC | 
					
						
							| 
									
										
										
										
											2023-02-24 13:25:18 +00:00
										 |  |  | export HOMEBREW_MACOS_NEWEST_UNSUPPORTED | 
					
						
							|  |  |  | export HOMEBREW_MACOS_OLDEST_SUPPORTED | 
					
						
							|  |  |  | export HOMEBREW_MACOS_OLDEST_ALLOWED | 
					
						
							| 
									
										
										
										
											2016-04-04 11:46:33 +01:00
										 |  |  | export HOMEBREW_USER_AGENT | 
					
						
							|  |  |  | export HOMEBREW_USER_AGENT_CURL | 
					
						
							| 
									
										
										
										
											2023-02-03 14:10:40 +00:00
										 |  |  | export HOMEBREW_API_DEFAULT_DOMAIN | 
					
						
							| 
									
										
										
										
											2019-05-17 17:29:12 +08:00
										 |  |  | export HOMEBREW_BOTTLE_DEFAULT_DOMAIN | 
					
						
							| 
									
										
										
										
											2023-02-10 17:27:10 +00:00
										 |  |  | export HOMEBREW_CURL_SPEED_LIMIT | 
					
						
							|  |  |  | export HOMEBREW_CURL_SPEED_TIME | 
					
						
							| 
									
										
										
										
											2016-02-16 09:29:03 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  | if [[ -n "${HOMEBREW_MACOS}" && -x "/usr/bin/xcode-select" ]] | 
					
						
							| 
									
										
										
										
											2016-02-16 09:29:03 +00:00
										 |  |  | then | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  |   XCODE_SELECT_PATH="$('/usr/bin/xcode-select' --print-path 2>/dev/null)" | 
					
						
							|  |  |  |   if [[ "${XCODE_SELECT_PATH}" == "/" ]] | 
					
						
							| 
									
										
										
										
											2016-02-16 09:29:03 +00:00
										 |  |  |   then | 
					
						
							|  |  |  |     odie <<EOS | 
					
						
							|  |  |  | Your xcode-select path is currently set to '/'. | 
					
						
							|  |  |  | This causes the 'xcrun' tool to hang, and can render Homebrew unusable. | 
					
						
							|  |  |  | If you are using Xcode, you should: | 
					
						
							| 
									
										
										
										
											2020-12-16 21:33:20 -05:00
										 |  |  |   sudo xcode-select --switch /Applications/Xcode.app | 
					
						
							| 
									
										
										
										
											2016-02-16 09:29:03 +00:00
										 |  |  | Otherwise, you should: | 
					
						
							|  |  |  |   sudo rm -rf /usr/share/xcode-select | 
					
						
							|  |  |  | EOS | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-08 05:53:10 -07:00
										 |  |  |   # Don't check xcrun if Xcode and the CLT aren't installed, as that opens | 
					
						
							|  |  |  |   # a popup window asking the user to install the CLT | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  |   if [[ -n "${XCODE_SELECT_PATH}" ]] | 
					
						
							| 
									
										
										
										
											2016-02-16 09:29:03 +00:00
										 |  |  |   then | 
					
						
							| 
									
										
										
										
											2024-05-14 15:29:43 +09:00
										 |  |  |     # TODO: this is fairly slow, figure out if there's a faster way. | 
					
						
							| 
									
										
										
										
											2016-06-08 05:53:10 -07:00
										 |  |  |     XCRUN_OUTPUT="$(/usr/bin/xcrun clang 2>&1)" | 
					
						
							|  |  |  |     XCRUN_STATUS="$?" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  |     if [[ "${XCRUN_STATUS}" -ne 0 && "${XCRUN_OUTPUT}" == *license* ]] | 
					
						
							| 
									
										
										
										
											2016-06-08 05:53:10 -07:00
										 |  |  |     then | 
					
						
							|  |  |  |       odie <<EOS | 
					
						
							| 
									
										
										
										
											2016-02-16 09:29:03 +00:00
										 |  |  | You have not agreed to the Xcode license. Please resolve this by running: | 
					
						
							| 
									
										
										
										
											2016-10-18 18:40:57 -07:00
										 |  |  |   sudo xcodebuild -license accept | 
					
						
							| 
									
										
										
										
											2016-02-16 09:29:03 +00:00
										 |  |  | EOS | 
					
						
							| 
									
										
										
										
											2016-06-08 05:53:10 -07:00
										 |  |  |     fi | 
					
						
							| 
									
										
										
										
											2016-02-16 09:29:03 +00:00
										 |  |  |   fi | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-30 00:43:07 +03:00
										 |  |  | for arg in "$@" | 
					
						
							|  |  |  | do | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  |   [[ "${arg}" == "--" ]] && break | 
					
						
							| 
									
										
										
										
											2020-07-30 18:40:10 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  |   if [[ "${arg}" == "--help" || "${arg}" == "-h" || "${arg}" == "--usage" || "${arg}" == "-?" ]] | 
					
						
							| 
									
										
										
										
											2016-09-30 00:43:07 +03:00
										 |  |  |   then | 
					
						
							|  |  |  |     export HOMEBREW_HELP="1" | 
					
						
							|  |  |  |     break | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | done | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-25 22:38:43 +01:00
										 |  |  | HOMEBREW_ARG_COUNT="$#" | 
					
						
							| 
									
										
										
										
											2016-02-16 09:29:03 +00:00
										 |  |  | HOMEBREW_COMMAND="$1" | 
					
						
							|  |  |  | shift | 
					
						
							| 
									
										
										
										
											2023-02-01 13:51:18 +01:00
										 |  |  | # If you are going to change anything in below case statement, | 
					
						
							|  |  |  | # be sure to also update HOMEBREW_INTERNAL_COMMAND_ALIASES hash in commands.rb | 
					
						
							| 
									
										
										
										
											2024-05-14 15:29:43 +09:00
										 |  |  | # doesn't need a default case as other arguments handled elsewhere. | 
					
						
							|  |  |  | # shellcheck disable=SC2249 | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  | case "${HOMEBREW_COMMAND}" in | 
					
						
							| 
									
										
										
										
											2021-09-16 01:08:02 +08:00
										 |  |  |   ls) HOMEBREW_COMMAND="list" ;; | 
					
						
							|  |  |  |   homepage) HOMEBREW_COMMAND="home" ;; | 
					
						
							|  |  |  |   -S) HOMEBREW_COMMAND="search" ;; | 
					
						
							|  |  |  |   up) HOMEBREW_COMMAND="update" ;; | 
					
						
							|  |  |  |   ln) HOMEBREW_COMMAND="link" ;; | 
					
						
							|  |  |  |   instal) HOMEBREW_COMMAND="install" ;; # gem does the same | 
					
						
							|  |  |  |   uninstal) HOMEBREW_COMMAND="uninstall" ;; | 
					
						
							| 
									
										
										
										
											2023-07-28 11:26:09 +01:00
										 |  |  |   post_install) HOMEBREW_COMMAND="postinstall" ;; | 
					
						
							| 
									
										
										
										
											2021-09-16 01:08:02 +08:00
										 |  |  |   rm) HOMEBREW_COMMAND="uninstall" ;; | 
					
						
							|  |  |  |   remove) HOMEBREW_COMMAND="uninstall" ;; | 
					
						
							|  |  |  |   abv) HOMEBREW_COMMAND="info" ;; | 
					
						
							|  |  |  |   dr) HOMEBREW_COMMAND="doctor" ;; | 
					
						
							|  |  |  |   --repo) HOMEBREW_COMMAND="--repository" ;; | 
					
						
							| 
									
										
										
										
											2016-08-07 11:56:51 +02:00
										 |  |  |   environment) HOMEBREW_COMMAND="--env" ;; | 
					
						
							| 
									
										
										
										
											2021-09-16 01:08:02 +08:00
										 |  |  |   --config) HOMEBREW_COMMAND="config" ;; | 
					
						
							|  |  |  |   -v) HOMEBREW_COMMAND="--version" ;; | 
					
						
							| 
									
										
										
										
											2023-02-01 13:51:18 +01:00
										 |  |  |   lc) HOMEBREW_COMMAND="livecheck" ;; | 
					
						
							|  |  |  |   tc) HOMEBREW_COMMAND="typecheck" ;; | 
					
						
							| 
									
										
										
										
											2016-02-16 09:29:03 +00:00
										 |  |  | esac | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-05 14:07:28 +00:00
										 |  |  | # Set HOMEBREW_DEV_CMD_RUN for users who have run a development command. | 
					
						
							|  |  |  | # This makes them behave like HOMEBREW_DEVELOPERs for brew update. | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  | if [[ -z "${HOMEBREW_DEVELOPER}" ]] | 
					
						
							| 
									
										
										
										
											2017-12-05 14:07:28 +00:00
										 |  |  | then | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  |   export HOMEBREW_GIT_CONFIG_FILE="${HOMEBREW_REPOSITORY}/.git/config" | 
					
						
							|  |  |  |   HOMEBREW_GIT_CONFIG_DEVELOPERMODE="$(git config --file="${HOMEBREW_GIT_CONFIG_FILE}" --get homebrew.devcmdrun 2>/dev/null)" | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  |   if [[ "${HOMEBREW_GIT_CONFIG_DEVELOPERMODE}" == "true" ]] | 
					
						
							| 
									
										
										
										
											2017-12-05 14:07:28 +00:00
										 |  |  |   then | 
					
						
							|  |  |  |     export HOMEBREW_DEV_CMD_RUN="1" | 
					
						
							|  |  |  |   fi | 
					
						
							| 
									
										
										
										
											2018-02-27 11:52:47 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   # Don't allow non-developers to customise Ruby warnings. | 
					
						
							|  |  |  |   unset HOMEBREW_RUBY_WARNINGS | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-06-19 03:50:47 +01:00
										 |  |  | unset HOMEBREW_AUTO_UPDATE_COMMAND | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-03-10 17:53:15 +00:00
										 |  |  | # Check for commands that should call `brew update --auto-update` first. | 
					
						
							|  |  |  | AUTO_UPDATE_COMMANDS=( | 
					
						
							|  |  |  |   install | 
					
						
							|  |  |  |   outdated | 
					
						
							|  |  |  |   upgrade | 
					
						
							|  |  |  |   bundle | 
					
						
							|  |  |  |   release | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | if check-array-membership "${HOMEBREW_COMMAND}" "${AUTO_UPDATE_COMMANDS[@]}" || | 
					
						
							|  |  |  |    [[ "${HOMEBREW_COMMAND}" == "tap" && "${HOMEBREW_ARG_COUNT}" -gt 1 ]] | 
					
						
							|  |  |  | then | 
					
						
							|  |  |  |   export HOMEBREW_AUTO_UPDATE_COMMAND="1" | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-06-19 03:50:47 +01:00
										 |  |  | # Check for commands that should auto-update the homebrew-core tap. | 
					
						
							|  |  |  | AUTO_UPDATE_CORE_TAP_COMMANDS=( | 
					
						
							|  |  |  |   bump | 
					
						
							|  |  |  |   bump-formula-pr | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | if check-array-membership "${HOMEBREW_COMMAND}" "${AUTO_UPDATE_CORE_TAP_COMMANDS[@]}" | 
					
						
							|  |  |  | then | 
					
						
							|  |  |  |   export HOMEBREW_AUTO_UPDATE_COMMAND="1" | 
					
						
							| 
									
										
										
										
											2023-07-28 10:13:57 +01:00
										 |  |  |   export HOMEBREW_AUTO_UPDATE_CORE_TAP="1" | 
					
						
							| 
									
										
										
										
											2024-03-14 01:40:29 +00:00
										 |  |  | elif [[ -z "${HOMEBREW_AUTO_UPDATING}" ]] | 
					
						
							|  |  |  | then | 
					
						
							| 
									
										
										
										
											2023-07-28 10:13:57 +01:00
										 |  |  |   unset HOMEBREW_AUTO_UPDATE_CORE_TAP | 
					
						
							| 
									
										
										
										
											2023-06-19 03:50:47 +01:00
										 |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Check for commands that should auto-update the homebrew-cask tap. | 
					
						
							|  |  |  | AUTO_UPDATE_CASK_TAP_COMMANDS=( | 
					
						
							|  |  |  |   bump | 
					
						
							|  |  |  |   bump-cask-pr | 
					
						
							| 
									
										
										
										
											2023-06-22 16:53:46 +01:00
										 |  |  |   bump-unversioned-casks | 
					
						
							| 
									
										
										
										
											2023-06-19 03:50:47 +01:00
										 |  |  | ) | 
					
						
							|  |  |  | if check-array-membership "${HOMEBREW_COMMAND}" "${AUTO_UPDATE_CASK_TAP_COMMANDS[@]}" | 
					
						
							|  |  |  | then | 
					
						
							|  |  |  |   export HOMEBREW_AUTO_UPDATE_COMMAND="1" | 
					
						
							| 
									
										
										
										
											2023-07-28 10:13:57 +01:00
										 |  |  |   export HOMEBREW_AUTO_UPDATE_CASK_TAP="1" | 
					
						
							| 
									
										
										
										
											2024-03-14 01:40:29 +00:00
										 |  |  | elif [[ -z "${HOMEBREW_AUTO_UPDATING}" ]] | 
					
						
							|  |  |  | then | 
					
						
							|  |  |  |   unset HOMEBREW_AUTO_UPDATE_CASK_TAP | 
					
						
							| 
									
										
										
										
											2023-06-19 03:50:47 +01:00
										 |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  | if [[ -z "${HOMEBREW_RUBY_WARNINGS}" ]] | 
					
						
							| 
									
										
										
										
											2018-02-27 11:52:47 +00:00
										 |  |  | then | 
					
						
							| 
									
										
										
										
											2021-02-11 16:22:01 -05:00
										 |  |  |   export HOMEBREW_RUBY_WARNINGS="-W1" | 
					
						
							| 
									
										
										
										
											2017-12-05 14:07:28 +00:00
										 |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-05 15:44:50 +01:00
										 |  |  | export HOMEBREW_BREW_DEFAULT_GIT_REMOTE="https://github.com/Homebrew/brew" | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  | if [[ -z "${HOMEBREW_BREW_GIT_REMOTE}" ]] | 
					
						
							| 
									
										
										
										
											2019-12-03 00:45:11 +09:00
										 |  |  | then | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  |   HOMEBREW_BREW_GIT_REMOTE="${HOMEBREW_BREW_DEFAULT_GIT_REMOTE}" | 
					
						
							| 
									
										
										
										
											2019-12-03 00:45:11 +09:00
										 |  |  | fi | 
					
						
							| 
									
										
										
										
											2019-12-30 10:38:47 +00:00
										 |  |  | export HOMEBREW_BREW_GIT_REMOTE | 
					
						
							| 
									
										
										
										
											2019-12-03 00:45:11 +09:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-23 02:21:31 +01:00
										 |  |  | export HOMEBREW_CORE_DEFAULT_GIT_REMOTE="https://github.com/Homebrew/homebrew-core" | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  | if [[ -z "${HOMEBREW_CORE_GIT_REMOTE}" ]] | 
					
						
							| 
									
										
										
										
											2019-12-30 10:38:47 +00:00
										 |  |  | then | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  |   HOMEBREW_CORE_GIT_REMOTE="${HOMEBREW_CORE_DEFAULT_GIT_REMOTE}" | 
					
						
							| 
									
										
										
										
											2019-12-03 00:45:11 +09:00
										 |  |  | fi | 
					
						
							| 
									
										
										
										
											2019-12-30 10:38:47 +00:00
										 |  |  | export HOMEBREW_CORE_GIT_REMOTE | 
					
						
							| 
									
										
										
										
											2019-12-03 00:45:11 +09:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-26 01:29:15 -04:00
										 |  |  | # Set HOMEBREW_DEVELOPER_COMMAND if the command being run is a developer command | 
					
						
							|  |  |  | if [[ -f "${HOMEBREW_LIBRARY}/Homebrew/dev-cmd/${HOMEBREW_COMMAND}.sh" ]] || | 
					
						
							|  |  |  |    [[ -f "${HOMEBREW_LIBRARY}/Homebrew/dev-cmd/${HOMEBREW_COMMAND}.rb" ]] | 
					
						
							| 
									
										
										
										
											2016-05-25 01:53:14 +02:00
										 |  |  | then | 
					
						
							| 
									
										
										
										
											2021-10-26 01:29:15 -04:00
										 |  |  |   export HOMEBREW_DEVELOPER_COMMAND="1" | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-18 13:17:54 +01:00
										 |  |  | # Provide a (temporary, undocumented) way to disable Sorbet globally if needed | 
					
						
							|  |  |  | # to avoid reverting the above. | 
					
						
							|  |  |  | if [[ -n "${HOMEBREW_NO_SORBET_RUNTIME}" ]] | 
					
						
							|  |  |  | then | 
					
						
							|  |  |  |   unset HOMEBREW_SORBET_RUNTIME | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-26 01:29:15 -04:00
										 |  |  | if [[ -n "${HOMEBREW_DEVELOPER_COMMAND}" && -z "${HOMEBREW_DEVELOPER}" ]] | 
					
						
							| 
									
										
										
										
											2016-05-25 01:53:14 +02:00
										 |  |  | then | 
					
						
							| 
									
										
										
										
											2021-10-26 01:29:15 -04:00
										 |  |  |   if [[ -z "${HOMEBREW_DEV_CMD_RUN}" ]] | 
					
						
							| 
									
										
										
										
											2016-09-05 21:32:18 +01:00
										 |  |  |   then | 
					
						
							| 
									
										
										
										
											2023-02-10 23:15:40 -05:00
										 |  |  |     opoo <<EOS | 
					
						
							|  |  |  | $(bold "${HOMEBREW_COMMAND}") is a developer command, so Homebrew's | 
					
						
							|  |  |  | developer mode has been automatically turned on. | 
					
						
							|  |  |  | To turn developer mode off, run: | 
					
						
							|  |  |  |   brew developer off | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | EOS | 
					
						
							| 
									
										
										
										
											2016-09-05 21:32:18 +01:00
										 |  |  |   fi | 
					
						
							| 
									
										
										
										
											2021-10-26 01:29:15 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |   git config --file="${HOMEBREW_GIT_CONFIG_FILE}" --replace-all homebrew.devcmdrun true 2>/dev/null | 
					
						
							|  |  |  |   export HOMEBREW_DEV_CMD_RUN="1" | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-01 19:37:32 +01:00
										 |  |  | if [[ -n "${HOMEBREW_DEVELOPER}" || -n "${HOMEBREW_DEV_CMD_RUN}" ]] | 
					
						
							|  |  |  | then | 
					
						
							|  |  |  |   # Always run with Sorbet for Homebrew developers or when a Homebrew developer command has been run. | 
					
						
							|  |  |  |   export HOMEBREW_SORBET_RUNTIME="1" | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-26 01:29:15 -04:00
										 |  |  | if [[ -f "${HOMEBREW_LIBRARY}/Homebrew/cmd/${HOMEBREW_COMMAND}.sh" ]] | 
					
						
							|  |  |  | then | 
					
						
							|  |  |  |   HOMEBREW_BASH_COMMAND="${HOMEBREW_LIBRARY}/Homebrew/cmd/${HOMEBREW_COMMAND}.sh" | 
					
						
							|  |  |  | elif [[ -f "${HOMEBREW_LIBRARY}/Homebrew/dev-cmd/${HOMEBREW_COMMAND}.sh" ]] | 
					
						
							|  |  |  | then | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  |   HOMEBREW_BASH_COMMAND="${HOMEBREW_LIBRARY}/Homebrew/dev-cmd/${HOMEBREW_COMMAND}.sh" | 
					
						
							| 
									
										
										
										
											2016-02-16 09:29:03 +00:00
										 |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-17 02:07:06 +08:00
										 |  |  | check-run-command-as-root | 
					
						
							| 
									
										
										
										
											2016-02-16 09:29:03 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-06-30 09:34:21 -04:00
										 |  |  | check-prefix-is-not-tmpdir | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  | # shellcheck disable=SC2250 | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  | if [[ "${HOMEBREW_PREFIX}" == "/usr/local" ]] && | 
					
						
							|  |  |  |    [[ "${HOMEBREW_PREFIX}" != "${HOMEBREW_REPOSITORY}" ]] && | 
					
						
							|  |  |  |    [[ "${HOMEBREW_CELLAR}" == "${HOMEBREW_REPOSITORY}/Cellar" ]] | 
					
						
							| 
									
										
										
										
											2016-10-11 09:37:37 +01:00
										 |  |  | then | 
					
						
							|  |  |  |   cat >&2 <<EOS | 
					
						
							|  |  |  | Warning: your HOMEBREW_PREFIX is set to /usr/local but HOMEBREW_CELLAR is set | 
					
						
							|  |  |  | to $HOMEBREW_CELLAR. Your current HOMEBREW_CELLAR location will stop | 
					
						
							|  |  |  | you being able to use all the binary packages (bottles) Homebrew provides. We | 
					
						
							|  |  |  | recommend you move your HOMEBREW_CELLAR to /usr/local/Cellar which will get you | 
					
						
							|  |  |  | access to all bottles."
 | 
					
						
							|  |  |  | EOS | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  | source "${HOMEBREW_LIBRARY}/Homebrew/utils/analytics.sh" | 
					
						
							| 
									
										
										
										
											2016-04-12 11:02:22 +01:00
										 |  |  | setup-analytics | 
					
						
							| 
									
										
										
										
											2016-03-28 09:33:45 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-19 08:35:12 -05:00
										 |  |  | # Use this configuration file instead of ~/.ssh/config when fetching git over SSH. | 
					
						
							|  |  |  | if [[ -n "${HOMEBREW_SSH_CONFIG_PATH}" ]] | 
					
						
							|  |  |  | then | 
					
						
							| 
									
										
										
										
											2022-06-28 09:42:50 +01:00
										 |  |  |   export GIT_SSH_COMMAND="ssh -F${HOMEBREW_SSH_CONFIG_PATH}" | 
					
						
							| 
									
										
										
										
											2021-10-19 08:35:12 -05:00
										 |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-23 10:33:05 +02:00
										 |  |  | if [[ -n "${HOMEBREW_DOCKER_REGISTRY_TOKEN}" ]] | 
					
						
							| 
									
										
										
										
											2022-01-27 15:44:34 +00:00
										 |  |  | then | 
					
						
							|  |  |  |   export HOMEBREW_GITHUB_PACKAGES_AUTH="Bearer ${HOMEBREW_DOCKER_REGISTRY_TOKEN}" | 
					
						
							| 
									
										
										
										
											2022-05-23 10:33:05 +02:00
										 |  |  | elif [[ -n "${HOMEBREW_DOCKER_REGISTRY_BASIC_AUTH_TOKEN}" ]] | 
					
						
							| 
									
										
										
										
											2022-01-27 15:44:34 +00:00
										 |  |  | then | 
					
						
							|  |  |  |   export HOMEBREW_GITHUB_PACKAGES_AUTH="Basic ${HOMEBREW_DOCKER_REGISTRY_BASIC_AUTH_TOKEN}" | 
					
						
							|  |  |  | else | 
					
						
							|  |  |  |   export HOMEBREW_GITHUB_PACKAGES_AUTH="Bearer QQ==" | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  | if [[ -n "${HOMEBREW_BASH_COMMAND}" ]] | 
					
						
							| 
									
										
										
										
											2016-02-16 09:29:03 +00:00
										 |  |  | then | 
					
						
							|  |  |  |   # source rather than executing directly to ensure the entire file is read into | 
					
						
							|  |  |  |   # memory before it is run. This makes running a Bash script behave more like | 
					
						
							|  |  |  |   # a Ruby script and avoids hard-to-debug issues if the Bash script is updated | 
					
						
							|  |  |  |   # at the same time as being run. | 
					
						
							|  |  |  |   # | 
					
						
							| 
									
										
										
										
											2021-04-22 13:18:44 +01:00
										 |  |  |   # Shellcheck can't follow this dynamic `source`. | 
					
						
							| 
									
										
										
										
											2018-10-04 09:31:37 +01:00
										 |  |  |   # shellcheck disable=SC1090 | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  |   source "${HOMEBREW_BASH_COMMAND}" | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   { | 
					
						
							| 
									
										
										
										
											2022-05-19 11:04:20 -04:00
										 |  |  |     auto-update "$@" | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  |     "homebrew-${HOMEBREW_COMMAND}" "$@" | 
					
						
							|  |  |  |     exit $? | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-16 09:29:03 +00:00
										 |  |  | else | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  |   source "${HOMEBREW_LIBRARY}/Homebrew/utils/ruby.sh" | 
					
						
							| 
									
										
										
										
											2016-07-12 08:51:36 +01:00
										 |  |  |   setup-ruby-path | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-25 22:38:43 +01:00
										 |  |  |   # Unshift command back into argument list (unless argument list was empty). | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  |   [[ "${HOMEBREW_ARG_COUNT}" -gt 0 ]] && set -- "${HOMEBREW_COMMAND}" "$@" | 
					
						
							| 
									
										
										
										
											2021-04-17 20:34:16 +09:00
										 |  |  |   # HOMEBREW_RUBY_PATH set by utils/ruby.sh | 
					
						
							| 
									
										
										
										
											2021-04-16 22:32:30 +09:00
										 |  |  |   # shellcheck disable=SC2154 | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  |   { | 
					
						
							| 
									
										
										
										
											2022-05-19 11:04:20 -04:00
										 |  |  |     auto-update "$@" | 
					
						
							| 
									
										
										
										
											2022-11-05 01:58:12 +00:00
										 |  |  |     exec "${HOMEBREW_RUBY_PATH}" "${HOMEBREW_RUBY_WARNINGS}" "${HOMEBREW_RUBY_DISABLE_OPTIONS}" \
 | 
					
						
							| 
									
										
										
										
											2021-09-16 01:04:06 +08:00
										 |  |  |       "${HOMEBREW_LIBRARY}/Homebrew/brew.rb" "$@" | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  |   } | 
					
						
							| 
									
										
										
										
											2016-02-16 09:29:03 +00:00
										 |  |  | fi |