cask: audit for minimal OS version in sparkle feeds

This commit is contained in:
Sean Molenaar 2022-10-30 15:00:56 +01:00
parent 31758eaa02
commit 012bd1f134
No known key found for this signature in database
GPG Key ID: AAC1C7E1A4696A9A

View File

@ -545,6 +545,37 @@ module Cask
false false
end end
def check_livecheck_min_os
return unless cask.livecheckable?
return unless cask.livecheck.strategy == :sparkle
out, _, status = curl_output(cask.livecheck.url)
return unless status.success?
require "rexml/document"
xml = begin
REXML::Document.new(out)
rescue
nil
end
return if xml.blank?
item = xml.get_elements("//rss//channel//item").first
return if item.blank?
min_os = item.elements["sparkle:minimumSystemVersion"].text
return if min_os.blank?
min_os_string = OS::Mac::Version.new(min_os).strip_patch
cask_min_os = cask.depends_on.macos.version
return if cask_min_os == min_os_string
add_error "Upstream defined #{min_os_string} as minimal OS version and the cask defined #{cask_min_os}"
end
sig { void } sig { void }
def check_appcast_contains_version def check_appcast_contains_version
return unless appcast? return unless appcast?