From 20dde0b3133b2edad01039afa93377029bddd737 Mon Sep 17 00:00:00 2001 From: nandahkrishna Date: Wed, 9 Sep 2020 13:27:12 +0530 Subject: [PATCH 1/2] Add `head_only?` to Formula, replace `head?` in livecheck --- Library/Homebrew/formula.rb | 6 ++++++ Library/Homebrew/livecheck/livecheck.rb | 24 ++++++++++++++---------- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 3551fc1b8b..1353104766 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -333,6 +333,12 @@ class Formula active_spec == head end + # Is this formula HEAD-only? + # @private + def head_only? + head && !stable + end + delegate [ # rubocop:disable Layout/HashAlignment :bottle_unneeded?, :bottle_disabled?, diff --git a/Library/Homebrew/livecheck/livecheck.rb b/Library/Homebrew/livecheck/livecheck.rb index 0398964afb..d5410b25fd 100644 --- a/Library/Homebrew/livecheck/livecheck.rb +++ b/Library/Homebrew/livecheck/livecheck.rb @@ -102,17 +102,21 @@ module Homebrew formula.head&.downloader&.shutup! - current = if formula.head? + # Use the `stable` version for comparison except for installed + # head-only formulae. A formula with `stable` and `head` that's + # installed using `--head` will still use the `stable` version for + # comparison. + current = if formula.head_only? formula.any_installed_version.version.commit else - formula.version + formula.stable.version end - latest = if formula.stable? + latest = if formula.head_only? + formula.head.downloader.fetch_last_commit + else version_info = latest_version(formula, args: args) version_info[:latest] if version_info.present? - else - formula.head.downloader.fetch_last_commit end if latest.blank? @@ -128,7 +132,7 @@ module Homebrew latest = Version.new(m[1]) end - is_outdated = if formula.head? + is_outdated = if formula.head_only? # A HEAD-only formula is considered outdated if the latest upstream # commit hash is different than the installed version's commit hash (current != latest) @@ -150,7 +154,7 @@ module Homebrew livecheckable: formula.livecheckable?, }, } - info[:meta][:head_only] = true if formula.head? + info[:meta][:head_only] = true if formula.head_only? info[:meta].merge!(version_info[:meta]) if version_info.present? && version_info.key?(:meta) next if args.newer_only? && !info[:version][:outdated] @@ -211,7 +215,7 @@ module Homebrew status_hash[:meta] = { livecheckable: formula.livecheckable?, } - status_hash[:meta][:head_only] = true if formula.head? + status_hash[:meta][:head_only] = true if formula.head_only? end status_hash @@ -235,7 +239,7 @@ module Homebrew return end - if formula.head? && !formula.any_version_installed? + if formula.head_only? && !formula.any_version_installed? head_only_msg = "HEAD only formula must be installed to be livecheckable" return status_hash(formula, "error", [head_only_msg], args: args) if args.json? @@ -346,7 +350,7 @@ module Homebrew if args.debug? puts puts "Formula: #{formula_name(formula, args: args)}" - puts "Head only?: true" if formula.head? + puts "Head only?: true" if formula.head_only? puts "Livecheckable?: #{has_livecheckable ? "Yes" : "No"}" end From c798c3c538faed5020c59eea213ab218dbc025b4 Mon Sep 17 00:00:00 2001 From: nandahkrishna Date: Sat, 3 Oct 2020 22:25:03 +0530 Subject: [PATCH 2/2] Fixed quiet for download_strategy --- Library/Homebrew/download_strategy.rb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Library/Homebrew/download_strategy.rb b/Library/Homebrew/download_strategy.rb index c6f18f7038..064c422245 100644 --- a/Library/Homebrew/download_strategy.rb +++ b/Library/Homebrew/download_strategy.rb @@ -38,6 +38,7 @@ class AbstractDownloadStrategy @version = version @cache = meta.fetch(:cache, HOMEBREW_CACHE) @meta = meta + @quiet = false extend Pourable if meta[:bottle] end @@ -55,6 +56,10 @@ class AbstractDownloadStrategy @quiet = true end + def quiet? + Context.current.quiet? || @quiet + end + # Unpack {#cached_location} into the current working directory, and possibly # chdir into the newly-unpacked directory. # Unlike {Resource#stage}, this does not take a block.