def download_package(package)
version_page_url = "#{URL_BASE}/#{package}"
version_page = agent.get(version_page_url)
latest_version_link = version_page.links.sort_by do |link|
if /\A(\d+\.\d+)\/\z/ =~ link.href
$1.split(/\./).collect {|component| component.to_i}
else
[-1]
end
end.last
escaped_package = Regexp.escape(package)
latest_version_page = latest_version_link.click
latest_version = latest_version_page.links.collect do |link|
case link.href
when /#{escaped_package}_([\d\.\-]+)_win32\.zip\z/,
/#{escaped_package}-([\d\.\-]+)-win32\.zip\z/,
/#{escaped_package}-([\d\.\-]+)\.zip\z/
version = $1
normalized_version = version.split(/[\.\-]/).collect do |component|
component.to_i
end
[normalized_version, version]
else
[[-1], nil]
end
end.sort_by do |normalized_version, version|
normalized_version
end.last[1]
if latest_version.nil?
raise "can't find package: <#{package}>:<#{version_page_url}>"
end
escaped_latest_version = Regexp.escape(latest_version)
latest_version_page.links.each do |link|
case link.href
when /#{escaped_package}(?:-dev)?_#{escaped_latest_version}_win32\.zip\z/,
/#{escaped_package}(?:-dev)?-#{escaped_latest_version}-win32\.zip\z/,
/#{escaped_package}(?:-dev)?-#{escaped_latest_version}\.zip\z/
click_zip_link(link)
end
end
end