diff options
Diffstat (limited to 'Library/Homebrew')
| -rw-r--r-- | Library/Homebrew/cmd/upgrade.rb | 2 | ||||
| -rw-r--r-- | Library/Homebrew/exceptions.rb | 7 | ||||
| -rw-r--r-- | Library/Homebrew/resource.rb | 12 |
3 files changed, 17 insertions, 4 deletions
diff --git a/Library/Homebrew/cmd/upgrade.rb b/Library/Homebrew/cmd/upgrade.rb index a68830a94..7682922b4 100644 --- a/Library/Homebrew/cmd/upgrade.rb +++ b/Library/Homebrew/cmd/upgrade.rb @@ -92,6 +92,8 @@ module Homebrew extend self e.dump puts Homebrew.failed = true + rescue DownloadError => e + ofail e ensure # restore previous installation state if build failed outdated_keg.link if outdated_keg and not f.installed? rescue nil diff --git a/Library/Homebrew/exceptions.rb b/Library/Homebrew/exceptions.rb index 66123d9f0..926407be7 100644 --- a/Library/Homebrew/exceptions.rb +++ b/Library/Homebrew/exceptions.rb @@ -229,6 +229,13 @@ class CompilerSelectionError < Homebrew::InstallationError end end +# Raised in Resource.fetch +class DownloadError < RuntimeError + def initialize(formula) + super "Failed to download resource for package: #{formula}" + end +end + # raised in CurlDownloadStrategy.fetch class CurlDownloadStrategyError < RuntimeError; end diff --git a/Library/Homebrew/resource.rb b/Library/Homebrew/resource.rb index 490c5dfb4..e0daf4a48 100644 --- a/Library/Homebrew/resource.rb +++ b/Library/Homebrew/resource.rb @@ -76,10 +76,14 @@ class Resource # For brew-fetch and others. def fetch - # Ensure the cache exists - HOMEBREW_CACHE.mkpath - downloader.fetch - cached_download + begin + # Ensure the cache exists + HOMEBREW_CACHE.mkpath + downloader.fetch + cached_download + rescue ErrorDuringExecution, CurlDownloadStrategyError => e + raise DownloadError.new(downloader.name) + end end def verify_download_integrity fn |
