Handle Sparkle appcast which specify the version next to the enclosure.
This commit is contained in:
parent
5ae726e2b4
commit
a8d893f134
@ -46,20 +46,34 @@ module Homebrew
|
|||||||
|
|
||||||
contents = Strategy.page_contents(url)
|
contents = Strategy.page_contents(url)
|
||||||
|
|
||||||
xml = Nokogiri.parse(contents)
|
xml = Nokogiri::XML(contents)
|
||||||
xml.remove_namespaces!
|
xml.remove_namespaces!
|
||||||
|
|
||||||
enclosure =
|
items = xml.xpath("//rss//channel//item").map do |item|
|
||||||
xml.xpath("//rss//channel//item//enclosure")
|
enclosure = (item > "enclosure").first
|
||||||
.map { |e| { url: e["url"], version: BundleVersion.new(e["shortVersionString"], e["version"]) } }
|
|
||||||
.max_by { |e| e[:version] }
|
|
||||||
|
|
||||||
if enclosure
|
next unless enclosure
|
||||||
|
|
||||||
|
short_version ||= enclosure["shortVersionString"]
|
||||||
|
version ||= enclosure["version"]
|
||||||
|
|
||||||
|
short_version ||= (item > "shortVersionString").first&.text
|
||||||
|
version ||= (item > "version").first&.text
|
||||||
|
|
||||||
|
{
|
||||||
|
url: enclosure["url"],
|
||||||
|
version: BundleVersion.new(short_version, version),
|
||||||
|
}
|
||||||
|
end.compact
|
||||||
|
|
||||||
|
item = items.max_by { |e| e[:version] }
|
||||||
|
|
||||||
|
if item
|
||||||
match = if block
|
match = if block
|
||||||
enclosure[:version] = enclosure[:version].nice_version
|
item[:version] = item[:version].nice_version
|
||||||
block.call(enclosure).to_s
|
block.call(item).to_s
|
||||||
else
|
else
|
||||||
enclosure[:version].nice_version
|
item[:version].nice_version
|
||||||
end
|
end
|
||||||
|
|
||||||
match_data[:matches][match] = Version.new(match)
|
match_data[:matches][match] = Version.new(match)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user