aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Library/Homebrew/cmd/upgrade.rb2
-rw-r--r--Library/Homebrew/exceptions.rb7
-rw-r--r--Library/Homebrew/resource.rb12
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