diff --git a/Library/Homebrew/api.rb b/Library/Homebrew/api.rb index 36ee1a2308..ef06312bff 100644 --- a/Library/Homebrew/api.rb +++ b/Library/Homebrew/api.rb @@ -58,7 +58,8 @@ module Homebrew skip_download = target.exist? && !target.empty? && - (Homebrew::EnvConfig.no_auto_update? || + (!Homebrew.auto_update_command? || + Homebrew::EnvConfig.no_auto_update? || ((Time.now - Homebrew::EnvConfig.api_auto_update_secs.to_i) < target.mtime)) skip_download ||= Homebrew.running_as_root_but_not_owned_by_root? diff --git a/Library/Homebrew/brew.sh b/Library/Homebrew/brew.sh index 483079a8f0..379e18b818 100644 --- a/Library/Homebrew/brew.sh +++ b/Library/Homebrew/brew.sh @@ -269,17 +269,7 @@ auto-update() { # If we've checked for updates, we don't need to check again. export HOMEBREW_AUTO_UPDATE_CHECKED="1" - AUTO_UPDATE_COMMANDS=( - install - upgrade - bump-formula-pr - bump-cask-pr - bundle - release - ) - - if check-array-membership "${HOMEBREW_COMMAND}" "${AUTO_UPDATE_COMMANDS[@]}" || - [[ "${HOMEBREW_COMMAND}" == "tap" && "${HOMEBREW_ARG_COUNT}" -gt 1 ]] + if [[ -n "${HOMEBREW_AUTO_UPDATE_COMMAND}" ]] then export HOMEBREW_AUTO_UPDATING="1" @@ -816,6 +806,22 @@ then unset HOMEBREW_RUBY_WARNINGS fi +# Check for commands that should call `brew update --auto-update` first. +AUTO_UPDATE_COMMANDS=( + install + outdated + upgrade + bump-formula-pr + bump-cask-pr + bundle + release +) +if check-array-membership "${HOMEBREW_COMMAND}" "${AUTO_UPDATE_COMMANDS[@]}" || + [[ "${HOMEBREW_COMMAND}" == "tap" && "${HOMEBREW_ARG_COUNT}" -gt 1 ]] +then + export HOMEBREW_AUTO_UPDATE_COMMAND="1" +fi + # Disable Ruby options we don't need. export HOMEBREW_RUBY_DISABLE_OPTIONS="--disable=gems,rubyopt" diff --git a/Library/Homebrew/global.rb b/Library/Homebrew/global.rb index a7a80c1593..d1e6a96da4 100644 --- a/Library/Homebrew/global.rb +++ b/Library/Homebrew/global.rb @@ -124,6 +124,10 @@ module Homebrew def running_as_root_but_not_owned_by_root? running_as_root? && !owner_uid.zero? end + + def auto_update_command? + ENV.fetch("HOMEBREW_AUTO_UPDATE_COMMAND", false).present? + end end end