def download_dependency(dependency)
dependency_version = "any"
dependency_version_re = /[\d\.\-]+/
if dependency.is_a?(Array)
dependency, dependency_version = dependency
dependency_version_re = /#{Regexp.escape(dependency_version)}/
end
escaped_dependency = Regexp.escape(dependency)
dependencies_url = "#{URL_BASE}/dependencies"
dependencies_page = agent.get(dependencies_url)
latest_version = dependencies_page.links.collect do |link|
case link.href
when /\A#{escaped_dependency}_(#{dependency_version_re})_win32\.zip\z/
version = $1
[version.split(/[\.\-]/).collect {|component| component.to_i}, version]
else
[[-1], nil]
end
end.sort_by do |normalized_version, version|
normalized_version
end.last[1]
if latest_version.nil?
message = "can't find dependency package: " +
"<#{dependency}>(#{dependency_version}):<#{dependencies_url}>"
raise message
end
escaped_latest_version = Regexp.escape(latest_version)
dependencies_page.links.each do |link|
case link.href
when /\A#{escaped_dependency}(?:-dev)?_#{escaped_latest_version}_win32.zip/
click_zip_link(link)
end
end
end