diff options
| -rw-r--r-- | Library/Homebrew/extend/ARGV.rb | 22 |
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? |
