From ab0e427d3eb6ff71b6034541138348d1a5025ddd Mon Sep 17 00:00:00 2001 From: nandahkrishna Date: Thu, 4 Mar 2021 01:39:37 +0530 Subject: [PATCH] Disambiguate formulae/casks from different taps --- Library/Homebrew/dev-cmd/bump.rb | 13 ++++++++++++- Library/Homebrew/livecheck/livecheck.rb | 23 +++++++++++++++++------ 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/Library/Homebrew/dev-cmd/bump.rb b/Library/Homebrew/dev-cmd/bump.rb index 9e171eda6f..5f2a123bba 100644 --- a/Library/Homebrew/dev-cmd/bump.rb +++ b/Library/Homebrew/dev-cmd/bump.rb @@ -16,6 +16,8 @@ module Homebrew Display out-of-date brew formulae and the latest version available. Also displays whether a pull request has been opened with the URL. EOS + switch "--full-name", + description: "Print formulae/casks with fully-qualified names." switch "--no-pull-requests", description: "Do not retrieve pull requests from GitHub." switch "--formula", "--formulae", @@ -63,10 +65,19 @@ module Homebrew .select { |item| item.is_a?(Cask::Cask) } end + ambiguous_names = [] + unless args.full_name? + ambiguous_names = (formulae_and_casks - ambiguous_casks) + .group_by { |item| Livecheck.formula_or_cask_name(item) } + .select { |_name, items| items.length > 1 } + .values.flatten + end + formulae_and_casks.each_with_index do |formula_or_cask, i| puts if i.positive? - name = Livecheck.formula_or_cask_name(formula_or_cask) + use_full_name = args.full_name? || ambiguous_names.include?(formula_or_cask) + name = Livecheck.formula_or_cask_name(formula_or_cask, full_name: use_full_name) repository = if formula_or_cask.is_a?(Formula) if formula_or_cask.head_only? ohai name diff --git a/Library/Homebrew/livecheck/livecheck.rb b/Library/Homebrew/livecheck/livecheck.rb index cfd7cad702..40da755c18 100644 --- a/Library/Homebrew/livecheck/livecheck.rb +++ b/Library/Homebrew/livecheck/livecheck.rb @@ -112,6 +112,14 @@ module Homebrew .select { |item| item.is_a?(Cask::Cask) } end + ambiguous_names = [] + unless full_name + ambiguous_names = (formulae_and_casks_to_check - ambiguous_casks) + .group_by { |item| formula_or_cask_name(item) } + .select { |_name, items| items.length > 1 } + .values.flatten + end + has_a_newer_upstream_version = T.let(false, T::Boolean) if json && !quiet && $stderr.tty? @@ -133,7 +141,9 @@ module Homebrew formulae_checked = formulae_and_casks_to_check.map.with_index do |formula_or_cask, i| formula = formula_or_cask if formula_or_cask.is_a?(Formula) cask = formula_or_cask if formula_or_cask.is_a?(Cask::Cask) - name = formula_or_cask_name(formula_or_cask, full_name: full_name) + + use_full_name = full_name || ambiguous_names.include?(formula_or_cask) + name = formula_or_cask_name(formula_or_cask, full_name: use_full_name) if debug && i.positive? puts <<~EOS @@ -145,7 +155,7 @@ module Homebrew puts end - skip_info = SkipConditions.skip_information(formula_or_cask, full_name: full_name, verbose: verbose) + skip_info = SkipConditions.skip_information(formula_or_cask, full_name: use_full_name, verbose: verbose) if skip_info.present? next skip_info if json @@ -177,7 +187,7 @@ module Homebrew else version_info = latest_version( formula_or_cask, - json: json, full_name: full_name, verbose: verbose, debug: debug, + json: json, full_name: use_full_name, verbose: verbose, debug: debug, ) version_info[:latest] if version_info.present? end @@ -188,7 +198,7 @@ module Homebrew next version_info if version_info.is_a?(Hash) && version_info[:status] && version_info[:messages] - next status_hash(formula_or_cask, "error", [no_versions_msg], full_name: full_name, verbose: verbose) + next status_hash(formula_or_cask, "error", [no_versions_msg], full_name: use_full_name, verbose: verbose) end if (m = latest.to_s.match(/(.*)-release$/)) && !current.to_s.match(/.*-release$/) @@ -237,12 +247,13 @@ module Homebrew nil rescue => e Homebrew.failed = true + use_full_name = full_name || ambiguous_names.include?(formula_or_cask) if json progress&.increment - status_hash(formula_or_cask, "error", [e.to_s], full_name: full_name, verbose: verbose) + status_hash(formula_or_cask, "error", [e.to_s], full_name: use_full_name, verbose: verbose) elsif !quiet - name = formula_or_cask_name(formula_or_cask, full_name: full_name) + name = formula_or_cask_name(formula_or_cask, full_name: use_full_name) name += " (cask)" if ambiguous_casks.include?(formula_or_cask) onoe "#{Tty.blue}#{name}#{Tty.reset}: #{e}"