Merge pull request #20496 from Homebrew/update-report-desc-non-api
cmd/update-report: show new formula/cask desc for non-API users too
This commit is contained in:
		
						commit
						e29749fcc2
					
				@ -869,8 +869,13 @@ class ReporterHub
 | 
			
		||||
    return if formulae.blank?
 | 
			
		||||
 | 
			
		||||
    ohai "New Formulae"
 | 
			
		||||
    should_display_descriptions = if Homebrew::EnvConfig.no_install_from_api?
 | 
			
		||||
      formulae.size <= 100
 | 
			
		||||
    else
 | 
			
		||||
      true
 | 
			
		||||
    end
 | 
			
		||||
    formulae.each do |formula|
 | 
			
		||||
      if (desc = description(formula))
 | 
			
		||||
      if should_display_descriptions && (desc = description(formula))
 | 
			
		||||
        puts "#{formula}: #{desc}"
 | 
			
		||||
      else
 | 
			
		||||
        puts formula
 | 
			
		||||
@ -882,17 +887,21 @@ class ReporterHub
 | 
			
		||||
  def dump_new_cask_report
 | 
			
		||||
    return unless Cask::Caskroom.any_casks_installed?
 | 
			
		||||
 | 
			
		||||
    casks = select_formula_or_cask(:AC).sort.filter_map do |name|
 | 
			
		||||
      name.split("/").last unless cask_installed?(name)
 | 
			
		||||
    end
 | 
			
		||||
    casks = select_formula_or_cask(:AC).sort.reject { |name| cask_installed?(name) }
 | 
			
		||||
    return if casks.blank?
 | 
			
		||||
 | 
			
		||||
    ohai "New Casks"
 | 
			
		||||
    should_display_descriptions = if Homebrew::EnvConfig.no_install_from_api?
 | 
			
		||||
      casks.size <= 100
 | 
			
		||||
    else
 | 
			
		||||
      true
 | 
			
		||||
    end
 | 
			
		||||
    casks.each do |cask|
 | 
			
		||||
      if (desc = cask_description(cask))
 | 
			
		||||
        puts "#{cask}: #{desc}"
 | 
			
		||||
      cask_token = T.must(cask.split("/").last)
 | 
			
		||||
      if should_display_descriptions && (desc = cask_description(cask))
 | 
			
		||||
        puts "#{cask_token}: #{desc}"
 | 
			
		||||
      else
 | 
			
		||||
        puts cask
 | 
			
		||||
        puts cask_token
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
@ -930,25 +939,11 @@ class ReporterHub
 | 
			
		||||
    (HOMEBREW_CELLAR/formula.split("/").last).directory?
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  sig { params(formula: String).returns(T::Boolean) }
 | 
			
		||||
  def outdated?(formula)
 | 
			
		||||
    Formula[formula].outdated?
 | 
			
		||||
  rescue FormulaUnavailableError
 | 
			
		||||
    false
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  sig { params(cask: String).returns(T::Boolean) }
 | 
			
		||||
  def cask_installed?(cask)
 | 
			
		||||
    (Cask::Caskroom.path/cask).directory?
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  sig { params(cask: String).returns(T::Boolean) }
 | 
			
		||||
  def cask_outdated?(cask)
 | 
			
		||||
    Cask::CaskLoader.load(cask).outdated?
 | 
			
		||||
  rescue Cask::CaskError
 | 
			
		||||
    false
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  sig { returns(T::Array[T.untyped]) }
 | 
			
		||||
  def all_formula_json
 | 
			
		||||
    return @all_formula_json if @all_formula_json
 | 
			
		||||
@ -971,19 +966,29 @@ class ReporterHub
 | 
			
		||||
 | 
			
		||||
  sig { params(formula: String).returns(T.nilable(String)) }
 | 
			
		||||
  def description(formula)
 | 
			
		||||
    return if Homebrew::EnvConfig.no_install_from_api?
 | 
			
		||||
    if Homebrew::EnvConfig.no_install_from_api?
 | 
			
		||||
      # Skip non-homebrew/core formulae for security.
 | 
			
		||||
      return if formula.include?("/")
 | 
			
		||||
 | 
			
		||||
    all_formula_json.find { |f| f["name"] == formula }
 | 
			
		||||
                    &.fetch("desc", nil)
 | 
			
		||||
                    &.presence
 | 
			
		||||
      Formula[formula].desc&.presence
 | 
			
		||||
    else
 | 
			
		||||
      all_formula_json.find { |f| f["name"] == formula }
 | 
			
		||||
                      &.fetch("desc", nil)
 | 
			
		||||
                      &.presence
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  sig { params(cask: String).returns(T.nilable(String)) }
 | 
			
		||||
  def cask_description(cask)
 | 
			
		||||
    return if Homebrew::EnvConfig.no_install_from_api?
 | 
			
		||||
    if Homebrew::EnvConfig.no_install_from_api?
 | 
			
		||||
      # Skip non-homebrew/cask formulae for security.
 | 
			
		||||
      return if cask.include?("/")
 | 
			
		||||
 | 
			
		||||
    all_cask_json.find { |f| f["token"] == cask }
 | 
			
		||||
                 &.fetch("desc", nil)
 | 
			
		||||
                 &.presence
 | 
			
		||||
      Cask::CaskLoader.load(cask).desc&.presence
 | 
			
		||||
    else
 | 
			
		||||
      all_cask_json.find { |f| f["token"] == cask }
 | 
			
		||||
                   &.fetch("desc", nil)
 | 
			
		||||
                   &.presence
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
@ -155,7 +155,7 @@ RSpec.describe Homebrew::Cmd::UpdateReport do
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    it "dumps new casks report" do
 | 
			
		||||
      allow(hub).to receive(:select_formula_or_cask).with(:AC).and_return(["foo/cask1", "foo/cask2", "foo/cask3"])
 | 
			
		||||
      allow(hub).to receive(:select_formula_or_cask).with(:AC).and_return(["cask1", "cask2", "foo/tap/cask3"])
 | 
			
		||||
      allow(hub).to receive_messages(cask_installed?: false, all_cask_json: [
 | 
			
		||||
        { "token" => "cask1", "desc" => "desc1" },
 | 
			
		||||
        { "token" => "cask3", "desc" => "desc3" },
 | 
			
		||||
@ -165,7 +165,7 @@ RSpec.describe Homebrew::Cmd::UpdateReport do
 | 
			
		||||
        ==> New Casks
 | 
			
		||||
        cask1: desc1
 | 
			
		||||
        cask2
 | 
			
		||||
        cask3: desc3
 | 
			
		||||
        cask3
 | 
			
		||||
      EOS
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user