From 2c300cfbe93e608692e1bc82de4e40991828b7f4 Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Fri, 28 Jul 2023 10:13:57 +0100 Subject: [PATCH] `brew update` core/homebrew-cask taps properly The existing logic in `update.sh` was both a bit hard to follow and had some edge cases. Fix this up for improving #15775. --- Library/Homebrew/brew.sh | 16 ++++++++++------ Library/Homebrew/cmd/update.sh | 14 ++++++++------ 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/Library/Homebrew/brew.sh b/Library/Homebrew/brew.sh index 53ac9d617a..46cb71efed 100644 --- a/Library/Homebrew/brew.sh +++ b/Library/Homebrew/brew.sh @@ -313,11 +313,11 @@ auto-update() { repo_fetch_heads=("${HOMEBREW_REPOSITORY}/.git/FETCH_HEAD") # We might have done an auto-update recently, but not a core/cask clone auto-update. # So we check the core/cask clone FETCH_HEAD too. - if [[ -n "${HOMEBREW_UPDATE_CORE_TAP}" && -d "${HOMEBREW_CORE_REPOSITORY}/.git" ]] + if [[ -n "${HOMEBREW_AUTO_UPDATE_CORE_TAP}" && -d "${HOMEBREW_CORE_REPOSITORY}/.git" ]] then repo_fetch_heads+=("${HOMEBREW_CORE_REPOSITORY}/.git/FETCH_HEAD") fi - if [[ -n "${HOMEBREW_UPDATE_CASK_TAP}" && -d "${HOMEBREW_CASK_REPOSITORY}/.git" ]] + if [[ -n "${HOMEBREW_AUTO_UPDATE_CASK_TAP}" && -d "${HOMEBREW_CASK_REPOSITORY}/.git" ]] then repo_fetch_heads+=("${HOMEBREW_CASK_REPOSITORY}/.git/FETCH_HEAD") fi @@ -365,8 +365,8 @@ auto-update() { unset AUTO_UPDATE_COMMANDS unset AUTO_UPDATE_CORE_TAP_COMMANDS unset AUTO_UPDATE_CASK_TAP_COMMANDS - unset HOMEBREW_UPDATE_CORE_TAP - unset HOMEBREW_UPDATE_CASK_TAP + unset HOMEBREW_AUTO_UPDATE_CORE_TAP + unset HOMEBREW_AUTO_UPDATE_CASK_TAP } ##### @@ -877,7 +877,9 @@ AUTO_UPDATE_CORE_TAP_COMMANDS=( if check-array-membership "${HOMEBREW_COMMAND}" "${AUTO_UPDATE_CORE_TAP_COMMANDS[@]}" then export HOMEBREW_AUTO_UPDATE_COMMAND="1" - export HOMEBREW_UPDATE_CORE_TAP="1" + export HOMEBREW_AUTO_UPDATE_CORE_TAP="1" +else + unset HOMEBREW_AUTO_UPDATE_CORE_TAP fi # Check for commands that should auto-update the homebrew-cask tap. @@ -889,7 +891,9 @@ AUTO_UPDATE_CASK_TAP_COMMANDS=( if check-array-membership "${HOMEBREW_COMMAND}" "${AUTO_UPDATE_CASK_TAP_COMMANDS[@]}" then export HOMEBREW_AUTO_UPDATE_COMMAND="1" - export HOMEBREW_UPDATE_CASK_TAP="1" + export HOMEBREW_AUTO_UPDATE_CASK_TAP="1" +else + unset HOMEBREW_AUTO_UPDATE_CORE_TAP fi # Disable Ruby options we don't need. diff --git a/Library/Homebrew/cmd/update.sh b/Library/Homebrew/cmd/update.sh index d6b43a7bac..100093c037 100644 --- a/Library/Homebrew/cmd/update.sh +++ b/Library/Homebrew/cmd/update.sh @@ -581,9 +581,10 @@ EOS for DIR in "${HOMEBREW_REPOSITORY}" "${HOMEBREW_LIBRARY}"/Taps/*/* do if [[ -z "${HOMEBREW_NO_INSTALL_FROM_API}" ]] && - [[ -z "${HOMEBREW_DEVELOPER}" && -z "${HOMEBREW_DEV_CMD_RUN}" || -n "${HOMEBREW_UPDATE_AUTO}" ]] && - [[ ("${DIR}" == "${HOMEBREW_CORE_REPOSITORY}" && -z "${HOMEBREW_UPDATE_CORE_TAP}") || - ("${DIR}" == "${HOMEBREW_CASK_REPOSITORY}" && -z "${HOMEBREW_UPDATE_CASK_TAP}") ]] + [[ -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}")) ]] then continue fi @@ -743,9 +744,10 @@ EOS for DIR in "${HOMEBREW_REPOSITORY}" "${HOMEBREW_LIBRARY}"/Taps/*/* do if [[ -z "${HOMEBREW_NO_INSTALL_FROM_API}" ]] && - [[ -z "${HOMEBREW_DEVELOPER}" && -z "${HOMEBREW_DEV_CMD_RUN}" || -n "${HOMEBREW_UPDATE_AUTO}" ]] && - [[ ("${DIR}" == "${HOMEBREW_CORE_REPOSITORY}" && -z "${HOMEBREW_UPDATE_CORE_TAP}") || - ("${DIR}" == "${HOMEBREW_CASK_REPOSITORY}" && -z "${HOMEBREW_UPDATE_CASK_TAP}") ]] + [[ -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}")) ]] then continue fi