Skip to content

Commit

Permalink
Merge pull request Homebrew#10348 from SeekingMeaning/livecheck-actua…
Browse files Browse the repository at this point in the history
…l-version

livecheck: compare actual version for casks
  • Loading branch information
SeekingMeaning authored Jan 20, 2021
2 parents e172f07 + 94a33b1 commit e42e981
Showing 1 changed file with 25 additions and 3 deletions.
28 changes: 25 additions & 3 deletions Library/Homebrew/livecheck/livecheck.rb
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,9 @@ def run_checks(
Version.new(formula_or_cask.version)
end

current_str = current.to_s
current = actual_version(formula_or_cask, current)

latest = if formula&.head_only?
formula.head.downloader.fetch_last_commit
else
Expand All @@ -172,6 +175,9 @@ def run_checks(
latest = Version.new(m[1])
end

latest_str = latest.to_s
latest = actual_version(formula_or_cask, latest)

is_outdated = if formula&.head_only?
# A HEAD-only formula is considered outdated if the latest upstream
# commit hash is different than the installed version's commit hash
Expand All @@ -186,8 +192,8 @@ def run_checks(
info[:formula] = name if formula
info[:cask] = name if cask
info[:version] = {
current: current.to_s,
latest: latest.to_s,
current: current_str,
latest: latest_str,
outdated: is_outdated,
newer_than_upstream: is_newer_than_upstream,
}
Expand Down Expand Up @@ -243,6 +249,8 @@ def formula_or_cask_name(formula_or_cask, full_name: false)
formula_name(formula_or_cask, full_name: full_name)
when Cask::Cask
cask_name(formula_or_cask, full_name: full_name)
else
T.absurd(formula_or_cask)
end
end

Expand Down Expand Up @@ -347,6 +355,8 @@ def checkable_urls(formula_or_cask)
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.homepage if formula_or_cask.homepage
else
T.absurd(formula_or_cask)
end

urls.compact
Expand Down Expand Up @@ -536,7 +546,7 @@ def latest_version(formula_or_cask, json: false, full_name: false, verbose: fals
next if match_version_map.blank?

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
Expand All @@ -560,5 +570,17 @@ def latest_version(formula_or_cask, json: false, full_name: false, verbose: fals

nil
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

0 comments on commit e42e981

Please sign in to comment.