From b64ed9dc587d3b541cdc29e997ba4eccd3a95e77 Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Fri, 16 Jun 2023 16:52:17 +0100 Subject: [PATCH] cmd/update-report: nudge people to tweak settings. Nudge people who have set update or analytics related settings to change them and to run `brew untap` for taps they no longer need. --- Library/Homebrew/cmd/update-report.rb | 114 ++++++++++++++++++++------ 1 file changed, 90 insertions(+), 24 deletions(-) diff --git a/Library/Homebrew/cmd/update-report.rb b/Library/Homebrew/cmd/update-report.rb index c22daf8f6b..a8064d260f 100644 --- a/Library/Homebrew/cmd/update-report.rb +++ b/Library/Homebrew/cmd/update-report.rb @@ -83,33 +83,21 @@ module Homebrew exec HOMEBREW_BREW_FILE, "update", *update_args end - if !Utils::Analytics.messages_displayed? && - !Utils::Analytics.disabled? && - !Utils::Analytics.no_message_output? - - ENV["HOMEBREW_NO_ANALYTICS_THIS_RUN"] = "1" - # Use the shell's audible bell. - print "\a" - - # Use an extra newline and bold to avoid this being missed. - ohai "Homebrew has enabled anonymous aggregate formula and cask analytics." - puts <<~EOS - #{Tty.bold}Read the analytics documentation (and how to opt-out) here: - #{Formatter.url("https://docs.brew.sh/Analytics")}#{Tty.reset} - No analytics have been recorded yet (nor will be during this `brew` run). - - EOS - - # Consider the messages possibly missed if not a TTY. - Utils::Analytics.messages_displayed! if $stdout.tty? + if ENV["HOMEBREW_ADDITIONAL_GOOGLE_ANALYTICS_ID"].present? + opoo "HOMEBREW_ADDITIONAL_GOOGLE_ANALYTICS_ID is now a no-op so can be unset." + puts "All Homebrew Google Analytics code and data was destroyed." end - if Settings.read("donationmessage") != "true" && !args.quiet? - ohai "Homebrew is run entirely by unpaid volunteers. Please consider donating:" - puts " #{Formatter.url("https://github.com/Homebrew/brew#donations")}\n\n" + if ENV["HOMEBREW_NO_GOOGLE_ANALYTICS"].present? + opoo "HOMEBREW_NO_GOOGLE_ANALYTICS is now a no-op so can be unset." + puts "All Homebrew Google Analytics code and data was destroyed." + end - # Consider the message possibly missed if not a TTY. - Settings.write "donationmessage", true if $stdout.tty? + unless args.quiet? + analytics_message + donation_message + install_from_api_message + untap_message end install_core_tap_if_necessary @@ -339,6 +327,84 @@ module Homebrew def migrate_gcc_dependents_if_needed # do nothing end + + def analytics_message + if !Utils::Analytics.messages_displayed? && + !Utils::Analytics.disabled? && + !Utils::Analytics.no_message_output? + + ENV["HOMEBREW_NO_ANALYTICS_THIS_RUN"] = "1" + # Use the shell's audible bell. + print "\a" + + # Use an extra newline and bold to avoid this being missed. + ohai "Homebrew collects anonymous analytics." + puts <<~EOS + #{Tty.bold}Read the analytics documentation (and how to opt-out) here: + #{Formatter.url("https://docs.brew.sh/Analytics")}#{Tty.reset} + No analytics have been recorded yet (nor will be during this `brew` run). + + EOS + + # Consider the messages possibly missed if not a TTY. + Utils::Analytics.messages_displayed! if $stdout.tty? + elsif Utils::Analytics.disabled? + ohai "Homebrew's analytics have entirely moved to our InfluxDB instance in the EU." + puts "We gather less data than before and have destroyed all Google Analytics data:" + puts " #{Formatter.url("https://docs.brew.sh/Analytics")}#{Tty.reset}" + puts "Please reconsider re-enabling analytics to help our volunteer maintainers with:" + puts " brew analytics on" + + # Consider the message possibly missed if not a TTY. + Settings.write "influxanalyticsmessage", true if $stdout.tty? + end + end + + def donation_message + return if Settings.read("donationmessage") == "true" + + ohai "Homebrew is run entirely by unpaid volunteers. Please consider donating:" + puts " #{Formatter.url("https://github.com/Homebrew/brew#donations")}\n\n" + + # Consider the message possibly missed if not a TTY. + Settings.write "donationmessage", true if $stdout.tty? + end + + def install_from_api_message + return if Settings.read("installfromapimessage") == "true" + + auto_update_secs_set = Homebrew::EnvConfig.api_auto_update_secs.to_i.positive? + if !Homebrew::EnvConfig.no_auto_update? && !Homebrew::EnvConfig.no_install_from_api? && !auto_update_secs_set + return + end + + ohai "You have set:" + puts " HOMEBREW_NO_AUTO_UPDATE" if Homebrew::EnvConfig.no_auto_update? + puts " HOMEBREW_API_AUTO_UPDATE_SECS" if auto_update_secs_set + if Homebrew::EnvConfig.no_install_from_api? && !Homebrew::EnvConfig.automatically_set_no_install_from_api? + puts " HOMEBREW_NO_INSTALL_FROM_API" + end + puts "but we have dramatically sped up and fixed many bugs in the way we do Homebrew updates since." + puts "Please consider unsetting these and tweaking the values based on the new behaviour." + puts "\n\n" + + # Consider the message possibly missed if not a TTY. + Settings.write "installfromapimessage", true if $stdout.tty? + end + + def untap_message + return if Homebrew::EnvConfig.no_install_from_api? + return if Homebrew::EnvConfig.developer? || ENV["HOMEBREW_DEV_CMD_RUN"] + + core_tap = CoreTap.instance + cask_tap = Tap.default_cask_tap + return if !core_tap.installed? && !cask_tap.installed? + + puts "Installing from the API is now the default behaviour!" + puts "You can save space and time by running:" + puts " brew untap #{core_tap.name}" if core_tap.installed? + puts " brew untap #{cask_tap.name}" if cask_tap.installed? + end end require "extend/os/cmd/update-report"