livecheck: convert head-only strings to Versions

`brew livecheck` currently gives a Sorbet type error when run on a
HEAD-only formula: `Parameter 'version': Expected type Version, got
type String with value "c06c10d"`. This happens because the `current`
and `latest` values are strings but `LivecheckVersion#create` expects
a `Version` object.

This addresses the issue by creating a `Version` object from the
related commit strings. This ensures that the type of these variables
is more uniform, which makes them easier to reason about.
This commit is contained in:
Sam Ford 2024-07-25 10:21:42 -04:00
parent 31f4570cc2
commit f23d0ce373
No known key found for this signature in database
GPG Key ID: 7AF5CBEE1DD6F76D

View File

@ -270,7 +270,7 @@ module Homebrew
# comparison.
current = if formula
if formula.head_only?
formula.any_installed_version.version.commit
Version.new(formula.any_installed_version.version.commit)
else
T.must(formula.stable).version
end
@ -279,10 +279,10 @@ module Homebrew
end
current_str = current.to_s
current = LivecheckVersion.create(formula_or_cask, current) unless formula&.head_only?
current = LivecheckVersion.create(formula_or_cask, current)
latest = if formula&.head_only?
T.must(formula.head).downloader.fetch_last_commit
Version.new(T.must(formula.head).downloader.fetch_last_commit)
else
version_info = latest_version(
formula_or_cask,
@ -345,7 +345,7 @@ module Homebrew
end
latest_str = latest.to_s
latest = LivecheckVersion.create(formula_or_cask, latest) unless formula&.head_only?
latest = LivecheckVersion.create(formula_or_cask, latest)
is_outdated = if formula&.head_only?
# A HEAD-only formula is considered outdated if the latest upstream