Fixed output issue

This commit is contained in:
Mohammad Zain Abbas 2022-09-14 04:54:52 +02:00
parent 8496ca0416
commit 7a627565ac
2 changed files with 77 additions and 43 deletions

View File

@ -126,11 +126,11 @@ module Homebrew
if debug if debug
# Print the chain of references for debugging # Print the chain of references for debugging
puts "Reference Chain:" puts "Reference Chain:"
puts formula_or_cask_name(first_formula_or_cask, full_name: full_name) puts package_or_resource_name(first_formula_or_cask, full_name: full_name)
references << referenced_formula_or_cask references << referenced_formula_or_cask
references.each do |ref_formula_or_cask| references.each do |ref_formula_or_cask|
puts formula_or_cask_name(ref_formula_or_cask, full_name: full_name) puts package_or_resource_name(ref_formula_or_cask, full_name: full_name)
end end
end end
@ -179,17 +179,18 @@ module Homebrew
ambiguous_casks = [] ambiguous_casks = []
if handle_name_conflict if handle_name_conflict
ambiguous_casks = formulae_and_casks_to_check.group_by { |item| formula_or_cask_name(item, full_name: true) } ambiguous_casks = formulae_and_casks_to_check \
.values .group_by { |item| package_or_resource_name(item, full_name: true) }
.select { |items| items.length > 1 } .values
.flatten .select { |items| items.length > 1 }
.select { |item| item.is_a?(Cask::Cask) } .flatten
.select { |item| item.is_a?(Cask::Cask) }
end end
ambiguous_names = [] ambiguous_names = []
unless full_name unless full_name
ambiguous_names = ambiguous_names =
(formulae_and_casks_to_check - ambiguous_casks).group_by { |item| formula_or_cask_name(item) } (formulae_and_casks_to_check - ambiguous_casks).group_by { |item| package_or_resource_name(item) }
.values .values
.select { |items| items.length > 1 } .select { |items| items.length > 1 }
.flatten .flatten
@ -219,7 +220,7 @@ module Homebrew
cask = formula_or_cask if formula_or_cask.is_a?(Cask::Cask) cask = formula_or_cask if formula_or_cask.is_a?(Cask::Cask)
use_full_name = full_name || ambiguous_names.include?(formula_or_cask) use_full_name = full_name || ambiguous_names.include?(formula_or_cask)
name = formula_or_cask_name(formula_or_cask, full_name: use_full_name) name = package_or_resource_name(formula_or_cask, full_name: use_full_name)
referenced_formula_or_cask, livecheck_references = referenced_formula_or_cask, livecheck_references =
resolve_livecheck_reference(formula_or_cask, full_name: use_full_name, debug: debug) resolve_livecheck_reference(formula_or_cask, full_name: use_full_name, debug: debug)
@ -244,11 +245,31 @@ module Homebrew
) )
end end
# Check current and latest resources (if "--resources" flag is given)
# Only check current and latest versions if we have resources to check against
check_for_resources = check_resources && formula_or_cask.is_a?(Formula) && formula_or_cask.resources.present?
if check_for_resources
resource_version_info = formula_or_cask.resources.map do |resource|
res_skip_info ||= SkipConditions.skip_information(resource, verbose: verbose)
if res_skip_info.present?
res_skip_info
else
resource_version(
resource,
json: json,
verbose: verbose,
debug: debug,
)
end
end.compact
end
skip_info ||= SkipConditions.skip_information(formula_or_cask, full_name: use_full_name, verbose: verbose) skip_info ||= SkipConditions.skip_information(formula_or_cask, full_name: use_full_name, verbose: verbose)
if skip_info.present? if skip_info.present?
next skip_info if json && !newer_only next skip_info if json && !newer_only
SkipConditions.print_skip_information(skip_info) if !newer_only && !quiet SkipConditions.print_skip_information(skip_info) if !newer_only && !quiet
print_resources_info(resource_version_info, verbose: verbose) if check_for_resources
next next
end end
@ -283,20 +304,6 @@ module Homebrew
version_info[:latest] if version_info.present? version_info[:latest] if version_info.present?
end end
# Check current and latest resources (if "--resources" flag is given)
# Only check current and latest versions if we have resources to check against
check_for_resources = check_resources && formula_or_cask.is_a?(Formula) && formula_or_cask.resources.present?
if check_for_resources
resource_version_info = formula_or_cask.resources.map do |resource|
resource_version(
resource,
json: json,
verbose: verbose,
debug: debug,
)
end
end
if latest.blank? if latest.blank?
no_versions_msg = "Unable to get versions" no_versions_msg = "Unable to get versions"
raise Livecheck::Error, no_versions_msg unless json raise Livecheck::Error, no_versions_msg unless json
@ -353,17 +360,7 @@ module Homebrew
end end
puts if debug puts if debug
print_latest_version(info, verbose: verbose, ambiguous_cask: ambiguous_casks.include?(formula_or_cask)) print_latest_version(info, verbose: verbose, ambiguous_cask: ambiguous_casks.include?(formula_or_cask))
print_resources_info(resource_version_info, verbose: verbose) if check_for_resources
if check_for_resources
resource_version_info.each do |r_info|
print_latest_version(
r_info,
verbose: verbose,
resource: true,
)
end
end
nil nil
rescue => e rescue => e
Homebrew.failed = true Homebrew.failed = true
@ -373,13 +370,18 @@ module Homebrew
progress&.increment progress&.increment
status_hash(formula_or_cask, "error", [e.to_s], full_name: use_full_name, verbose: verbose) unless quiet status_hash(formula_or_cask, "error", [e.to_s], full_name: use_full_name, verbose: verbose) unless quiet
elsif !quiet elsif !quiet
name = formula_or_cask_name(formula_or_cask, full_name: use_full_name) name = package_or_resource_name(formula_or_cask, full_name: use_full_name)
name += " (cask)" if ambiguous_casks.include?(formula_or_cask) name += " (cask)" if ambiguous_casks.include?(formula_or_cask)
onoe "#{Tty.blue}#{name}#{Tty.reset}: #{e}" onoe "#{Tty.blue}#{name}#{Tty.reset}: #{e}"
$stderr.puts e.backtrace if debug && !e.is_a?(Livecheck::Error) $stderr.puts e.backtrace if debug && !e.is_a?(Livecheck::Error)
nil nil
end end
if check_for_resources
next if resource_version_info.blank?
next unless resource_version_info.empty?
print_resources_info(resource_version_info, verbose: verbose)
end
end end
# rubocop:enable Metrics/BlockLength # rubocop:enable Metrics/BlockLength
@ -397,15 +399,17 @@ module Homebrew
puts JSON.pretty_generate(formulae_checked.compact) puts JSON.pretty_generate(formulae_checked.compact)
end end
sig { params(formula_or_cask: T.any(Formula, Cask::Cask), full_name: T::Boolean).returns(String) } sig { params(package_or_resource: T.any(Formula, Cask::Cask, Resource), full_name: T::Boolean).returns(String) }
def formula_or_cask_name(formula_or_cask, full_name: false) def package_or_resource_name(package_or_resource, full_name: false)
case formula_or_cask case package_or_resource
when Formula when Formula
formula_name(formula_or_cask, full_name: full_name) formula_name(package_or_resource, full_name: full_name)
when Cask::Cask when Cask::Cask
cask_name(formula_or_cask, full_name: full_name) cask_name(package_or_resource, full_name: full_name)
when Resource
package_or_resource.name
else else
T.absurd(formula_or_cask) T.absurd(package_or_resource)
end end
end end
@ -458,7 +462,7 @@ module Homebrew
# Formats and prints the livecheck result for a formula/cask/resource. # Formats and prints the livecheck result for a formula/cask/resource.
sig { params(info: Hash, verbose: T::Boolean, ambiguous_cask: T::Boolean, resource: T::Boolean).void } sig { params(info: Hash, verbose: T::Boolean, ambiguous_cask: T::Boolean, resource: T::Boolean).void }
def print_latest_version(info, verbose:, ambiguous_cask: false, resource: false) def print_latest_version(info, verbose:false, ambiguous_cask: false, resource: false)
package_or_resource_s = resource ? " " : "" package_or_resource_s = resource ? " " : ""
package_or_resource_s += "#{Tty.blue}#{info[:formula] || info[:cask] || info[:resource]}#{Tty.reset}" package_or_resource_s += "#{Tty.blue}#{info[:formula] || info[:cask] || info[:resource]}#{Tty.reset}"
package_or_resource_s += " (cask)" if ambiguous_cask package_or_resource_s += " (cask)" if ambiguous_cask
@ -479,6 +483,22 @@ module Homebrew
puts "#{package_or_resource_s}: #{current_s} ==> #{latest_s}" puts "#{package_or_resource_s}: #{current_s} ==> #{latest_s}"
end end
# Prints the livecheck result for a resources for a given Formula.
sig { params(info: Hash, verbose: T::Boolean).void }
def print_resources_info(info, verbose:false)
info.each do |r_info|
if r_info.is_a?(Hash) && r_info[:status] && r_info[:messages]
SkipConditions.print_skip_information(r_info)
else
print_latest_version(
r_info,
verbose: verbose,
resource: true,
)
end
end
end
sig { sig {
params( params(
livecheck_url: T.any(String, Symbol), livecheck_url: T.any(String, Symbol),
@ -742,6 +762,11 @@ module Homebrew
res_current = resource.version res_current = resource.version
res_latest = Version.new(match_version_map.values.max_by { |v| LivecheckVersion.create(resource, v) }) res_latest = Version.new(match_version_map.values.max_by { |v| LivecheckVersion.create(resource, v) })
if res_latest.to_s.blank?
return status_hash(resource, "error", ["Unable to get versions"], verbose: verbose)
end
is_newer_than_upstream = res_current > res_latest is_newer_than_upstream = res_current > res_latest
is_outdated = (res_current != res_latest) && !is_newer_than_upstream is_outdated = (res_current != res_latest) && !is_newer_than_upstream
@ -775,6 +800,14 @@ module Homebrew
res_livecheck[:regex] = regex.inspect if regex.present? res_livecheck[:regex] = regex.inspect if regex.present?
res_livecheck[:cached] = true if strategy_data[:cached] == true res_livecheck[:cached] = true if strategy_data[:cached] == true
resource_version_info[:meta][:livecheck] = res_livecheck resource_version_info[:meta][:livecheck] = res_livecheck
rescue => e
Homebrew.failed = true
if json
status_hash(resource, "error", [e.to_s], verbose: verbose)
elsif onoe "#{Tty.blue}#{resource.name}#{Tty.reset}: #{e}"
$stderr.puts e.backtrace if debug && !e.is_a?(Livecheck::Error)
nil
end
end end
# rubocop:enable Metrics/BlockLength # rubocop:enable Metrics/BlockLength
resource_version_info resource_version_info
@ -950,6 +983,7 @@ module Homebrew
end end
version_info = { version_info = {
# latest: {},
latest: Version.new(match_version_map.values.max_by { |v| LivecheckVersion.create(formula_or_cask, v) }), latest: Version.new(match_version_map.values.max_by { |v| LivecheckVersion.create(formula_or_cask, v) }),
} }

View File

@ -268,7 +268,7 @@ module Homebrew
elsif skip_hash[:cask].is_a?(String) elsif skip_hash[:cask].is_a?(String)
skip_hash[:cask] skip_hash[:cask]
elsif skip_hash[:resource].is_a?(String) elsif skip_hash[:resource].is_a?(String)
skip_hash[:resource] " #{skip_hash[:resource]}"
end end
return unless name return unless name