From 5631310653acefafb52698d265921e20d7c1dddb Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Fri, 10 Mar 2023 17:53:15 +0000 Subject: [PATCH] Auto-update from the API less often Instead of doing so literally whenever we query for a formula, Instead do so only when we're in an auto-updateable command. This better fits the existing behaviour while still updating when it's most important to do so. --- Library/Homebrew/api.rb | 3 ++- Library/Homebrew/brew.sh | 28 +++++++++++++++++----------- Library/Homebrew/global.rb | 4 ++++ 3 files changed, 23 insertions(+), 12 deletions(-) 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