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
This commit is contained in:
Mike McQuaid 2023-03-27 17:24:25 +01:00
parent cf6614b50e
commit 9de0b619f3
No known key found for this signature in database
GPG Key ID: 3338A31AFDB1D829
3 changed files with 27 additions and 8 deletions

View File

@ -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

View File

@ -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"

View File

@ -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"