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?
|
return if formulae.blank?
|
||||||
|
|
||||||
ohai "New Formulae"
|
ohai "New Formulae"
|
||||||
|
should_display_descriptions = if Homebrew::EnvConfig.no_install_from_api?
|
||||||
|
formulae.size <= 100
|
||||||
|
else
|
||||||
|
true
|
||||||
|
end
|
||||||
formulae.each do |formula|
|
formulae.each do |formula|
|
||||||
if (desc = description(formula))
|
if should_display_descriptions && (desc = description(formula))
|
||||||
puts "#{formula}: #{desc}"
|
puts "#{formula}: #{desc}"
|
||||||
else
|
else
|
||||||
puts formula
|
puts formula
|
||||||
@ -882,17 +887,21 @@ class ReporterHub
|
|||||||
def dump_new_cask_report
|
def dump_new_cask_report
|
||||||
return unless Cask::Caskroom.any_casks_installed?
|
return unless Cask::Caskroom.any_casks_installed?
|
||||||
|
|
||||||
casks = select_formula_or_cask(:AC).sort.filter_map do |name|
|
casks = select_formula_or_cask(:AC).sort.reject { |name| cask_installed?(name) }
|
||||||
name.split("/").last unless cask_installed?(name)
|
|
||||||
end
|
|
||||||
return if casks.blank?
|
return if casks.blank?
|
||||||
|
|
||||||
ohai "New Casks"
|
ohai "New Casks"
|
||||||
|
should_display_descriptions = if Homebrew::EnvConfig.no_install_from_api?
|
||||||
|
casks.size <= 100
|
||||||
|
else
|
||||||
|
true
|
||||||
|
end
|
||||||
casks.each do |cask|
|
casks.each do |cask|
|
||||||
if (desc = cask_description(cask))
|
cask_token = T.must(cask.split("/").last)
|
||||||
puts "#{cask}: #{desc}"
|
if should_display_descriptions && (desc = cask_description(cask))
|
||||||
|
puts "#{cask_token}: #{desc}"
|
||||||
else
|
else
|
||||||
puts cask
|
puts cask_token
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -930,25 +939,11 @@ class ReporterHub
|
|||||||
(HOMEBREW_CELLAR/formula.split("/").last).directory?
|
(HOMEBREW_CELLAR/formula.split("/").last).directory?
|
||||||
end
|
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) }
|
sig { params(cask: String).returns(T::Boolean) }
|
||||||
def cask_installed?(cask)
|
def cask_installed?(cask)
|
||||||
(Cask::Caskroom.path/cask).directory?
|
(Cask::Caskroom.path/cask).directory?
|
||||||
end
|
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]) }
|
sig { returns(T::Array[T.untyped]) }
|
||||||
def all_formula_json
|
def all_formula_json
|
||||||
return @all_formula_json if @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)) }
|
sig { params(formula: String).returns(T.nilable(String)) }
|
||||||
def description(formula)
|
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 }
|
Formula[formula].desc&.presence
|
||||||
&.fetch("desc", nil)
|
else
|
||||||
&.presence
|
all_formula_json.find { |f| f["name"] == formula }
|
||||||
|
&.fetch("desc", nil)
|
||||||
|
&.presence
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
sig { params(cask: String).returns(T.nilable(String)) }
|
sig { params(cask: String).returns(T.nilable(String)) }
|
||||||
def cask_description(cask)
|
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 }
|
Cask::CaskLoader.load(cask).desc&.presence
|
||||||
&.fetch("desc", nil)
|
else
|
||||||
&.presence
|
all_cask_json.find { |f| f["token"] == cask }
|
||||||
|
&.fetch("desc", nil)
|
||||||
|
&.presence
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -155,7 +155,7 @@ RSpec.describe Homebrew::Cmd::UpdateReport do
|
|||||||
end
|
end
|
||||||
|
|
||||||
it "dumps new casks report" do
|
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: [
|
allow(hub).to receive_messages(cask_installed?: false, all_cask_json: [
|
||||||
{ "token" => "cask1", "desc" => "desc1" },
|
{ "token" => "cask1", "desc" => "desc1" },
|
||||||
{ "token" => "cask3", "desc" => "desc3" },
|
{ "token" => "cask3", "desc" => "desc3" },
|
||||||
@ -165,7 +165,7 @@ RSpec.describe Homebrew::Cmd::UpdateReport do
|
|||||||
==> New Casks
|
==> New Casks
|
||||||
cask1: desc1
|
cask1: desc1
|
||||||
cask2
|
cask2
|
||||||
cask3: desc3
|
cask3
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user