livecheck: compare actual version for casks

This commit is contained in:
Seeker 2021-01-17 11:24:52 -08:00
parent 8869208a60
commit 94a33b1d2e

View File

@ -149,6 +149,9 @@ module Homebrew
Version.new(formula_or_cask.version) Version.new(formula_or_cask.version)
end end
current_str = current.to_s
current = actual_version(formula_or_cask, current)
latest = if formula&.head_only? latest = if formula&.head_only?
formula.head.downloader.fetch_last_commit formula.head.downloader.fetch_last_commit
else else
@ -172,6 +175,9 @@ module Homebrew
latest = Version.new(m[1]) latest = Version.new(m[1])
end end
latest_str = latest.to_s
latest = actual_version(formula_or_cask, latest)
is_outdated = if formula&.head_only? is_outdated = if formula&.head_only?
# A HEAD-only formula is considered outdated if the latest upstream # A HEAD-only formula is considered outdated if the latest upstream
# commit hash is different than the installed version's commit hash # commit hash is different than the installed version's commit hash
@ -186,8 +192,8 @@ module Homebrew
info[:formula] = name if formula info[:formula] = name if formula
info[:cask] = name if cask info[:cask] = name if cask
info[:version] = { info[:version] = {
current: current.to_s, current: current_str,
latest: latest.to_s, latest: latest_str,
outdated: is_outdated, outdated: is_outdated,
newer_than_upstream: is_newer_than_upstream, newer_than_upstream: is_newer_than_upstream,
} }
@ -243,6 +249,8 @@ module Homebrew
formula_name(formula_or_cask, full_name: full_name) formula_name(formula_or_cask, full_name: full_name)
when Cask::Cask when Cask::Cask
cask_name(formula_or_cask, full_name: full_name) cask_name(formula_or_cask, full_name: full_name)
else
T.absurd(formula_or_cask)
end end
end end
@ -347,6 +355,8 @@ module Homebrew
urls << formula_or_cask.appcast.to_s if formula_or_cask.appcast urls << formula_or_cask.appcast.to_s if formula_or_cask.appcast
urls << formula_or_cask.url.to_s if formula_or_cask.url urls << formula_or_cask.url.to_s if formula_or_cask.url
urls << formula_or_cask.homepage if formula_or_cask.homepage urls << formula_or_cask.homepage if formula_or_cask.homepage
else
T.absurd(formula_or_cask)
end end
urls.compact urls.compact
@ -536,7 +546,7 @@ module Homebrew
next if match_version_map.blank? next if match_version_map.blank?
version_info = { version_info = {
latest: Version.new(match_version_map.values.max), latest: Version.new(match_version_map.values.max_by { |v| actual_version(formula_or_cask, v) }),
} }
if json && verbose if json && verbose
@ -560,5 +570,17 @@ module Homebrew
nil nil
end end
sig { params(formula_or_cask: T.any(Formula, Cask::Cask), version: Version).returns(Version) }
def actual_version(formula_or_cask, version)
case formula_or_cask
when Formula
version
when Cask::Cask
Version.new(Cask::DSL::Version.new(version.to_s).before_comma)
else
T.absurd(formula_or_cask)
end
end
end end
end end