From 9de0b619f3eed6e4753c156d0c6ed04b782c4687 Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Mon, 27 Mar 2023 17:24:25 +0100 Subject: [PATCH] More update tweaks - Make copying to `*_names.before.txt` the responsibility of `update.sh` (unless the file doesn't exist at all). This provides the added benefit of allowing the inspection of the before/after state after running a `brew update` rather than both files always being identical at this point. - State `No changes to formulae or casks.` on macOS. - Rename and flip `updated_formula_report` to `auto_update`; this naming was confusing every time. - Only display the `You can upgrade with...` messaging if we're not auto-updating as sometimes it will be displayed before the commands it references (e.g. `upgrade`, `outdated` or an `install` that proceeds to upgrade these formulae). Fixes https://github.com/Homebrew/brew/issues/15065 --- Library/Homebrew/cmd/update-report.rb | 24 +++++++++++++------ Library/Homebrew/cmd/update.sh | 7 +++++- .../extend/os/linux/cmd/update-report.rb | 4 ++++ 3 files changed, 27 insertions(+), 8 deletions(-) diff --git a/Library/Homebrew/cmd/update-report.rb b/Library/Homebrew/cmd/update-report.rb index 7192241abe..23e1596708 100644 --- a/Library/Homebrew/cmd/update-report.rb +++ b/Library/Homebrew/cmd/update-report.rb @@ -225,9 +225,9 @@ module Homebrew updated_taps << tap.name hub.add(reporter, auto_update: args.auto_update?) end + else + FileUtils.cp names_txt, names_before_txt end - - FileUtils.cp names_txt, names_before_txt end end @@ -239,14 +239,14 @@ module Homebrew if updated if hub.empty? - puts "No changes to formulae." unless args.quiet? + puts no_changes_message unless args.quiet? else if ENV.fetch("HOMEBREW_UPDATE_REPORT_ONLY_INSTALLED", false) opoo "HOMEBREW_UPDATE_REPORT_ONLY_INSTALLED is now the default behaviour, " \ "so you can unset it from your environment." end - hub.dump(updated_formula_report: !args.auto_update?) unless args.quiet? + hub.dump(auto_update: args.auto_update?) unless args.quiet? hub.reporters.each(&:migrate_tap_migration) hub.reporters.each { |r| r.migrate_formula_rename(force: args.force?, verbose: args.verbose?) } @@ -303,6 +303,10 @@ module Homebrew EOS end + def no_changes_message + "No changes to formulae or casks." + end + def shorten_revision(revision) Utils.popen_read("git", "-C", HOMEBREW_REPOSITORY, "rev-parse", "--short", revision).chomp end @@ -627,7 +631,7 @@ class ReporterHub delegate empty?: :@hash - def dump(updated_formula_report: true) + def dump(auto_update: false) report_all = ENV["HOMEBREW_UPDATE_REPORT_ALL_FORMULAE"].present? if report_all && !Homebrew::EnvConfig.no_install_from_api? odeprecated "HOMEBREW_UPDATE_REPORT_ALL_FORMULAE" @@ -644,10 +648,10 @@ class ReporterHub outdated_formulae = [] outdated_casks = [] - if updated_formula_report && report_all + if !auto_update && report_all dump_modified_formula_report dump_modified_cask_report - elsif updated_formula_report + elsif !auto_update outdated_formulae = Formula.installed.select(&:outdated?).map(&:name) output_dump_formula_or_cask_report "Outdated Formulae", outdated_formulae @@ -695,6 +699,12 @@ class ReporterHub puts puts <<~EOS You have #{msg} installed. + EOS + # If we're auto-updating, don't need to suggest commands that we're perhaps + # already running. + return if auto_update + + puts <<~EOS You can upgrade #{update_pronoun} with #{Tty.bold}brew upgrade#{Tty.reset} or list #{update_pronoun} with #{Tty.bold}brew outdated#{Tty.reset}. EOS diff --git a/Library/Homebrew/cmd/update.sh b/Library/Homebrew/cmd/update.sh index 2bcee9996e..f319b5be69 100644 --- a/Library/Homebrew/cmd/update.sh +++ b/Library/Homebrew/cmd/update.sh @@ -811,7 +811,12 @@ EOS CURRENT_JSON_BYTESIZE="$(wc -c "${HOMEBREW_CACHE}"/api/"${formula_or_cask}".jws.json)" if [[ "${INITIAL_JSON_BYTESIZE}" != "${CURRENT_JSON_BYTESIZE}" ]] then - rm -f "${HOMEBREW_CACHE}/api/${formula_or_cask}_names.txt" + if [[ -f "${HOMEBREW_CACHE}/api/${formula_or_cask}_names.txt" ]] + then + mv -f "${HOMEBREW_CACHE}/api/${formula_or_cask}_names.txt" \ + "${HOMEBREW_CACHE}/api/${formula_or_cask}_names.before.txt" + fi + if [[ "${formula_or_cask}" == "formula" ]] then rm -f "${HOMEBREW_CACHE}/api/formula_aliases.txt" diff --git a/Library/Homebrew/extend/os/linux/cmd/update-report.rb b/Library/Homebrew/extend/os/linux/cmd/update-report.rb index a78bf2fa7f..5e9091a3e7 100644 --- a/Library/Homebrew/extend/os/linux/cmd/update-report.rb +++ b/Library/Homebrew/extend/os/linux/cmd/update-report.rb @@ -6,6 +6,10 @@ module Homebrew module_function + def no_changes_message + "No changes to formulae." + end + def migrate_gcc_dependents_if_needed return if Settings.read("gcc-rpaths.fixed") == "true"