aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew
diff options
context:
space:
mode:
authorAdam Vandenberg2010-10-17 17:21:03 -0700
committerAdam Vandenberg2010-10-17 17:21:21 -0700
commit560408d01b5b2bba26bc0926802246687e48911b (patch)
treeda5b70b39765deb9dd27c1164a20b35fda497647 /Library/Homebrew
parentdbd7f1c855c9dce45a464ed4197e1f107a336c0c (diff)
downloadbrew-560408d01b5b2bba26bc0926802246687e48911b.tar.bz2
Use classes instead of strings for exceptions
Diffstat (limited to 'Library/Homebrew')
-rw-r--r--Library/Homebrew/extend/ARGV.rb22
1 files changed, 20 insertions, 2 deletions
diff --git a/Library/Homebrew/extend/ARGV.rb b/Library/Homebrew/extend/ARGV.rb
index 9c6aaf1f0..a4189e73b 100644
--- a/Library/Homebrew/extend/ARGV.rb
+++ b/Library/Homebrew/extend/ARGV.rb
@@ -2,6 +2,24 @@ class UsageError <RuntimeError; end
class FormulaUnspecifiedError <UsageError; end
class KegUnspecifiedError <UsageError; end
+class MultipleVersionsInstalledError <RuntimeError
+ attr :name
+
+ def initialize name
+ @name = name
+ super "#{name} has multiple installed versions"
+ end
+end
+
+class NoSuchKegError <RuntimeError
+ attr :name
+
+ def initialize name
+ @name = name
+ super "No such keg: #{HOMEBREW_CELLAR}/#{name}"
+ end
+end
+
module HomebrewArgvExtension
def named
@named ||= reject{|arg| arg[0..0] == '-'}
@@ -24,8 +42,8 @@ module HomebrewArgvExtension
@kegs ||= downcased_unique_named.collect do |name|
d = HOMEBREW_CELLAR + Formula.resolve_alias(name)
dirs = d.children.select{ |pn| pn.directory? } rescue []
- raise "No such keg: #{HOMEBREW_CELLAR}/#{name}" if not d.directory? or dirs.length == 0
- raise "#{name} has multiple installed versions" if dirs.length > 1
+ raise NoSuchKegError.new(name) if not d.directory? or dirs.length == 0
+ raise MultipleVersionsInstalledError.new(name) if dirs.length > 1
Keg.new dirs.first
end
raise KegUnspecifiedError if @kegs.empty?