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