aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Afanasjew2016-04-16 20:57:03 +0200
committerMartin Afanasjew2016-04-17 21:16:01 +0200
commit1ded40a7441c66fa3127f0129403bf03a7db4561 (patch)
treee69b63bfc64d8823bf15874d93374393ad50663e
parentfeb1e75b615d8ec10c06a1b8070fca77c5bc6334 (diff)
downloadbrew-1ded40a7441c66fa3127f0129403bf03a7db4561.tar.bz2
exceptions: add FormulaClassUnavailableError
-rw-r--r--Library/Homebrew/exceptions.rb37
1 files changed, 37 insertions, 0 deletions
diff --git a/Library/Homebrew/exceptions.rb b/Library/Homebrew/exceptions.rb
index dfd60549d..130d3f505 100644
--- a/Library/Homebrew/exceptions.rb
+++ b/Library/Homebrew/exceptions.rb
@@ -68,6 +68,43 @@ class TapFormulaUnavailableError < FormulaUnavailableError
end
end
+class FormulaClassUnavailableError < FormulaUnavailableError
+ attr_reader :path
+ attr_reader :class_name
+ attr_reader :class_list
+
+ def initialize(name, path, class_name, class_list)
+ @path = path
+ @class_name = class_name
+ @class_list = class_list
+ super name
+ end
+
+ def to_s
+ s = super
+ s += "\nIn formula file: #{path}"
+ s += "\nExpected to find class #{class_name}, but #{class_list_s}."
+ s
+ end
+
+ private
+
+ def class_list_s
+ formula_class_list = class_list.select { |klass| klass < Formula }
+ if class_list.empty?
+ "found no classes"
+ elsif formula_class_list.empty?
+ "only found: #{format_list(class_list)} (not derived from Formula!)"
+ else
+ "only found: #{format_list(formula_class_list)}"
+ end
+ end
+
+ def format_list(class_list)
+ class_list.map { |klass| klass.name.split("::")[-1] }.join(", ")
+ end
+end
+
class TapFormulaAmbiguityError < RuntimeError
attr_reader :name, :paths, :formulae