mirror support: External command for mirror tests
`brew mirror-check <formula...>` will process a list of Formulae and check their mirrors to see if they are reachable and the MD5 sums are valid.
This commit is contained in:
parent
3ada407922
commit
aa6f96003b
55
Library/Contributions/examples/brew-mirror-check.rb
Executable file
55
Library/Contributions/examples/brew-mirror-check.rb
Executable file
@ -0,0 +1,55 @@
|
|||||||
|
require 'formula'
|
||||||
|
|
||||||
|
class Formula
|
||||||
|
def test_mirror mirror
|
||||||
|
url, specs = mirror.values_at :url, :specs
|
||||||
|
downloader = download_strategy.new url, name, version, specs
|
||||||
|
|
||||||
|
# Force the downloader to attempt the download by removing the tarball if
|
||||||
|
# it is allready cached.
|
||||||
|
tarball_path = downloader.tarball_path
|
||||||
|
tarball_path.unlink if tarball_path.exist?
|
||||||
|
|
||||||
|
begin
|
||||||
|
fetched = downloader.fetch
|
||||||
|
rescue DownloadError => e
|
||||||
|
opoo "Failed to fetch from URL: #{url}"
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
verify_download_integrity fetched if fetched.kind_of? Pathname
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
module Homebrew extend self
|
||||||
|
def check_mirrors
|
||||||
|
mirror_check_usage = <<-EOS
|
||||||
|
Usage: brew mirror-check <formulae ...>
|
||||||
|
|
||||||
|
Cycle through mirror lists for each formula, attempt a download and validate
|
||||||
|
MD5 sums.
|
||||||
|
EOS
|
||||||
|
|
||||||
|
if ARGV.empty?
|
||||||
|
puts mirror_check_usage
|
||||||
|
exit 0
|
||||||
|
end
|
||||||
|
|
||||||
|
formulae = ARGV.formulae
|
||||||
|
raise FormulaUnspecifiedError if formulae.empty?
|
||||||
|
|
||||||
|
formulae.each do |f|
|
||||||
|
if f.mirrors.empty?
|
||||||
|
opoo "#{f.name} has no mirrors"
|
||||||
|
next
|
||||||
|
else
|
||||||
|
oh1 "Testing mirrors for #{f.name}"
|
||||||
|
f.mirrors.each{ |m| f.test_mirror m }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# Here is the actual code that gets run when `brew` loads this external
|
||||||
|
# command.
|
||||||
|
Homebrew.check_mirrors
|
Loading…
x
Reference in New Issue
Block a user