exceptions: add reason to 'UsageError' exception
Use the `reason` attribute to be able to handle `UsageError` subclasses more uniformly and simplify logic in `brew.rb` to handle them together.
This commit is contained in:
parent
cf3486f98a
commit
d9363a1559
@ -1,6 +1,28 @@
|
|||||||
class UsageError < RuntimeError; end
|
class UsageError < RuntimeError
|
||||||
class FormulaUnspecifiedError < UsageError; end
|
attr_reader :reason
|
||||||
class KegUnspecifiedError < UsageError; end
|
|
||||||
|
def initialize(reason = nil)
|
||||||
|
@reason = reason
|
||||||
|
end
|
||||||
|
|
||||||
|
def to_s
|
||||||
|
s = "Invalid usage"
|
||||||
|
s += ": #{reason}" if reason
|
||||||
|
s
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
class FormulaUnspecifiedError < UsageError
|
||||||
|
def initialize
|
||||||
|
super "This command requires a formula argument"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
class KegUnspecifiedError < UsageError
|
||||||
|
def initialize
|
||||||
|
super "This command requires a keg argument"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
class MultipleVersionsInstalledError < RuntimeError
|
class MultipleVersionsInstalledError < RuntimeError
|
||||||
attr_reader :name
|
attr_reader :name
|
||||||
|
|||||||
@ -113,13 +113,9 @@ begin
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
rescue FormulaUnspecifiedError
|
rescue UsageError => e
|
||||||
abort "This command requires a formula argument"
|
|
||||||
rescue KegUnspecifiedError
|
|
||||||
abort "This command requires a keg argument"
|
|
||||||
rescue UsageError
|
|
||||||
require "cmd/help"
|
require "cmd/help"
|
||||||
Homebrew.help cmd, :usage_error => "Invalid usage"
|
Homebrew.help cmd, :usage_error => e.message
|
||||||
rescue SystemExit => e
|
rescue SystemExit => e
|
||||||
onoe "Kernel.exit" if ARGV.verbose? && !e.success?
|
onoe "Kernel.exit" if ARGV.verbose? && !e.success?
|
||||||
$stderr.puts e.backtrace if ARGV.debug?
|
$stderr.puts e.backtrace if ARGV.debug?
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user