| 
									
										
										
										
											2024-07-14 16:18:26 -04:00
										 |  |  | # Documentation defined in Library/Homebrew/cmd/update.rb | 
					
						
							| 
									
										
										
										
											2016-04-08 16:28:43 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  | # HOMEBREW_CURLRC, HOMEBREW_DEVELOPER, HOMEBREW_GIT_EMAIL, HOMEBREW_GIT_NAME | 
					
						
							|  |  |  | # HOMEBREW_UPDATE_CLEANUP, HOMEBREW_UPDATE_TO_TAG are from the user environment | 
					
						
							|  |  |  | # HOMEBREW_LIBRARY, HOMEBREW_PREFIX, HOMEBREW_REPOSITORY are set by bin/brew | 
					
						
							|  |  |  | # HOMEBREW_BREW_DEFAULT_GIT_REMOTE, HOMEBREW_BREW_GIT_REMOTE, HOMEBREW_CACHE, HOMEBREW_CELLAR, HOMEBREW_CURL | 
					
						
							|  |  |  | # HOMEBREW_DEV_CMD_RUN, HOMEBREW_FORCE_BREWED_CURL, HOMEBREW_FORCE_BREWED_GIT, HOMEBREW_SYSTEM_CURL_TOO_OLD | 
					
						
							|  |  |  | # HOMEBREW_USER_AGENT_CURL are set by brew.sh | 
					
						
							|  |  |  | # shellcheck disable=SC2154 | 
					
						
							|  |  |  | source "${HOMEBREW_LIBRARY}/Homebrew/utils/lock.sh" | 
					
						
							| 
									
										
										
										
											2016-05-10 20:16:25 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-03 21:47:17 +01:00
										 |  |  | # Replaces the function in Library/Homebrew/brew.sh to cache the Curl/Git executable to | 
					
						
							|  |  |  | # provide speedup when using Curl/Git repeatedly (as update.sh does). | 
					
						
							|  |  |  | curl() { | 
					
						
							|  |  |  |   if [[ -z "${CURL_EXECUTABLE}" ]] | 
					
						
							|  |  |  |   then | 
					
						
							|  |  |  |     CURL_EXECUTABLE="$("${HOMEBREW_LIBRARY}/Homebrew/shims/shared/curl" --homebrew=print-path)" | 
					
						
							| 
									
										
										
										
											2023-03-22 18:03:47 +08:00
										 |  |  |     if [[ -z "${CURL_EXECUTABLE}" ]] | 
					
						
							|  |  |  |     then | 
					
						
							|  |  |  |       odie "Can't find a working Curl!" | 
					
						
							|  |  |  |     fi | 
					
						
							| 
									
										
										
										
											2021-10-03 21:47:17 +01:00
										 |  |  |   fi | 
					
						
							|  |  |  |   "${CURL_EXECUTABLE}" "$@" | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-07 10:24:37 +01:00
										 |  |  | git() { | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |   if [[ -z "${GIT_EXECUTABLE}" ]] | 
					
						
							| 
									
										
										
										
											2016-07-07 10:24:37 +01:00
										 |  |  |   then | 
					
						
							| 
									
										
										
										
											2021-10-03 21:47:17 +01:00
										 |  |  |     GIT_EXECUTABLE="$("${HOMEBREW_LIBRARY}/Homebrew/shims/shared/git" --homebrew=print-path)" | 
					
						
							| 
									
										
										
										
											2023-03-22 18:03:47 +08:00
										 |  |  |     if [[ -z "${GIT_EXECUTABLE}" ]] | 
					
						
							|  |  |  |     then | 
					
						
							|  |  |  |       odie "Can't find a working Git!" | 
					
						
							|  |  |  |     fi | 
					
						
							| 
									
										
										
										
											2016-07-07 10:24:37 +01:00
										 |  |  |   fi | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |   "${GIT_EXECUTABLE}" "$@" | 
					
						
							| 
									
										
										
										
											2016-07-07 10:24:37 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-10 20:28:52 +00:00
										 |  |  | git_init_if_necessary() { | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |   safe_cd "${HOMEBREW_REPOSITORY}" | 
					
						
							| 
									
										
										
										
											2016-01-20 19:51:48 +08:00
										 |  |  |   if [[ ! -d ".git" ]] | 
					
						
							| 
									
										
										
										
											2016-01-10 20:28:52 +00:00
										 |  |  |   then | 
					
						
							| 
									
										
										
										
											2016-03-09 17:09:38 +08:00
										 |  |  |     set -e | 
					
						
							|  |  |  |     trap '{ rm -rf .git; exit 1; }' EXIT | 
					
						
							| 
									
										
										
										
											2016-01-28 19:32:41 +08:00
										 |  |  |     git init | 
					
						
							| 
									
										
										
										
											2016-01-10 20:28:52 +00:00
										 |  |  |     git config --bool core.autocrlf false | 
					
						
							| 
									
										
										
										
											2022-10-08 21:57:44 +08:00
										 |  |  |     git config --bool core.symlinks true | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |     if [[ "${HOMEBREW_BREW_DEFAULT_GIT_REMOTE}" != "${HOMEBREW_BREW_GIT_REMOTE}" ]] | 
					
						
							| 
									
										
										
										
											2020-01-13 09:43:02 +00:00
										 |  |  |     then | 
					
						
							| 
									
										
										
										
											2023-02-10 23:15:40 -05:00
										 |  |  |       echo "HOMEBREW_BREW_GIT_REMOTE set: using ${HOMEBREW_BREW_GIT_REMOTE} as the Homebrew/brew Git remote." | 
					
						
							| 
									
										
										
										
											2020-01-13 09:43:02 +00:00
										 |  |  |     fi | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |     git config remote.origin.url "${HOMEBREW_BREW_GIT_REMOTE}" | 
					
						
							| 
									
										
										
										
											2016-01-10 20:28:52 +00:00
										 |  |  |     git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*" | 
					
						
							| 
									
										
										
										
											2020-10-09 09:32:38 +01:00
										 |  |  |     git fetch --force --tags origin | 
					
						
							| 
									
										
										
										
											2020-06-16 21:55:37 -07:00
										 |  |  |     git remote set-head origin --auto >/dev/null | 
					
						
							| 
									
										
										
										
											2016-01-28 17:11:35 +08:00
										 |  |  |     git reset --hard origin/master | 
					
						
							| 
									
										
										
										
											2016-07-14 15:39:05 +08:00
										 |  |  |     SKIP_FETCH_BREW_REPOSITORY=1 | 
					
						
							|  |  |  |     set +e | 
					
						
							|  |  |  |     trap - EXIT | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-07 11:16:03 +01:00
										 |  |  |   [[ -d "${HOMEBREW_CORE_REPOSITORY}" ]] || return | 
					
						
							|  |  |  |   safe_cd "${HOMEBREW_CORE_REPOSITORY}" | 
					
						
							| 
									
										
										
										
											2016-07-14 15:39:05 +08:00
										 |  |  |   if [[ ! -d ".git" ]] | 
					
						
							|  |  |  |   then | 
					
						
							|  |  |  |     set -e | 
					
						
							|  |  |  |     trap '{ rm -rf .git; exit 1; }' EXIT | 
					
						
							|  |  |  |     git init | 
					
						
							|  |  |  |     git config --bool core.autocrlf false | 
					
						
							| 
									
										
										
										
											2022-10-08 21:57:44 +08:00
										 |  |  |     git config --bool core.symlinks true | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |     if [[ "${HOMEBREW_CORE_DEFAULT_GIT_REMOTE}" != "${HOMEBREW_CORE_GIT_REMOTE}" ]] | 
					
						
							| 
									
										
										
										
											2020-01-13 09:43:02 +00:00
										 |  |  |     then | 
					
						
							| 
									
										
										
										
											2023-02-10 23:15:40 -05:00
										 |  |  |       echo "HOMEBREW_CORE_GIT_REMOTE set: using ${HOMEBREW_CORE_GIT_REMOTE} as the Homebrew/homebrew-core Git remote." | 
					
						
							| 
									
										
										
										
											2020-01-13 09:43:02 +00:00
										 |  |  |     fi | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |     git config remote.origin.url "${HOMEBREW_CORE_GIT_REMOTE}" | 
					
						
							| 
									
										
										
										
											2016-07-14 15:39:05 +08:00
										 |  |  |     git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*" | 
					
						
							| 
									
										
										
										
											2020-10-09 09:32:38 +01:00
										 |  |  |     git fetch --force origin refs/heads/master:refs/remotes/origin/master | 
					
						
							| 
									
										
										
										
											2020-06-16 21:55:37 -07:00
										 |  |  |     git remote set-head origin --auto >/dev/null | 
					
						
							| 
									
										
										
										
											2016-07-14 15:39:05 +08:00
										 |  |  |     git reset --hard origin/master | 
					
						
							|  |  |  |     SKIP_FETCH_CORE_REPOSITORY=1 | 
					
						
							| 
									
										
										
										
											2016-03-09 17:09:38 +08:00
										 |  |  |     set +e | 
					
						
							|  |  |  |     trap - EXIT | 
					
						
							| 
									
										
										
										
											2016-01-10 20:28:52 +00:00
										 |  |  |   fi | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-15 21:24:34 +01:00
										 |  |  | repo_var_suffix() { | 
					
						
							|  |  |  |   local repo_dir="${1}" | 
					
						
							| 
									
										
										
										
											2024-02-23 17:09:42 +01:00
										 |  |  |   local repo_var_suffix | 
					
						
							| 
									
										
										
										
											2016-01-21 18:44:32 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-15 21:24:34 +01:00
										 |  |  |   if [[ "${repo_dir}" == "${HOMEBREW_REPOSITORY}" ]] | 
					
						
							| 
									
										
										
										
											2016-01-20 19:41:42 +08:00
										 |  |  |   then | 
					
						
							| 
									
										
										
										
											2024-02-15 21:24:34 +01:00
										 |  |  |     repo_var_suffix="" | 
					
						
							| 
									
										
										
										
											2016-01-20 19:41:42 +08:00
										 |  |  |   else | 
					
						
							| 
									
										
										
										
											2024-02-15 21:24:34 +01:00
										 |  |  |     repo_var_suffix="${repo_dir#"${HOMEBREW_LIBRARY}/Taps"}" | 
					
						
							|  |  |  |     repo_var_suffix="$(echo -n "${repo_var_suffix}" | tr -C "A-Za-z0-9" "_" | tr "[:lower:]" "[:upper:]")" | 
					
						
							| 
									
										
										
										
											2016-01-20 19:41:42 +08:00
										 |  |  |   fi | 
					
						
							| 
									
										
										
										
											2024-02-15 21:24:34 +01:00
										 |  |  |   echo "${repo_var_suffix}" | 
					
						
							| 
									
										
										
										
											2016-01-10 20:28:52 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | upstream_branch() { | 
					
						
							|  |  |  |   local upstream_branch | 
					
						
							| 
									
										
										
										
											2016-01-21 18:44:32 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-20 20:29:47 +08:00
										 |  |  |   upstream_branch="$(git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null)" | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |   if [[ -z "${upstream_branch}" ]] | 
					
						
							| 
									
										
										
										
											2020-06-16 21:55:37 -07:00
										 |  |  |   then | 
					
						
							|  |  |  |     git remote set-head origin --auto >/dev/null | 
					
						
							|  |  |  |     upstream_branch="$(git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null)" | 
					
						
							|  |  |  |   fi | 
					
						
							| 
									
										
										
										
											2016-01-20 20:29:47 +08:00
										 |  |  |   upstream_branch="${upstream_branch#refs/remotes/origin/}" | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |   [[ -z "${upstream_branch}" ]] && upstream_branch="master" | 
					
						
							|  |  |  |   echo "${upstream_branch}" | 
					
						
							| 
									
										
										
										
											2016-01-10 20:28:52 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | read_current_revision() { | 
					
						
							|  |  |  |   git rev-parse -q --verify HEAD | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | pop_stash() { | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |   [[ -z "${STASHED}" ]] && return | 
					
						
							|  |  |  |   if [[ -n "${HOMEBREW_VERBOSE}" ]] | 
					
						
							| 
									
										
										
										
											2016-01-10 20:28:52 +00:00
										 |  |  |   then | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |     echo "Restoring your stashed changes to ${DIR}..." | 
					
						
							| 
									
										
										
										
											2016-06-05 06:27:58 -07:00
										 |  |  |     git stash pop | 
					
						
							|  |  |  |   else | 
					
						
							|  |  |  |     git stash pop "${QUIET_ARGS[@]}" 1>/dev/null | 
					
						
							| 
									
										
										
										
											2016-01-10 20:28:52 +00:00
										 |  |  |   fi | 
					
						
							|  |  |  |   unset STASHED | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | pop_stash_message() { | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |   [[ -z "${STASHED}" ]] && return | 
					
						
							|  |  |  |   echo "To restore the stashed changes to ${DIR}, run:" | 
					
						
							|  |  |  |   echo "  cd ${DIR} && git stash pop" | 
					
						
							| 
									
										
										
										
											2016-01-10 20:28:52 +00:00
										 |  |  |   unset STASHED | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | reset_on_interrupt() { | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |   if [[ "${INITIAL_BRANCH}" != "${UPSTREAM_BRANCH}" && -n "${INITIAL_BRANCH}" ]] | 
					
						
							| 
									
										
										
										
											2016-01-20 22:58:45 +08:00
										 |  |  |   then | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |     git checkout "${INITIAL_BRANCH}" "${QUIET_ARGS[@]}" | 
					
						
							| 
									
										
										
										
											2016-01-20 22:58:45 +08:00
										 |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |   if [[ -n "${INITIAL_REVISION}" ]] | 
					
						
							| 
									
										
										
										
											2016-01-20 22:58:45 +08:00
										 |  |  |   then | 
					
						
							| 
									
										
										
										
											2016-05-03 15:28:00 +01:00
										 |  |  |     git rebase --abort &>/dev/null | 
					
						
							|  |  |  |     git merge --abort &>/dev/null | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |     git reset --hard "${INITIAL_REVISION}" "${QUIET_ARGS[@]}" | 
					
						
							| 
									
										
										
										
											2016-01-20 22:58:45 +08:00
										 |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |   if [[ -n "${HOMEBREW_NO_UPDATE_CLEANUP}" ]] | 
					
						
							| 
									
										
										
										
											2016-01-10 20:28:52 +00:00
										 |  |  |   then | 
					
						
							|  |  |  |     pop_stash | 
					
						
							|  |  |  |   else | 
					
						
							|  |  |  |     pop_stash_message | 
					
						
							|  |  |  |   fi | 
					
						
							| 
									
										
										
										
											2016-01-20 22:58:45 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   exit 130 | 
					
						
							| 
									
										
										
										
											2016-01-10 20:28:52 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-08 12:47:15 -04:00
										 |  |  | # Used for testing purposes, e.g. for testing formula migration after | 
					
						
							| 
									
										
										
										
											2016-08-10 09:33:47 +01:00
										 |  |  | # renaming it in the currently checked-out branch. To test run | 
					
						
							|  |  |  | # "brew update --simulate-from-current-branch" | 
					
						
							|  |  |  | simulate_from_current_branch() { | 
					
						
							|  |  |  |   local DIR | 
					
						
							|  |  |  |   local TAP_VAR | 
					
						
							|  |  |  |   local UPSTREAM_BRANCH | 
					
						
							|  |  |  |   local CURRENT_REVISION | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   DIR="$1" | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |   cd "${DIR}" || return | 
					
						
							| 
									
										
										
										
											2016-08-10 09:33:47 +01:00
										 |  |  |   TAP_VAR="$2" | 
					
						
							|  |  |  |   UPSTREAM_BRANCH="$3" | 
					
						
							|  |  |  |   CURRENT_REVISION="$4" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |   INITIAL_REVISION="$(git rev-parse -q --verify "${UPSTREAM_BRANCH}")" | 
					
						
							|  |  |  |   export HOMEBREW_UPDATE_BEFORE"${TAP_VAR}"="${INITIAL_REVISION}" | 
					
						
							|  |  |  |   export HOMEBREW_UPDATE_AFTER"${TAP_VAR}"="${CURRENT_REVISION}" | 
					
						
							|  |  |  |   if [[ "${INITIAL_REVISION}" != "${CURRENT_REVISION}" ]] | 
					
						
							| 
									
										
										
										
											2016-08-10 09:33:47 +01:00
										 |  |  |   then | 
					
						
							|  |  |  |     HOMEBREW_UPDATED="1" | 
					
						
							|  |  |  |   fi | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |   if ! git merge-base --is-ancestor "${INITIAL_REVISION}" "${CURRENT_REVISION}" | 
					
						
							| 
									
										
										
										
											2016-08-10 09:33:47 +01:00
										 |  |  |   then | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |     odie "Your ${DIR} HEAD is not a descendant of ${UPSTREAM_BRANCH}!" | 
					
						
							| 
									
										
										
										
											2016-08-10 09:33:47 +01:00
										 |  |  |   fi | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | merge_or_rebase() { | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |   if [[ -n "${HOMEBREW_VERBOSE}" ]] | 
					
						
							| 
									
										
										
										
											2016-07-12 19:45:49 +01:00
										 |  |  |   then | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |     echo "Updating ${DIR}..." | 
					
						
							| 
									
										
										
										
											2016-07-12 19:45:49 +01:00
										 |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-21 18:44:32 +08:00
										 |  |  |   local DIR | 
					
						
							|  |  |  |   local TAP_VAR | 
					
						
							| 
									
										
										
										
											2016-08-10 09:33:47 +01:00
										 |  |  |   local UPSTREAM_BRANCH | 
					
						
							| 
									
										
										
										
											2016-01-21 18:44:32 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   DIR="$1" | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |   cd "${DIR}" || return | 
					
						
							| 
									
										
										
										
											2016-08-10 09:33:47 +01:00
										 |  |  |   TAP_VAR="$2" | 
					
						
							|  |  |  |   UPSTREAM_BRANCH="$3" | 
					
						
							| 
									
										
										
										
											2016-01-10 20:28:52 +00:00
										 |  |  |   unset STASHED | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-21 14:01:51 +08:00
										 |  |  |   trap reset_on_interrupt SIGINT | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  |   if [[ "${DIR}" == "${HOMEBREW_REPOSITORY}" && -n "${HOMEBREW_UPDATE_TO_TAG}" ]] | 
					
						
							| 
									
										
										
										
											2016-09-17 19:41:21 +01:00
										 |  |  |   then | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  |     UPSTREAM_TAG="$( | 
					
						
							|  |  |  |       git tag --list | | 
					
						
							|  |  |  |         sort --field-separator=. --key=1,1nr -k 2,2nr -k 3,3nr | | 
					
						
							|  |  |  |         grep --max-count=1 '^[0-9]*\.[0-9]*\.[0-9]*$' | 
					
						
							|  |  |  |     )"
 | 
					
						
							| 
									
										
										
										
											2016-09-21 14:32:48 +01:00
										 |  |  |   else | 
					
						
							|  |  |  |     UPSTREAM_TAG="" | 
					
						
							| 
									
										
										
										
											2016-09-17 19:41:21 +01:00
										 |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  |   if [[ -n "${UPSTREAM_TAG}" ]] | 
					
						
							| 
									
										
										
										
											2016-09-17 19:41:21 +01:00
										 |  |  |   then | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |     REMOTE_REF="refs/tags/${UPSTREAM_TAG}" | 
					
						
							| 
									
										
										
										
											2016-09-24 17:25:15 +01:00
										 |  |  |     UPSTREAM_BRANCH="stable" | 
					
						
							| 
									
										
										
										
											2016-09-17 19:41:21 +01:00
										 |  |  |   else | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |     REMOTE_REF="origin/${UPSTREAM_BRANCH}" | 
					
						
							| 
									
										
										
										
											2016-09-17 19:41:21 +01:00
										 |  |  |   fi | 
					
						
							| 
									
										
										
										
											2016-09-17 19:36:53 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-21 14:01:51 +08:00
										 |  |  |   if [[ -n "$(git status --untracked-files=all --porcelain 2>/dev/null)" ]] | 
					
						
							|  |  |  |   then | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |     if [[ -n "${HOMEBREW_VERBOSE}" ]] | 
					
						
							| 
									
										
										
										
											2016-01-21 14:01:51 +08:00
										 |  |  |     then | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |       echo "Stashing uncommitted changes to ${DIR}..." | 
					
						
							| 
									
										
										
										
											2016-01-21 14:01:51 +08:00
										 |  |  |     fi | 
					
						
							| 
									
										
										
										
											2016-02-18 10:38:30 +00:00
										 |  |  |     git merge --abort &>/dev/null | 
					
						
							| 
									
										
										
										
											2016-05-03 15:28:00 +01:00
										 |  |  |     git rebase --abort &>/dev/null | 
					
						
							| 
									
										
										
										
											2016-08-25 11:40:18 +01:00
										 |  |  |     git reset --mixed "${QUIET_ARGS[@]}" | 
					
						
							|  |  |  |     if ! git -c "user.email=brew-update@localhost" \
 | 
					
						
							| 
									
										
										
										
											2021-09-16 01:08:02 +08:00
										 |  |  |        -c "user.name=brew update" \
 | 
					
						
							|  |  |  |        stash save --include-untracked "${QUIET_ARGS[@]}" | 
					
						
							| 
									
										
										
										
											2016-08-25 11:40:18 +01:00
										 |  |  |     then | 
					
						
							|  |  |  |       odie <<EOS | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  | Could not 'git stash' in ${DIR}! | 
					
						
							| 
									
										
										
										
											2016-08-25 11:40:18 +01:00
										 |  |  | Please stash/commit manually if you need to keep your changes or, if not, run: | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |   cd ${DIR} | 
					
						
							| 
									
										
										
										
											2016-08-25 11:40:18 +01:00
										 |  |  |   git reset --hard origin/master | 
					
						
							|  |  |  | EOS | 
					
						
							|  |  |  |     fi | 
					
						
							| 
									
										
										
										
											2016-01-21 18:53:42 +08:00
										 |  |  |     git reset --hard "${QUIET_ARGS[@]}" | 
					
						
							| 
									
										
										
										
											2016-01-21 14:01:51 +08:00
										 |  |  |     STASHED="1" | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-10 09:33:47 +01:00
										 |  |  |   INITIAL_BRANCH="$(git symbolic-ref --short HEAD 2>/dev/null)" | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |   if [[ -n "${UPSTREAM_TAG}" ]] || | 
					
						
							|  |  |  |      [[ "${INITIAL_BRANCH}" != "${UPSTREAM_BRANCH}" && -n "${INITIAL_BRANCH}" ]] | 
					
						
							| 
									
										
										
										
											2016-01-10 20:28:52 +00:00
										 |  |  |   then | 
					
						
							| 
									
										
										
										
											2016-03-09 17:35:03 +08:00
										 |  |  |     # Recreate and check out `#{upstream_branch}` if unable to fast-forward | 
					
						
							|  |  |  |     # it to `origin/#{@upstream_branch}`. Otherwise, just check it out. | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |     if [[ -z "${UPSTREAM_TAG}" ]] && | 
					
						
							|  |  |  |        git merge-base --is-ancestor "${UPSTREAM_BRANCH}" "${REMOTE_REF}" &>/dev/null | 
					
						
							| 
									
										
										
										
											2016-03-09 17:35:03 +08:00
										 |  |  |     then | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |       git checkout --force "${UPSTREAM_BRANCH}" "${QUIET_ARGS[@]}" | 
					
						
							| 
									
										
										
										
											2016-03-09 17:35:03 +08:00
										 |  |  |     else | 
					
						
							| 
									
										
										
										
											2024-05-08 13:53:10 -07:00
										 |  |  |       if [[ -n "${UPSTREAM_TAG}" && "${UPSTREAM_BRANCH}" != "master" ]] && | 
					
						
							|  |  |  |          [[ "${INITIAL_BRANCH}" != "master" ]] | 
					
						
							| 
									
										
										
										
											2018-11-25 20:16:13 +00:00
										 |  |  |       then | 
					
						
							| 
									
										
										
										
											2023-12-02 03:06:30 +00:00
										 |  |  |         git branch --force "master" "origin/master" "${QUIET_ARGS[@]}" | 
					
						
							| 
									
										
										
										
											2018-11-25 20:16:13 +00:00
										 |  |  |       fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |       git checkout --force -B "${UPSTREAM_BRANCH}" "${REMOTE_REF}" "${QUIET_ARGS[@]}" | 
					
						
							| 
									
										
										
										
											2016-03-09 17:35:03 +08:00
										 |  |  |     fi | 
					
						
							| 
									
										
										
										
											2016-01-10 20:28:52 +00:00
										 |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   INITIAL_REVISION="$(read_current_revision)" | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |   export HOMEBREW_UPDATE_BEFORE"${TAP_VAR}"="${INITIAL_REVISION}" | 
					
						
							| 
									
										
										
										
											2016-01-10 20:28:52 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   # ensure we don't munge line endings on checkout | 
					
						
							| 
									
										
										
										
											2022-10-08 21:57:44 +08:00
										 |  |  |   git config --bool core.autocrlf false | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   # make sure symlinks are saved as-is | 
					
						
							|  |  |  |   git config --bool core.symlinks true | 
					
						
							| 
									
										
										
										
											2016-01-10 20:28:52 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-20 11:01:38 +01:00
										 |  |  |   if [[ "${DIR}" == "${HOMEBREW_CORE_REPOSITORY}" && -n "${HOMEBREW_LINUXBREW_CORE_MIGRATION}" ]] | 
					
						
							| 
									
										
										
										
											2021-10-07 11:16:03 +01:00
										 |  |  |   then | 
					
						
							|  |  |  |     # Don't even try to rebase/merge on linuxbrew-core migration but rely on | 
					
						
							|  |  |  |     # stashing etc. above. | 
					
						
							|  |  |  |     git reset --hard "${QUIET_ARGS[@]}" "${REMOTE_REF}" | 
					
						
							| 
									
										
										
										
											2021-10-20 11:01:38 +01:00
										 |  |  |     unset HOMEBREW_LINUXBREW_CORE_MIGRATION | 
					
						
							| 
									
										
										
										
											2021-10-07 11:16:03 +01:00
										 |  |  |   elif [[ -z "${HOMEBREW_MERGE}" ]] | 
					
						
							| 
									
										
										
										
											2016-01-10 20:28:52 +00:00
										 |  |  |   then | 
					
						
							| 
									
										
										
										
											2020-04-03 08:59:11 +01:00
										 |  |  |     # Work around bug where git rebase --quiet is not quiet | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |     if [[ -z "${HOMEBREW_VERBOSE}" ]] | 
					
						
							| 
									
										
										
										
											2020-04-03 08:59:11 +01:00
										 |  |  |     then | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |       git rebase "${QUIET_ARGS[@]}" "${REMOTE_REF}" >/dev/null | 
					
						
							| 
									
										
										
										
											2020-04-03 08:59:11 +01:00
										 |  |  |     else | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |       git rebase "${QUIET_ARGS[@]}" "${REMOTE_REF}" | 
					
						
							| 
									
										
										
										
											2020-04-03 08:59:11 +01:00
										 |  |  |     fi | 
					
						
							| 
									
										
										
										
											2016-01-10 20:28:52 +00:00
										 |  |  |   else | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |     git merge --no-edit --ff "${QUIET_ARGS[@]}" "${REMOTE_REF}" \
 | 
					
						
							| 
									
										
										
										
											2016-02-18 10:38:30 +00:00
										 |  |  |       --strategy=recursive \
 | 
					
						
							|  |  |  |       --strategy-option=ours \
 | 
					
						
							|  |  |  |       --strategy-option=ignore-all-space | 
					
						
							| 
									
										
										
										
											2016-01-10 20:28:52 +00:00
										 |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-03 14:24:41 +01:00
										 |  |  |   CURRENT_REVISION="$(read_current_revision)" | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |   export HOMEBREW_UPDATE_AFTER"${TAP_VAR}"="${CURRENT_REVISION}" | 
					
						
							| 
									
										
										
										
											2016-05-03 14:24:41 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |   if [[ "${INITIAL_REVISION}" != "${CURRENT_REVISION}" ]] | 
					
						
							| 
									
										
										
										
											2016-05-03 14:24:41 +01:00
										 |  |  |   then | 
					
						
							|  |  |  |     HOMEBREW_UPDATED="1" | 
					
						
							|  |  |  |   fi | 
					
						
							| 
									
										
										
										
											2016-01-10 20:28:52 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-20 22:58:45 +08:00
										 |  |  |   trap '' SIGINT | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |   if [[ -n "${HOMEBREW_NO_UPDATE_CLEANUP}" ]] | 
					
						
							| 
									
										
										
										
											2016-04-11 09:31:50 +01:00
										 |  |  |   then | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  |     if [[ "${INITIAL_BRANCH}" != "${UPSTREAM_BRANCH}" && -n "${INITIAL_BRANCH}" ]] && | 
					
						
							|  |  |  |        [[ ! "${INITIAL_BRANCH}" =~ ^v[0-9]+\.[0-9]+\.[0-9]|stable$ ]] | 
					
						
							| 
									
										
										
										
											2016-06-03 14:12:36 +01:00
										 |  |  |     then | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |       git checkout "${INITIAL_BRANCH}" "${QUIET_ARGS[@]}" | 
					
						
							| 
									
										
										
										
											2016-06-03 14:12:36 +01:00
										 |  |  |     fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-04-11 09:31:50 +01:00
										 |  |  |     pop_stash | 
					
						
							|  |  |  |   else | 
					
						
							|  |  |  |     pop_stash_message | 
					
						
							|  |  |  |   fi | 
					
						
							| 
									
										
										
										
											2016-01-20 22:58:45 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   trap - SIGINT | 
					
						
							| 
									
										
										
										
											2016-01-10 20:28:52 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-12 13:25:37 +00:00
										 |  |  | homebrew-update() { | 
					
						
							| 
									
										
										
										
											2016-01-21 18:44:32 +08:00
										 |  |  |   local option | 
					
						
							|  |  |  |   local DIR | 
					
						
							|  |  |  |   local UPSTREAM_BRANCH | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   for option in "$@" | 
					
						
							| 
									
										
										
										
											2016-01-10 20:28:52 +00:00
										 |  |  |   do | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |     case "${option}" in | 
					
						
							| 
									
										
										
										
											2021-09-16 01:08:02 +08:00
										 |  |  |       -\? | -h | --help | --usage) | 
					
						
							|  |  |  |         brew help update | 
					
						
							|  |  |  |         exit $? | 
					
						
							|  |  |  |         ;; | 
					
						
							|  |  |  |       --verbose) HOMEBREW_VERBOSE=1 ;; | 
					
						
							|  |  |  |       --debug) HOMEBREW_DEBUG=1 ;; | 
					
						
							|  |  |  |       --quiet) HOMEBREW_QUIET=1 ;; | 
					
						
							| 
									
										
										
										
											2023-06-22 15:18:14 +01:00
										 |  |  |       --merge) | 
					
						
							|  |  |  |         shift | 
					
						
							|  |  |  |         HOMEBREW_MERGE=1 | 
					
						
							|  |  |  |         ;; | 
					
						
							| 
									
										
										
										
											2021-09-16 01:08:02 +08:00
										 |  |  |       --force) HOMEBREW_UPDATE_FORCE=1 ;; | 
					
						
							| 
									
										
										
										
											2023-06-22 15:18:14 +01:00
										 |  |  |       --simulate-from-current-branch) | 
					
						
							|  |  |  |         shift | 
					
						
							|  |  |  |         HOMEBREW_SIMULATE_FROM_CURRENT_BRANCH=1 | 
					
						
							|  |  |  |         ;; | 
					
						
							| 
									
										
										
										
											2022-05-19 11:04:20 -04:00
										 |  |  |       --auto-update) export HOMEBREW_UPDATE_AUTO=1 ;; | 
					
						
							| 
									
										
										
										
											2021-09-16 01:08:02 +08:00
										 |  |  |       --*) ;; | 
					
						
							| 
									
										
										
										
											2016-01-21 18:36:05 +08:00
										 |  |  |       -*) | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  |         [[ "${option}" == *v* ]] && HOMEBREW_VERBOSE=1 | 
					
						
							|  |  |  |         [[ "${option}" == *q* ]] && HOMEBREW_QUIET=1 | 
					
						
							|  |  |  |         [[ "${option}" == *d* ]] && HOMEBREW_DEBUG=1 | 
					
						
							|  |  |  |         [[ "${option}" == *f* ]] && HOMEBREW_UPDATE_FORCE=1 | 
					
						
							| 
									
										
										
										
											2016-01-21 18:36:05 +08:00
										 |  |  |         ;; | 
					
						
							| 
									
										
										
										
											2016-01-10 20:28:52 +00:00
										 |  |  |       *) | 
					
						
							| 
									
										
										
										
											2016-08-07 12:51:12 +02:00
										 |  |  |         odie <<EOS | 
					
						
							| 
									
										
										
										
											2016-01-20 20:26:28 +08:00
										 |  |  | This command updates brew itself, and does not take formula names. | 
					
						
							| 
									
										
										
										
											2019-12-13 15:39:55 -05:00
										 |  |  | Use \`brew upgrade $@\` instead. | 
					
						
							| 
									
										
										
										
											2016-01-20 20:26:28 +08:00
										 |  |  | EOS | 
					
						
							| 
									
										
										
										
											2016-01-10 20:28:52 +00:00
										 |  |  |         ;; | 
					
						
							|  |  |  |     esac | 
					
						
							|  |  |  |   done | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |   if [[ -n "${HOMEBREW_DEBUG}" ]] | 
					
						
							| 
									
										
										
										
											2016-01-10 20:28:52 +00:00
										 |  |  |   then | 
					
						
							|  |  |  |     set -x | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |   if [[ -z "${HOMEBREW_UPDATE_CLEANUP}" && -z "${HOMEBREW_UPDATE_TO_TAG}" ]] | 
					
						
							| 
									
										
										
										
											2016-09-08 20:44:18 +01:00
										 |  |  |   then | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |     if [[ -n "${HOMEBREW_DEVELOPER}" || -n "${HOMEBREW_DEV_CMD_RUN}" ]] | 
					
						
							| 
									
										
										
										
											2016-09-08 20:44:18 +01:00
										 |  |  |     then | 
					
						
							|  |  |  |       export HOMEBREW_NO_UPDATE_CLEANUP="1" | 
					
						
							| 
									
										
										
										
											2016-09-25 21:53:28 +01:00
										 |  |  |     else | 
					
						
							|  |  |  |       export HOMEBREW_UPDATE_TO_TAG="1" | 
					
						
							| 
									
										
										
										
											2016-09-08 20:44:18 +01:00
										 |  |  |     fi | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-10 20:28:52 +00:00
										 |  |  |   # check permissions | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |   if [[ -e "${HOMEBREW_CELLAR}" && ! -w "${HOMEBREW_CELLAR}" ]] | 
					
						
							| 
									
										
										
										
											2016-01-10 20:28:52 +00:00
										 |  |  |   then | 
					
						
							| 
									
										
										
										
											2016-08-07 12:51:12 +02:00
										 |  |  |     odie <<EOS | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  | ${HOMEBREW_CELLAR} is not writable. You should change the | 
					
						
							|  |  |  | ownership and permissions of ${HOMEBREW_CELLAR} back to your | 
					
						
							| 
									
										
										
										
											2016-09-09 08:06:37 +01:00
										 |  |  | user account: | 
					
						
							| 
									
										
										
										
											2024-08-06 21:42:50 +01:00
										 |  |  |   sudo chown -R ${USER-\$(whoami)} ${HOMEBREW_CELLAR} | 
					
						
							| 
									
										
										
										
											2016-07-10 01:30:29 +01:00
										 |  |  | EOS | 
					
						
							| 
									
										
										
										
											2016-01-10 20:28:52 +00:00
										 |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-01-18 15:50:13 +00:00
										 |  |  |   if [[ -d "${HOMEBREW_CORE_REPOSITORY}" ]] || | 
					
						
							| 
									
										
										
										
											2023-02-07 19:25:40 +01:00
										 |  |  |      [[ -z "${HOMEBREW_NO_INSTALL_FROM_API}" ]] | 
					
						
							| 
									
										
										
										
											2023-01-18 15:50:13 +00:00
										 |  |  |   then | 
					
						
							|  |  |  |     HOMEBREW_CORE_AVAILABLE="1" | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |   if [[ ! -w "${HOMEBREW_REPOSITORY}" ]] | 
					
						
							| 
									
										
										
										
											2016-01-10 20:28:52 +00:00
										 |  |  |   then | 
					
						
							| 
									
										
										
										
											2016-08-07 12:51:12 +02:00
										 |  |  |     odie <<EOS | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  | ${HOMEBREW_REPOSITORY} is not writable. You should change the | 
					
						
							|  |  |  | ownership and permissions of ${HOMEBREW_REPOSITORY} back to your | 
					
						
							| 
									
										
										
										
											2016-07-10 01:30:29 +01:00
										 |  |  | user account: | 
					
						
							| 
									
										
										
										
											2023-09-29 12:32:22 +01:00
										 |  |  |   sudo chown -R ${USER-\$(whoami)} ${HOMEBREW_REPOSITORY} | 
					
						
							| 
									
										
										
										
											2016-07-10 01:30:29 +01:00
										 |  |  | EOS | 
					
						
							| 
									
										
										
										
											2016-01-10 20:28:52 +00:00
										 |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-01 15:06:04 +01:00
										 |  |  |   # we may want to use Homebrew CA certificates | 
					
						
							|  |  |  |   if [[ -n "${HOMEBREW_FORCE_BREWED_CA_CERTIFICATES}" && ! -f "${HOMEBREW_PREFIX}/etc/ca-certificates/cert.pem" ]] | 
					
						
							|  |  |  |   then | 
					
						
							|  |  |  |     # we cannot install Homebrew CA certificates if homebrew/core is unavailable. | 
					
						
							| 
									
										
										
										
											2023-01-18 15:50:13 +00:00
										 |  |  |     if [[ -n "${HOMEBREW_CORE_AVAILABLE}" ]] | 
					
						
							| 
									
										
										
										
											2021-10-01 15:06:04 +01:00
										 |  |  |     then | 
					
						
							| 
									
										
										
										
											2021-10-04 14:26:49 +01:00
										 |  |  |       brew install ca-certificates | 
					
						
							| 
									
										
										
										
											2021-10-05 15:15:15 +01:00
										 |  |  |       setup_ca_certificates | 
					
						
							| 
									
										
										
										
											2021-10-01 15:06:04 +01:00
										 |  |  |     fi | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-25 12:54:18 -06:00
										 |  |  |   # we may want to use a Homebrew curl | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  |   if [[ -n "${HOMEBREW_FORCE_BREWED_CURL}" && ! -x "${HOMEBREW_PREFIX}/opt/curl/bin/curl" ]] | 
					
						
							| 
									
										
										
										
											2017-11-26 18:17:25 +00:00
										 |  |  |   then | 
					
						
							| 
									
										
										
										
											2020-11-25 12:54:18 -06:00
										 |  |  |     # we cannot install a Homebrew cURL if homebrew/core is unavailable. | 
					
						
							| 
									
										
										
										
											2023-01-18 15:50:13 +00:00
										 |  |  |     if [[ -z "${HOMEBREW_CORE_AVAILABLE}" ]] || ! brew install curl | 
					
						
							| 
									
										
										
										
											2020-11-24 20:59:46 -06:00
										 |  |  |     then | 
					
						
							| 
									
										
										
										
											2020-07-29 17:31:11 -04:00
										 |  |  |       odie "'curl' must be installed and in your PATH!" | 
					
						
							| 
									
										
										
										
											2020-11-24 20:59:46 -06:00
										 |  |  |     fi | 
					
						
							| 
									
										
										
										
											2021-10-05 15:15:15 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     setup_curl | 
					
						
							| 
									
										
										
										
											2017-11-26 18:17:25 +00:00
										 |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 10:41:16 +00:00
										 |  |  |   if ! git --version &>/dev/null || | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  |      [[ -n "${HOMEBREW_FORCE_BREWED_GIT}" && ! -x "${HOMEBREW_PREFIX}/opt/git/bin/git" ]] | 
					
						
							| 
									
										
										
										
											2016-01-10 20:28:52 +00:00
										 |  |  |   then | 
					
						
							| 
									
										
										
										
											2020-11-25 12:54:18 -06:00
										 |  |  |     # we cannot install a Homebrew Git if homebrew/core is unavailable. | 
					
						
							| 
									
										
										
										
											2023-01-18 15:50:13 +00:00
										 |  |  |     if [[ -z "${HOMEBREW_CORE_AVAILABLE}" ]] || ! brew install git | 
					
						
							| 
									
										
										
										
											2016-01-10 20:28:52 +00:00
										 |  |  |     then | 
					
						
							| 
									
										
										
										
											2020-07-29 17:31:11 -04:00
										 |  |  |       odie "'git' must be installed and in your PATH!" | 
					
						
							| 
									
										
										
										
											2016-01-10 20:28:52 +00:00
										 |  |  |     fi | 
					
						
							| 
									
										
										
										
											2021-10-05 15:15:15 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     setup_git | 
					
						
							| 
									
										
										
										
											2016-01-10 20:28:52 +00:00
										 |  |  |   fi | 
					
						
							| 
									
										
										
										
											2020-11-24 20:59:46 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-07 11:16:03 +01:00
										 |  |  |   [[ -f "${HOMEBREW_CORE_REPOSITORY}/.git/shallow" ]] && HOMEBREW_CORE_SHALLOW=1 | 
					
						
							| 
									
										
										
										
											2023-01-26 10:58:21 +00:00
										 |  |  |   [[ -f "${HOMEBREW_CASK_REPOSITORY}/.git/shallow" ]] && HOMEBREW_CASK_SHALLOW=1 | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  |   if [[ -n "${HOMEBREW_CORE_SHALLOW}" && -n "${HOMEBREW_CASK_SHALLOW}" ]] | 
					
						
							| 
									
										
										
										
											2020-12-28 17:04:38 -05:00
										 |  |  |   then | 
					
						
							|  |  |  |     SHALLOW_COMMAND_PHRASE="These commands" | 
					
						
							|  |  |  |     SHALLOW_REPO_PHRASE="repositories" | 
					
						
							|  |  |  |   else | 
					
						
							|  |  |  |     SHALLOW_COMMAND_PHRASE="This command" | 
					
						
							|  |  |  |     SHALLOW_REPO_PHRASE="repository" | 
					
						
							|  |  |  |   fi | 
					
						
							| 
									
										
										
										
											2020-12-03 08:42:09 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  |   if [[ -n "${HOMEBREW_CORE_SHALLOW}" || -n "${HOMEBREW_CASK_SHALLOW}" ]] | 
					
						
							| 
									
										
										
										
											2020-12-03 08:42:09 +00:00
										 |  |  |   then | 
					
						
							|  |  |  |     odie <<EOS | 
					
						
							| 
									
										
										
										
											2020-12-11 19:27:54 -05:00
										 |  |  | ${HOMEBREW_CORE_SHALLOW:+
 | 
					
						
							|  |  |  |   homebrew-core is a shallow clone.}${HOMEBREW_CASK_SHALLOW:+
 | 
					
						
							|  |  |  |   homebrew-cask is a shallow clone.} | 
					
						
							|  |  |  | To \`brew update\`, first run:${HOMEBREW_CORE_SHALLOW:+
 | 
					
						
							| 
									
										
										
										
											2021-10-07 11:16:03 +01:00
										 |  |  |   git -C "${HOMEBREW_CORE_REPOSITORY}" fetch --unshallow}${HOMEBREW_CASK_SHALLOW:+
 | 
					
						
							| 
									
										
										
										
											2023-01-26 10:58:21 +00:00
										 |  |  |   git -C "${HOMEBREW_CASK_REPOSITORY}" fetch --unshallow} | 
					
						
							| 
									
										
										
										
											2020-12-28 17:04:38 -05:00
										 |  |  | ${SHALLOW_COMMAND_PHRASE} may take a few minutes to run due to the large size of the ${SHALLOW_REPO_PHRASE}. | 
					
						
							| 
									
										
										
										
											2020-12-11 19:27:54 -05:00
										 |  |  | This restriction has been made on GitHub's request because updating shallow | 
					
						
							|  |  |  | clones is an extremely expensive operation due to the tree layout and traffic of | 
					
						
							|  |  |  | Homebrew/homebrew-core and Homebrew/homebrew-cask. We don't do this for you | 
					
						
							|  |  |  | automatically to avoid repeatedly performing an expensive unshallow operation in | 
					
						
							|  |  |  | CI systems (which should instead be fixed to not use shallow clones). Sorry for | 
					
						
							|  |  |  | the inconvenience! | 
					
						
							| 
									
										
										
										
											2020-12-03 08:42:09 +00:00
										 |  |  | EOS | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-12 12:54:47 +00:00
										 |  |  |   export GIT_TERMINAL_PROMPT="0" | 
					
						
							| 
									
										
										
										
											2021-10-19 08:35:12 -05:00
										 |  |  |   export GIT_SSH_COMMAND="${GIT_SSH_COMMAND:-ssh} -oBatchMode=yes" | 
					
						
							| 
									
										
										
										
											2016-01-10 20:28:52 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |   if [[ -n "${HOMEBREW_GIT_NAME}" ]] | 
					
						
							| 
									
										
										
										
											2020-02-12 20:00:14 +00:00
										 |  |  |   then | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |     export GIT_AUTHOR_NAME="${HOMEBREW_GIT_NAME}" | 
					
						
							|  |  |  |     export GIT_COMMITTER_NAME="${HOMEBREW_GIT_NAME}" | 
					
						
							| 
									
										
										
										
											2020-02-12 20:00:14 +00:00
										 |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |   if [[ -n "${HOMEBREW_GIT_EMAIL}" ]] | 
					
						
							| 
									
										
										
										
											2020-02-12 20:00:14 +00:00
										 |  |  |   then | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |     export GIT_AUTHOR_EMAIL="${HOMEBREW_GIT_EMAIL}" | 
					
						
							|  |  |  |     export GIT_COMMITTER_EMAIL="${HOMEBREW_GIT_EMAIL}" | 
					
						
							| 
									
										
										
										
											2020-02-12 20:00:14 +00:00
										 |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |   if [[ -z "${HOMEBREW_VERBOSE}" ]] | 
					
						
							| 
									
										
										
										
											2016-01-10 20:28:52 +00:00
										 |  |  |   then | 
					
						
							| 
									
										
										
										
											2024-07-23 18:54:05 +01:00
										 |  |  |     export GIT_ADVICE="false" | 
					
						
							| 
									
										
										
										
											2016-01-21 18:53:42 +08:00
										 |  |  |     QUIET_ARGS=(-q) | 
					
						
							|  |  |  |   else | 
					
						
							|  |  |  |     QUIET_ARGS=() | 
					
						
							| 
									
										
										
										
											2016-01-10 20:28:52 +00:00
										 |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-01-10 16:13:47 +00:00
										 |  |  |   # HOMEBREW_CURLRC is optionally defined in the user environment. | 
					
						
							| 
									
										
										
										
											2021-05-18 17:10:20 +05:30
										 |  |  |   # shellcheck disable=SC2153 | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |   if [[ -z "${HOMEBREW_CURLRC}" ]] | 
					
						
							| 
									
										
										
										
											2018-09-14 18:50:21 +08:00
										 |  |  |   then | 
					
						
							|  |  |  |     CURL_DISABLE_CURLRC_ARGS=(-q) | 
					
						
							|  |  |  |   else | 
					
						
							|  |  |  |     CURL_DISABLE_CURLRC_ARGS=() | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-10 20:16:25 +08:00
										 |  |  |   # only allow one instance of brew update | 
					
						
							|  |  |  |   lock update | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-10 20:28:52 +00:00
										 |  |  |   git_init_if_necessary | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |   if [[ "${HOMEBREW_BREW_DEFAULT_GIT_REMOTE}" != "${HOMEBREW_BREW_GIT_REMOTE}" ]] | 
					
						
							| 
									
										
										
										
											2019-12-03 00:45:11 +09:00
										 |  |  |   then | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |     safe_cd "${HOMEBREW_REPOSITORY}" | 
					
						
							| 
									
										
										
										
											2023-02-10 23:15:40 -05:00
										 |  |  |     echo "HOMEBREW_BREW_GIT_REMOTE set: using ${HOMEBREW_BREW_GIT_REMOTE} as the Homebrew/brew Git remote." | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |     git remote set-url origin "${HOMEBREW_BREW_GIT_REMOTE}" | 
					
						
							| 
									
										
										
										
											2019-12-03 00:45:11 +09:00
										 |  |  |     git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*" | 
					
						
							| 
									
										
										
										
											2020-10-09 09:32:38 +01:00
										 |  |  |     git fetch --force --tags origin | 
					
						
							| 
									
										
										
										
											2021-10-07 11:16:03 +01:00
										 |  |  |     SKIP_FETCH_BREW_REPOSITORY=1 | 
					
						
							| 
									
										
										
										
											2019-12-03 00:45:11 +09:00
										 |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-07 11:16:03 +01:00
										 |  |  |   if [[ -d "${HOMEBREW_CORE_REPOSITORY}" ]] && | 
					
						
							|  |  |  |      [[ "${HOMEBREW_CORE_DEFAULT_GIT_REMOTE}" != "${HOMEBREW_CORE_GIT_REMOTE}" || | 
					
						
							| 
									
										
										
										
											2021-10-20 11:01:38 +01:00
										 |  |  |         -n "${HOMEBREW_LINUXBREW_CORE_MIGRATION}" ]] | 
					
						
							| 
									
										
										
										
											2019-12-03 00:45:11 +09:00
										 |  |  |   then | 
					
						
							| 
									
										
										
										
											2021-10-20 11:01:38 +01:00
										 |  |  |     if [[ -n "${HOMEBREW_LINUXBREW_CORE_MIGRATION}" ]] | 
					
						
							| 
									
										
										
										
											2021-10-07 11:16:03 +01:00
										 |  |  |     then | 
					
						
							|  |  |  |       # This means a migration is needed (in case it isn't run this time) | 
					
						
							|  |  |  |       safe_cd "${HOMEBREW_REPOSITORY}" | 
					
						
							|  |  |  |       git config --bool homebrew.linuxbrewmigrated false | 
					
						
							|  |  |  |     fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     safe_cd "${HOMEBREW_CORE_REPOSITORY}" | 
					
						
							| 
									
										
										
										
											2023-02-10 23:15:40 -05:00
										 |  |  |     echo "HOMEBREW_CORE_GIT_REMOTE set: using ${HOMEBREW_CORE_GIT_REMOTE} as the Homebrew/homebrew-core Git remote." | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |     git remote set-url origin "${HOMEBREW_CORE_GIT_REMOTE}" | 
					
						
							| 
									
										
										
										
											2019-12-03 00:45:11 +09:00
										 |  |  |     git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*" | 
					
						
							| 
									
										
										
										
											2020-10-09 09:32:38 +01:00
										 |  |  |     git fetch --force origin refs/heads/master:refs/remotes/origin/master | 
					
						
							| 
									
										
										
										
											2021-10-07 11:16:03 +01:00
										 |  |  |     SKIP_FETCH_CORE_REPOSITORY=1 | 
					
						
							| 
									
										
										
										
											2019-12-03 00:45:11 +09:00
										 |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |   safe_cd "${HOMEBREW_REPOSITORY}" | 
					
						
							| 
									
										
										
										
											2016-07-14 15:39:05 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-07 11:16:03 +01:00
										 |  |  |   # This means a migration is needed but hasn't completed (yet). | 
					
						
							|  |  |  |   if [[ "$(git config homebrew.linuxbrewmigrated 2>/dev/null)" == "false" ]] | 
					
						
							|  |  |  |   then | 
					
						
							|  |  |  |     export HOMEBREW_MIGRATE_LINUXBREW_FORMULAE=1 | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   # if an older system had a newer curl installed, change each repo's remote URL from git to https | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  |   if [[ -n "${HOMEBREW_SYSTEM_CURL_TOO_OLD}" && -x "${HOMEBREW_PREFIX}/opt/curl/bin/curl" ]] && | 
					
						
							|  |  |  |      [[ "$(git config remote.origin.url)" =~ ^git:// ]] | 
					
						
							| 
									
										
										
										
											2018-11-14 13:32:41 -05:00
										 |  |  |   then | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |     git config remote.origin.url "${HOMEBREW_BREW_GIT_REMOTE}" | 
					
						
							| 
									
										
										
										
											2021-10-07 11:16:03 +01:00
										 |  |  |     git config -f "${HOMEBREW_CORE_REPOSITORY}/.git/config" remote.origin.url "${HOMEBREW_CORE_GIT_REMOTE}" | 
					
						
							| 
									
										
										
										
											2018-11-14 13:32:41 -05:00
										 |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-21 13:32:22 +08:00
										 |  |  |   # kill all of subprocess on interrupt | 
					
						
							| 
									
										
										
										
											2016-12-01 20:59:41 +01:00
										 |  |  |   trap '{ /usr/bin/pkill -P $$; wait; exit 130; }' SIGINT | 
					
						
							| 
									
										
										
										
											2016-01-21 13:32:22 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |   local update_failed_file="${HOMEBREW_REPOSITORY}/.git/UPDATE_FAILED" | 
					
						
							|  |  |  |   local missing_remote_ref_dirs_file="${HOMEBREW_REPOSITORY}/.git/FAILED_FETCH_DIRS" | 
					
						
							|  |  |  |   rm -f "${update_failed_file}" | 
					
						
							|  |  |  |   rm -f "${missing_remote_ref_dirs_file}" | 
					
						
							| 
									
										
										
										
											2016-05-03 14:24:41 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |   for DIR in "${HOMEBREW_REPOSITORY}" "${HOMEBREW_LIBRARY}"/Taps/*/* | 
					
						
							| 
									
										
										
										
											2016-01-10 20:28:52 +00:00
										 |  |  |   do | 
					
						
							| 
									
										
										
										
											2023-07-03 20:03:17 +01:00
										 |  |  |     if [[ -z "${HOMEBREW_NO_INSTALL_FROM_API}" ]] && | 
					
						
							| 
									
										
										
										
											2023-07-28 10:13:57 +01:00
										 |  |  |        [[ -n "${HOMEBREW_UPDATE_AUTO}" || (-z "${HOMEBREW_DEVELOPER}" && -z "${HOMEBREW_DEV_CMD_RUN}") ]] && | 
					
						
							|  |  |  |        [[ -n "${HOMEBREW_UPDATE_AUTO}" && | 
					
						
							|  |  |  |           (("${DIR}" == "${HOMEBREW_CORE_REPOSITORY}" && -z "${HOMEBREW_AUTO_UPDATE_CORE_TAP}") || | 
					
						
							|  |  |  |           ("${DIR}" == "${HOMEBREW_CASK_REPOSITORY}" && -z "${HOMEBREW_AUTO_UPDATE_CASK_TAP}")) ]] | 
					
						
							| 
									
										
										
										
											2021-07-14 00:52:15 -04:00
										 |  |  |     then | 
					
						
							|  |  |  |       continue | 
					
						
							|  |  |  |     fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |     [[ -d "${DIR}/.git" ]] || continue | 
					
						
							|  |  |  |     cd "${DIR}" || continue | 
					
						
							| 
									
										
										
										
											2016-08-10 09:33:47 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-03-02 14:04:31 +08:00
										 |  |  |     if [[ "${DIR}" = "${HOMEBREW_REPOSITORY}" && "${HOMEBREW_REPOSITORY}" = "${HOMEBREW_PREFIX}" ]] | 
					
						
							|  |  |  |     then | 
					
						
							|  |  |  |       # Git's fsmonitor prevents the release of our locks | 
					
						
							|  |  |  |       git config --bool core.fsmonitor false | 
					
						
							|  |  |  |     fi | 
					
						
							| 
									
										
										
										
											2022-07-28 22:20:07 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-25 04:22:12 -07:00
										 |  |  |     if ! git config --local --get remote.origin.url &>/dev/null | 
					
						
							|  |  |  |     then | 
					
						
							| 
									
										
										
										
											2022-04-25 09:16:36 -05:00
										 |  |  |       opoo "No remote 'origin' in ${DIR}, skipping update!" | 
					
						
							| 
									
										
										
										
											2022-04-25 04:22:12 -07:00
										 |  |  |       continue | 
					
						
							|  |  |  |     fi | 
					
						
							| 
									
										
										
										
											2022-04-25 09:16:36 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |     if [[ -n "${HOMEBREW_VERBOSE}" ]] | 
					
						
							| 
									
										
										
										
											2016-08-11 10:57:08 +01:00
										 |  |  |     then | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |       echo "Checking if we need to fetch ${DIR}..." | 
					
						
							| 
									
										
										
										
											2016-08-11 10:57:08 +01:00
										 |  |  |     fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-15 21:24:34 +01:00
										 |  |  |     TAP_VAR="$(repo_var_suffix "${DIR}")" | 
					
						
							| 
									
										
										
										
											2016-08-11 17:22:27 +01:00
										 |  |  |     UPSTREAM_BRANCH_DIR="$(upstream_branch)" | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |     declare UPSTREAM_BRANCH"${TAP_VAR}"="${UPSTREAM_BRANCH_DIR}" | 
					
						
							|  |  |  |     declare PREFETCH_REVISION"${TAP_VAR}"="$(git rev-parse -q --verify refs/remotes/origin/"${UPSTREAM_BRANCH_DIR}")" | 
					
						
							| 
									
										
										
										
											2016-08-10 09:33:47 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-07 19:35:05 +01:00
										 |  |  |     if [[ -n "${GITHUB_ACTIONS}" && -n "${HOMEBREW_UPDATE_SKIP_BREW}" && "${DIR}" == "${HOMEBREW_REPOSITORY}" ]] | 
					
						
							|  |  |  |     then | 
					
						
							|  |  |  |       continue | 
					
						
							|  |  |  |     fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-20 17:15:43 +01:00
										 |  |  |     # Force a full update if we don't have any tags. | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  |     if [[ "${DIR}" == "${HOMEBREW_REPOSITORY}" && -z "$(git tag --list)" ]] | 
					
						
							| 
									
										
										
										
											2016-09-20 17:15:43 +01:00
										 |  |  |     then | 
					
						
							|  |  |  |       HOMEBREW_UPDATE_FORCE=1 | 
					
						
							|  |  |  |     fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |     if [[ -z "${HOMEBREW_UPDATE_FORCE}" ]] | 
					
						
							| 
									
										
										
										
											2016-08-12 14:22:00 +01:00
										 |  |  |     then | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  |       [[ -n "${SKIP_FETCH_BREW_REPOSITORY}" && "${DIR}" == "${HOMEBREW_REPOSITORY}" ]] && continue | 
					
						
							| 
									
										
										
										
											2021-10-07 11:16:03 +01:00
										 |  |  |       [[ -n "${SKIP_FETCH_CORE_REPOSITORY}" && "${DIR}" == "${HOMEBREW_CORE_REPOSITORY}" ]] && continue | 
					
						
							| 
									
										
										
										
											2016-08-12 14:22:00 +01:00
										 |  |  |     fi | 
					
						
							| 
									
										
										
										
											2016-08-10 09:33:47 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-08 16:21:09 +00:00
										 |  |  |     if [[ -z "${UPDATING_MESSAGE_SHOWN}" ]] | 
					
						
							|  |  |  |     then | 
					
						
							|  |  |  |       if [[ -n "${HOMEBREW_UPDATE_AUTO}" ]] | 
					
						
							|  |  |  |       then | 
					
						
							|  |  |  |         # Outputting a command but don't want to run it, hence single quotes. | 
					
						
							|  |  |  |         # shellcheck disable=SC2016 | 
					
						
							|  |  |  |         ohai 'Auto-updating Homebrew...' >&2 | 
					
						
							|  |  |  |         if [[ -z "${HOMEBREW_NO_ENV_HINTS}" && -z "${HOMEBREW_AUTO_UPDATE_SECS}" ]] | 
					
						
							|  |  |  |         then | 
					
						
							|  |  |  |           # shellcheck disable=SC2016 | 
					
						
							|  |  |  |           echo 'Adjust how often this is run with HOMEBREW_AUTO_UPDATE_SECS or disable with' >&2 | 
					
						
							|  |  |  |           # shellcheck disable=SC2016 | 
					
						
							|  |  |  |           echo 'HOMEBREW_NO_AUTO_UPDATE. Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).' >&2 | 
					
						
							|  |  |  |         fi | 
					
						
							|  |  |  |       else | 
					
						
							|  |  |  |         ohai 'Updating Homebrew...' >&2 | 
					
						
							|  |  |  |       fi | 
					
						
							|  |  |  |       UPDATING_MESSAGE_SHOWN=1 | 
					
						
							|  |  |  |     fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-10 09:33:47 +01:00
										 |  |  |     # The upstream repository's default branch may not be master; | 
					
						
							|  |  |  |     # check refs/remotes/origin/HEAD to see what the default | 
					
						
							|  |  |  |     # origin branch name is, and use that. If not set, fall back to "master". | 
					
						
							| 
									
										
										
										
											2016-01-10 20:28:52 +00:00
										 |  |  |     # the refspec ensures that the default upstream branch gets updated | 
					
						
							| 
									
										
										
										
											2016-02-12 13:09:13 +00:00
										 |  |  |     ( | 
					
						
							| 
									
										
										
										
											2016-02-18 10:41:09 +00:00
										 |  |  |       UPSTREAM_REPOSITORY_URL="$(git config remote.origin.url)" | 
					
						
							| 
									
										
										
										
											2024-01-11 12:03:45 +02:00
										 |  |  |       unset UPSTREAM_REPOSITORY | 
					
						
							|  |  |  |       unset UPSTREAM_REPOSITORY_TOKEN | 
					
						
							| 
									
										
										
										
											2021-04-22 13:18:44 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-19 11:04:20 -04:00
										 |  |  |       # HOMEBREW_UPDATE_FORCE and HOMEBREW_UPDATE_AUTO aren't modified here so ignore subshell warning. | 
					
						
							| 
									
										
										
										
											2021-04-22 13:18:44 +01:00
										 |  |  |       # shellcheck disable=SC2030 | 
					
						
							| 
									
										
										
										
											2024-01-11 14:17:29 +02:00
										 |  |  |       if [[ "${UPSTREAM_REPOSITORY_URL}" == "https://github.com/"* ]] | 
					
						
							| 
									
										
										
										
											2016-02-18 10:41:09 +00:00
										 |  |  |       then | 
					
						
							| 
									
										
										
										
											2024-01-11 12:10:43 +02:00
										 |  |  |         UPSTREAM_REPOSITORY="${UPSTREAM_REPOSITORY_URL#https://github.com/}" | 
					
						
							|  |  |  |         UPSTREAM_REPOSITORY="${UPSTREAM_REPOSITORY%.git}" | 
					
						
							| 
									
										
										
										
											2024-01-22 09:47:47 +02:00
										 |  |  |       elif [[ "${DIR}" != "${HOMEBREW_REPOSITORY}" ]] && | 
					
						
							|  |  |  |            [[ "${UPSTREAM_REPOSITORY_URL}" =~ https://([[:alnum:]_:]+)@github.com/(.*)$ ]] | 
					
						
							| 
									
										
										
										
											2024-01-11 12:03:45 +02:00
										 |  |  |       then | 
					
						
							| 
									
										
										
										
											2024-01-22 09:47:47 +02:00
										 |  |  |         UPSTREAM_REPOSITORY="${BASH_REMATCH[2]%.git}" | 
					
						
							|  |  |  |         UPSTREAM_REPOSITORY_TOKEN="${BASH_REMATCH[1]#*:}" | 
					
						
							| 
									
										
										
										
											2024-01-11 12:03:45 +02:00
										 |  |  |       fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-01-11 12:10:43 +02:00
										 |  |  |       if [[ -n "${UPSTREAM_REPOSITORY}" ]] | 
					
						
							|  |  |  |       then | 
					
						
							| 
									
										
										
										
											2024-01-11 12:51:59 +02:00
										 |  |  |         # UPSTREAM_REPOSITORY_TOKEN is parsed (if exists) from UPSTREAM_REPOSITORY_URL | 
					
						
							| 
									
										
										
										
											2024-01-07 14:13:26 +02:00
										 |  |  |         # HOMEBREW_GITHUB_API_TOKEN is optionally defined in the user environment. | 
					
						
							|  |  |  |         # shellcheck disable=SC2153 | 
					
						
							| 
									
										
										
										
											2024-01-11 12:51:59 +02:00
										 |  |  |         if [[ -n "${UPSTREAM_REPOSITORY_TOKEN}" ]] | 
					
						
							| 
									
										
										
										
											2024-01-11 09:25:53 +02:00
										 |  |  |         then | 
					
						
							| 
									
										
										
										
											2024-01-11 12:03:45 +02:00
										 |  |  |           CURL_GITHUB_API_ARGS=("--header" "Authorization: token ${UPSTREAM_REPOSITORY_TOKEN}") | 
					
						
							| 
									
										
										
										
											2024-01-11 12:51:59 +02:00
										 |  |  |         elif [[ -n "${HOMEBREW_GITHUB_API_TOKEN}" ]] | 
					
						
							|  |  |  |         then | 
					
						
							|  |  |  |           CURL_GITHUB_API_ARGS=("--header" "Authorization: token ${HOMEBREW_GITHUB_API_TOKEN}") | 
					
						
							| 
									
										
										
										
											2024-01-07 14:13:26 +02:00
										 |  |  |         else | 
					
						
							|  |  |  |           CURL_GITHUB_API_ARGS=() | 
					
						
							|  |  |  |         fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  |         if [[ "${DIR}" == "${HOMEBREW_REPOSITORY}" && -n "${HOMEBREW_UPDATE_TO_TAG}" ]] | 
					
						
							| 
									
										
										
										
											2016-09-24 20:42:55 +01:00
										 |  |  |         then | 
					
						
							|  |  |  |           # Only try to `git fetch` when the upstream tags have changed | 
					
						
							|  |  |  |           # (so the API does not return 304: unmodified). | 
					
						
							| 
									
										
										
										
											2016-09-27 13:54:49 +01:00
										 |  |  |           GITHUB_API_ETAG="$(sed -n 's/^ETag: "\([a-f0-9]\{32\}\)".*/\1/p' ".git/GITHUB_HEADERS" 2>/dev/null)" | 
					
						
							| 
									
										
										
										
											2022-07-24 11:44:16 +00:00
										 |  |  |           GITHUB_API_ACCEPT="application/vnd.github+json" | 
					
						
							| 
									
										
										
										
											2016-09-24 20:42:55 +01:00
										 |  |  |           GITHUB_API_ENDPOINT="tags" | 
					
						
							|  |  |  |         else | 
					
						
							|  |  |  |           # Only try to `git fetch` when the upstream branch is at a different SHA | 
					
						
							|  |  |  |           # (so the API does not return 304: unmodified). | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |           GITHUB_API_ETAG="$(git rev-parse "refs/remotes/origin/${UPSTREAM_BRANCH_DIR}")" | 
					
						
							| 
									
										
										
										
											2022-07-24 11:44:16 +00:00
										 |  |  |           GITHUB_API_ACCEPT="application/vnd.github.sha" | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |           GITHUB_API_ENDPOINT="commits/${UPSTREAM_BRANCH_DIR}" | 
					
						
							| 
									
										
										
										
											2016-09-24 20:42:55 +01:00
										 |  |  |         fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-02-10 23:15:40 -05:00
										 |  |  |         # HOMEBREW_CURL is set by brew.sh (and isn't misspelt here) | 
					
						
							| 
									
										
										
										
											2021-04-22 13:18:44 +01:00
										 |  |  |         # shellcheck disable=SC2153 | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  |         UPSTREAM_SHA_HTTP_CODE="$( | 
					
						
							| 
									
										
										
										
											2021-10-03 21:47:17 +01:00
										 |  |  |           curl \
 | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  |             "${CURL_DISABLE_CURLRC_ARGS[@]}" \
 | 
					
						
							| 
									
										
										
										
											2023-01-10 16:13:47 +00:00
										 |  |  |             "${CURL_GITHUB_API_ARGS[@]}" \
 | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  |             --silent --max-time 3 \
 | 
					
						
							|  |  |  |             --location --no-remote-time --output /dev/null --write-out "%{http_code}" \
 | 
					
						
							|  |  |  |             --dump-header "${DIR}/.git/GITHUB_HEADERS" \
 | 
					
						
							|  |  |  |             --user-agent "${HOMEBREW_USER_AGENT_CURL}" \
 | 
					
						
							| 
									
										
										
										
											2023-01-10 16:13:47 +00:00
										 |  |  |             --header "X-GitHub-Api-Version:2022-11-28" \
 | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  |             --header "Accept: ${GITHUB_API_ACCEPT}" \
 | 
					
						
							|  |  |  |             --header "If-None-Match: \"${GITHUB_API_ETAG}\"" \
 | 
					
						
							|  |  |  |             "https://api.github.com/repos/${UPSTREAM_REPOSITORY}/${GITHUB_API_ENDPOINT}" | 
					
						
							|  |  |  |         )"
 | 
					
						
							| 
									
										
										
										
											2016-09-24 20:42:55 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-09 09:19:51 +01:00
										 |  |  |         # Touch FETCH_HEAD to confirm we've checked for an update. | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |         [[ -f "${DIR}/.git/FETCH_HEAD" ]] && touch "${DIR}/.git/FETCH_HEAD" | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  |         [[ -z "${HOMEBREW_UPDATE_FORCE}" ]] && [[ "${UPSTREAM_SHA_HTTP_CODE}" == "304" ]] && exit | 
					
						
							| 
									
										
										
										
											2016-02-18 10:41:09 +00:00
										 |  |  |       fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-22 13:18:44 +01:00
										 |  |  |       # HOMEBREW_VERBOSE isn't modified here so ignore subshell warning. | 
					
						
							|  |  |  |       # shellcheck disable=SC2030 | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |       if [[ -n "${HOMEBREW_VERBOSE}" ]] | 
					
						
							| 
									
										
										
										
											2016-07-07 10:24:37 +01:00
										 |  |  |       then | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |         echo "Fetching ${DIR}..." | 
					
						
							| 
									
										
										
										
											2016-07-07 10:24:37 +01:00
										 |  |  |       fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-01 17:35:34 +01:00
										 |  |  |       local tmp_failure_file="${DIR}/.git/TMP_FETCH_FAILURES" | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |       rm -f "${tmp_failure_file}" | 
					
						
							| 
									
										
										
										
											2021-01-28 01:51:40 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-19 11:04:20 -04:00
										 |  |  |       if [[ -n "${HOMEBREW_UPDATE_AUTO}" ]] | 
					
						
							| 
									
										
										
										
											2016-04-11 09:31:50 +01:00
										 |  |  |       then | 
					
						
							| 
									
										
										
										
											2016-09-17 19:35:07 +01:00
										 |  |  |         git fetch --tags --force "${QUIET_ARGS[@]}" origin \
 | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |           "refs/heads/${UPSTREAM_BRANCH_DIR}:refs/remotes/origin/${UPSTREAM_BRANCH_DIR}" 2>/dev/null | 
					
						
							| 
									
										
										
										
											2016-04-11 09:31:50 +01:00
										 |  |  |       else | 
					
						
							| 
									
										
										
										
											2021-01-28 01:51:40 -05:00
										 |  |  |         # Capture stderr to tmp_failure_file | 
					
						
							| 
									
										
										
										
											2016-09-17 19:35:07 +01:00
										 |  |  |         if ! git fetch --tags --force "${QUIET_ARGS[@]}" origin \
 | 
					
						
							| 
									
										
										
										
											2021-09-16 01:04:06 +08:00
										 |  |  |            "refs/heads/${UPSTREAM_BRANCH_DIR}:refs/remotes/origin/${UPSTREAM_BRANCH_DIR}" 2>>"${tmp_failure_file}" | 
					
						
							| 
									
										
										
										
											2016-05-03 14:24:41 +01:00
										 |  |  |         then | 
					
						
							| 
									
										
										
										
											2021-01-28 01:51:40 -05:00
										 |  |  |           # Reprint fetch errors to stderr | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |           [[ -f "${tmp_failure_file}" ]] && cat "${tmp_failure_file}" 1>&2 | 
					
						
							| 
									
										
										
										
											2021-01-28 01:51:40 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  |           if [[ "${UPSTREAM_SHA_HTTP_CODE}" == "404" ]] | 
					
						
							| 
									
										
										
										
											2019-02-16 19:57:56 +00:00
										 |  |  |           then | 
					
						
							| 
									
										
										
										
											2021-11-07 21:21:42 +08:00
										 |  |  |             TAP="${DIR#"${HOMEBREW_LIBRARY}"/Taps/}" | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |             echo "${TAP} does not exist! Run \`brew untap ${TAP}\` to remove it." >>"${update_failed_file}" | 
					
						
							| 
									
										
										
										
											2019-02-16 19:57:56 +00:00
										 |  |  |           else | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |             echo "Fetching ${DIR} failed!" >>"${update_failed_file}" | 
					
						
							| 
									
										
										
										
											2021-01-28 01:51:40 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |             if [[ -f "${tmp_failure_file}" ]] && | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  |                [[ "$(cat "${tmp_failure_file}")" == "fatal: couldn't find remote ref refs/heads/${UPSTREAM_BRANCH_DIR}" ]] | 
					
						
							| 
									
										
										
										
											2021-01-28 01:51:40 -05:00
										 |  |  |             then | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |               echo "${DIR}" >>"${missing_remote_ref_dirs_file}" | 
					
						
							| 
									
										
										
										
											2021-01-28 01:51:40 -05:00
										 |  |  |             fi | 
					
						
							| 
									
										
										
										
											2019-02-16 19:57:56 +00:00
										 |  |  |           fi | 
					
						
							| 
									
										
										
										
											2016-05-03 14:24:41 +01:00
										 |  |  |         fi | 
					
						
							| 
									
										
										
										
											2016-04-11 09:31:50 +01:00
										 |  |  |       fi | 
					
						
							| 
									
										
										
										
											2021-01-28 01:51:40 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |       rm -f "${tmp_failure_file}" | 
					
						
							| 
									
										
										
										
											2016-02-12 13:09:13 +00:00
										 |  |  |     ) & | 
					
						
							| 
									
										
										
										
											2016-01-10 20:28:52 +00:00
										 |  |  |   done | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   wait | 
					
						
							| 
									
										
										
										
											2016-01-21 13:32:22 +08:00
										 |  |  |   trap - SIGINT | 
					
						
							| 
									
										
										
										
											2016-01-10 20:28:52 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |   if [[ -f "${missing_remote_ref_dirs_file}" ]] | 
					
						
							| 
									
										
										
										
											2021-01-28 01:51:40 -05:00
										 |  |  |   then | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  |     HOMEBREW_MISSING_REMOTE_REF_DIRS="$(cat "${missing_remote_ref_dirs_file}")" | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |     rm -f "${missing_remote_ref_dirs_file}" | 
					
						
							| 
									
										
										
										
											2021-01-28 09:10:07 -05:00
										 |  |  |     export HOMEBREW_MISSING_REMOTE_REF_DIRS | 
					
						
							| 
									
										
										
										
											2021-01-28 01:51:40 -05:00
										 |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |   for DIR in "${HOMEBREW_REPOSITORY}" "${HOMEBREW_LIBRARY}"/Taps/*/* | 
					
						
							| 
									
										
										
										
											2016-01-10 20:28:52 +00:00
										 |  |  |   do | 
					
						
							| 
									
										
										
										
											2023-02-07 19:25:40 +01:00
										 |  |  |     if [[ -z "${HOMEBREW_NO_INSTALL_FROM_API}" ]] && | 
					
						
							| 
									
										
										
										
											2023-07-28 10:13:57 +01:00
										 |  |  |        [[ -n "${HOMEBREW_UPDATE_AUTO}" || (-z "${HOMEBREW_DEVELOPER}" && -z "${HOMEBREW_DEV_CMD_RUN}") ]] && | 
					
						
							|  |  |  |        [[ -n "${HOMEBREW_UPDATE_AUTO}" && | 
					
						
							|  |  |  |           (("${DIR}" == "${HOMEBREW_CORE_REPOSITORY}" && -z "${HOMEBREW_AUTO_UPDATE_CORE_TAP}") || | 
					
						
							|  |  |  |           ("${DIR}" == "${HOMEBREW_CASK_REPOSITORY}" && -z "${HOMEBREW_AUTO_UPDATE_CASK_TAP}")) ]] | 
					
						
							| 
									
										
										
										
											2021-07-14 00:52:15 -04:00
										 |  |  |     then | 
					
						
							|  |  |  |       continue | 
					
						
							|  |  |  |     fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |     [[ -d "${DIR}/.git" ]] || continue | 
					
						
							|  |  |  |     cd "${DIR}" || continue | 
					
						
							| 
									
										
										
										
											2022-04-25 04:22:12 -07:00
										 |  |  |     if ! git config --local --get remote.origin.url &>/dev/null | 
					
						
							|  |  |  |     then | 
					
						
							|  |  |  |       # No need to display a (duplicate) warning here | 
					
						
							|  |  |  |       continue | 
					
						
							|  |  |  |     fi | 
					
						
							| 
									
										
										
										
											2016-08-10 09:33:47 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-15 21:24:34 +01:00
										 |  |  |     TAP_VAR="$(repo_var_suffix "${DIR}")" | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |     UPSTREAM_BRANCH_VAR="UPSTREAM_BRANCH${TAP_VAR}" | 
					
						
							| 
									
										
										
										
											2016-08-10 09:33:47 +01:00
										 |  |  |     UPSTREAM_BRANCH="${!UPSTREAM_BRANCH_VAR}" | 
					
						
							|  |  |  |     CURRENT_REVISION="$(read_current_revision)" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |     PREFETCH_REVISION_VAR="PREFETCH_REVISION${TAP_VAR}" | 
					
						
							| 
									
										
										
										
											2016-08-10 09:33:47 +01:00
										 |  |  |     PREFETCH_REVISION="${!PREFETCH_REVISION_VAR}" | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |     POSTFETCH_REVISION="$(git rev-parse -q --verify refs/remotes/origin/"${UPSTREAM_BRANCH}")" | 
					
						
							| 
									
										
										
										
											2016-08-10 09:33:47 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-22 13:18:44 +01:00
										 |  |  |     # HOMEBREW_UPDATE_FORCE and HOMEBREW_VERBOSE weren't modified in subshell. | 
					
						
							|  |  |  |     # shellcheck disable=SC2031 | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |     if [[ -n "${HOMEBREW_SIMULATE_FROM_CURRENT_BRANCH}" ]] | 
					
						
							| 
									
										
										
										
											2016-08-10 09:33:47 +01:00
										 |  |  |     then | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |       simulate_from_current_branch "${DIR}" "${TAP_VAR}" "${UPSTREAM_BRANCH}" "${CURRENT_REVISION}" | 
					
						
							| 
									
										
										
										
											2023-07-07 19:35:05 +01:00
										 |  |  |     elif [[ -z "${HOMEBREW_UPDATE_FORCE}" && | 
					
						
							|  |  |  |             "${PREFETCH_REVISION}" == "${POSTFETCH_REVISION}" && | 
					
						
							|  |  |  |             "${CURRENT_REVISION}" == "${POSTFETCH_REVISION}" ]] || | 
					
						
							|  |  |  |          [[ -n "${GITHUB_ACTIONS}" && -n "${HOMEBREW_UPDATE_SKIP_BREW}" && "${DIR}" == "${HOMEBREW_REPOSITORY}" ]] | 
					
						
							| 
									
										
										
										
											2016-08-10 09:33:47 +01:00
										 |  |  |     then | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |       export HOMEBREW_UPDATE_BEFORE"${TAP_VAR}"="${CURRENT_REVISION}" | 
					
						
							|  |  |  |       export HOMEBREW_UPDATE_AFTER"${TAP_VAR}"="${CURRENT_REVISION}" | 
					
						
							| 
									
										
										
										
											2016-08-10 09:33:47 +01:00
										 |  |  |     else | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |       merge_or_rebase "${DIR}" "${TAP_VAR}" "${UPSTREAM_BRANCH}" | 
					
						
							| 
									
										
										
										
											2016-08-10 09:33:47 +01:00
										 |  |  |     fi | 
					
						
							| 
									
										
										
										
											2016-01-10 20:28:52 +00:00
										 |  |  |   done | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-02-07 19:25:40 +01:00
										 |  |  |   if [[ -z "${HOMEBREW_NO_INSTALL_FROM_API}" ]] | 
					
						
							| 
									
										
										
										
											2021-12-07 00:13:56 +00:00
										 |  |  |   then | 
					
						
							| 
									
										
										
										
											2023-07-05 17:18:12 +01:00
										 |  |  |     local api_cache="${HOMEBREW_CACHE}/api" | 
					
						
							|  |  |  |     mkdir -p "${api_cache}" | 
					
						
							| 
									
										
										
										
											2022-12-29 02:48:31 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-05 17:18:12 +01:00
										 |  |  |     for json in formula cask formula_tap_migrations cask_tap_migrations | 
					
						
							| 
									
										
										
										
											2022-12-29 02:48:31 -05:00
										 |  |  |     do | 
					
						
							| 
									
										
										
										
											2023-07-05 17:18:12 +01:00
										 |  |  |       local filename="${json}.jws.json" | 
					
						
							|  |  |  |       local cache_path="${api_cache}/${filename}" | 
					
						
							|  |  |  |       if [[ -f "${cache_path}" ]] | 
					
						
							| 
									
										
										
										
											2022-10-13 23:16:28 +09:00
										 |  |  |       then | 
					
						
							| 
									
										
										
										
											2023-07-05 17:18:12 +01:00
										 |  |  |         INITIAL_JSON_BYTESIZE="$(wc -c "${cache_path}")" | 
					
						
							| 
									
										
										
										
											2022-10-13 23:16:28 +09:00
										 |  |  |       fi | 
					
						
							| 
									
										
										
										
											2023-06-27 13:12:12 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-27 15:20:59 +01:00
										 |  |  |       if [[ -n "${HOMEBREW_VERBOSE}" ]] | 
					
						
							|  |  |  |       then | 
					
						
							|  |  |  |         echo "Checking if we need to fetch ${filename}..." | 
					
						
							|  |  |  |       fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-02-03 14:10:40 +00:00
										 |  |  |       JSON_URLS=() | 
					
						
							|  |  |  |       if [[ -n "${HOMEBREW_API_DOMAIN}" && "${HOMEBREW_API_DOMAIN}" != "${HOMEBREW_API_DEFAULT_DOMAIN}" ]] | 
					
						
							|  |  |  |       then | 
					
						
							| 
									
										
										
										
											2023-07-05 17:18:12 +01:00
										 |  |  |         JSON_URLS=("${HOMEBREW_API_DOMAIN}/${filename}") | 
					
						
							| 
									
										
										
										
											2023-02-03 14:10:40 +00:00
										 |  |  |       fi | 
					
						
							| 
									
										
										
										
											2023-06-27 13:12:12 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-05 17:18:12 +01:00
										 |  |  |       JSON_URLS+=("${HOMEBREW_API_DEFAULT_DOMAIN}/${filename}") | 
					
						
							| 
									
										
										
										
											2023-02-03 14:10:40 +00:00
										 |  |  |       for json_url in "${JSON_URLS[@]}" | 
					
						
							|  |  |  |       do | 
					
						
							| 
									
										
										
										
											2023-02-09 18:01:41 +00:00
										 |  |  |         time_cond=() | 
					
						
							| 
									
										
										
										
											2023-07-05 17:18:12 +01:00
										 |  |  |         if [[ -s "${cache_path}" ]] | 
					
						
							| 
									
										
										
										
											2023-02-09 18:01:41 +00:00
										 |  |  |         then | 
					
						
							| 
									
										
										
										
											2023-07-05 17:18:12 +01:00
										 |  |  |           time_cond=("--time-cond" "${cache_path}") | 
					
						
							| 
									
										
										
										
											2023-02-09 18:01:41 +00:00
										 |  |  |         fi | 
					
						
							| 
									
										
										
										
											2023-02-03 14:10:40 +00:00
										 |  |  |         curl \
 | 
					
						
							|  |  |  |           "${CURL_DISABLE_CURLRC_ARGS[@]}" \
 | 
					
						
							| 
									
										
										
										
											2023-02-10 17:27:10 +00:00
										 |  |  |           --fail --compressed --silent \
 | 
					
						
							|  |  |  |           --speed-limit "${HOMEBREW_CURL_SPEED_LIMIT}" --speed-time "${HOMEBREW_CURL_SPEED_TIME}" \
 | 
					
						
							| 
									
										
										
										
											2023-07-05 17:18:12 +01:00
										 |  |  |           --location --remote-time --output "${cache_path}" \
 | 
					
						
							| 
									
										
										
										
											2023-02-09 18:01:41 +00:00
										 |  |  |           "${time_cond[@]}" \
 | 
					
						
							| 
									
										
										
										
											2023-02-03 14:10:40 +00:00
										 |  |  |           --user-agent "${HOMEBREW_USER_AGENT_CURL}" \
 | 
					
						
							|  |  |  |           "${json_url}" | 
					
						
							|  |  |  |         curl_exit_code=$? | 
					
						
							|  |  |  |         [[ ${curl_exit_code} -eq 0 ]] && break | 
					
						
							|  |  |  |       done | 
					
						
							| 
									
										
										
										
											2023-06-27 13:12:12 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-05 17:18:12 +01:00
										 |  |  |       if [[ "${json}" == "formula" ]] && [[ -f "${api_cache}/formula_names.txt" ]] | 
					
						
							| 
									
										
										
										
											2023-06-27 13:12:12 +01:00
										 |  |  |       then | 
					
						
							| 
									
										
										
										
											2023-07-05 17:18:12 +01:00
										 |  |  |         mv -f "${api_cache}/formula_names.txt" "${api_cache}/formula_names.before.txt" | 
					
						
							|  |  |  |       elif [[ "${json}" == "cask" ]] && [[ -f "${api_cache}/cask_names.txt" ]] | 
					
						
							|  |  |  |       then | 
					
						
							|  |  |  |         mv -f "${api_cache}/cask_names.txt" "${api_cache}/cask_names.before.txt" | 
					
						
							| 
									
										
										
										
											2023-06-27 13:12:12 +01:00
										 |  |  |       fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-12-29 02:48:31 -05:00
										 |  |  |       if [[ ${curl_exit_code} -eq 0 ]] | 
					
						
							|  |  |  |       then | 
					
						
							| 
									
										
										
										
											2023-07-05 17:18:12 +01:00
										 |  |  |         touch "${cache_path}" | 
					
						
							| 
									
										
										
										
											2023-06-27 13:12:12 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-05 17:18:12 +01:00
										 |  |  |         CURRENT_JSON_BYTESIZE="$(wc -c "${cache_path}")" | 
					
						
							| 
									
										
										
										
											2022-12-29 02:48:31 -05:00
										 |  |  |         if [[ "${INITIAL_JSON_BYTESIZE}" != "${CURRENT_JSON_BYTESIZE}" ]] | 
					
						
							|  |  |  |         then | 
					
						
							| 
									
										
										
										
											2023-03-27 17:24:25 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-05 17:18:12 +01:00
										 |  |  |           if [[ "${json}" == "formula" ]] | 
					
						
							| 
									
										
										
										
											2023-02-16 21:49:03 +00:00
										 |  |  |           then | 
					
						
							| 
									
										
										
										
											2023-07-05 17:18:12 +01:00
										 |  |  |             rm -f "${api_cache}/formula_aliases.txt" | 
					
						
							| 
									
										
										
										
											2023-02-16 21:49:03 +00:00
										 |  |  |           fi | 
					
						
							| 
									
										
										
										
											2022-12-29 02:48:31 -05:00
										 |  |  |           HOMEBREW_UPDATED="1" | 
					
						
							| 
									
										
										
										
											2023-07-27 15:20:59 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |           if [[ -n "${HOMEBREW_VERBOSE}" ]] | 
					
						
							|  |  |  |           then | 
					
						
							|  |  |  |             echo "Updated ${filename}." | 
					
						
							|  |  |  |           fi | 
					
						
							| 
									
										
										
										
											2022-12-29 02:48:31 -05:00
										 |  |  |         fi | 
					
						
							|  |  |  |       else | 
					
						
							| 
									
										
										
										
											2023-02-16 16:03:22 +00:00
										 |  |  |         echo "Failed to download ${json_url}!" >>"${update_failed_file}" | 
					
						
							| 
									
										
										
										
											2022-12-29 02:48:31 -05:00
										 |  |  |       fi | 
					
						
							| 
									
										
										
										
											2023-02-24 16:46:15 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-12-29 02:48:31 -05:00
										 |  |  |     done | 
					
						
							| 
									
										
										
										
											2023-07-05 17:18:12 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     # Not a typo, these are the files we used to download that no longer need so should cleanup. | 
					
						
							|  |  |  |     rm -f "${HOMEBREW_CACHE}/api/formula.json" "${HOMEBREW_CACHE}/api/cask.json" | 
					
						
							| 
									
										
										
										
											2023-07-27 15:20:59 +01:00
										 |  |  |   else | 
					
						
							|  |  |  |     if [[ -n "${HOMEBREW_VERBOSE}" ]] | 
					
						
							|  |  |  |     then | 
					
						
							|  |  |  |       echo "HOMEBREW_NO_INSTALL_FROM_API set: skipping API JSON downloads." | 
					
						
							|  |  |  |     fi | 
					
						
							| 
									
										
										
										
											2021-12-07 00:13:56 +00:00
										 |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-02-09 18:27:37 +00:00
										 |  |  |   if [[ -f "${update_failed_file}" ]] | 
					
						
							|  |  |  |   then | 
					
						
							|  |  |  |     onoe <"${update_failed_file}" | 
					
						
							|  |  |  |     rm -f "${update_failed_file}" | 
					
						
							|  |  |  |     export HOMEBREW_UPDATE_FAILED="1" | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-06 10:03:16 +09:00
										 |  |  |   safe_cd "${HOMEBREW_REPOSITORY}" | 
					
						
							| 
									
										
										
										
											2016-05-03 14:24:41 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-19 11:04:20 -04:00
										 |  |  |   # HOMEBREW_UPDATE_AUTO wasn't modified in subshell. | 
					
						
							| 
									
										
										
										
											2021-04-22 13:18:44 +01:00
										 |  |  |   # shellcheck disable=SC2031 | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  |   if [[ -n "${HOMEBREW_UPDATED}" ]] || | 
					
						
							|  |  |  |      [[ -n "${HOMEBREW_UPDATE_FAILED}" ]] || | 
					
						
							|  |  |  |      [[ -n "${HOMEBREW_MISSING_REMOTE_REF_DIRS}" ]] || | 
					
						
							|  |  |  |      [[ -n "${HOMEBREW_UPDATE_FORCE}" ]] || | 
					
						
							| 
									
										
										
										
											2021-10-07 11:16:03 +01:00
										 |  |  |      [[ -n "${HOMEBREW_MIGRATE_LINUXBREW_FORMULAE}" ]] || | 
					
						
							| 
									
										
										
										
											2021-09-13 20:32:20 +08:00
										 |  |  |      [[ -d "${HOMEBREW_LIBRARY}/LinkedKegs" ]] || | 
					
						
							|  |  |  |      [[ ! -f "${HOMEBREW_CACHE}/all_commands_list.txt" ]] || | 
					
						
							| 
									
										
										
										
											2022-05-19 11:04:20 -04:00
										 |  |  |      [[ -n "${HOMEBREW_DEVELOPER}" && -z "${HOMEBREW_UPDATE_AUTO}" ]] | 
					
						
							| 
									
										
										
										
											2016-05-03 14:24:41 +01:00
										 |  |  |   then | 
					
						
							| 
									
										
										
										
											2023-12-14 15:34:15 +00:00
										 |  |  |     brew update-report "$@" | 
					
						
							| 
									
										
										
										
											2016-05-03 14:24:41 +01:00
										 |  |  |     return $? | 
					
						
							| 
									
										
										
										
											2022-05-19 11:04:20 -04:00
										 |  |  |   elif [[ -z "${HOMEBREW_UPDATE_AUTO}" && -z "${HOMEBREW_QUIET}" ]] | 
					
						
							| 
									
										
										
										
											2016-05-03 14:24:41 +01:00
										 |  |  |   then | 
					
						
							|  |  |  |     echo "Already up-to-date." | 
					
						
							|  |  |  |   fi | 
					
						
							| 
									
										
										
										
											2016-01-10 20:28:52 +00:00
										 |  |  | } |