Raise error when file does not contain a cask.

This commit is contained in:
Markus Reiter 2018-07-29 11:05:23 +02:00
parent b68d8e7282
commit 5a45315349
3 changed files with 20 additions and 2 deletions

View File

@ -17,7 +17,11 @@ module Hbc
return to_enum unless block_given?
Tap.flat_map(&:cask_files).each do |f|
yield CaskLoader::FromTapPathLoader.new(f).load
begin
yield CaskLoader::FromTapPathLoader.new(f).load
rescue CaskUnreadableError => e
opoo e.message
end
end
end

View File

@ -54,7 +54,15 @@ module Hbc
@content = IO.read(path)
instance_eval(content, path)
begin
instance_eval(content, path).tap do |cask|
unless cask.is_a?(Cask)
raise CaskUnreadableError.new(token, "'#{path}' does not contain a cask.")
end
end
rescue NameError, ArgumentError, ScriptError => e
raise CaskUnreadableError.new(token, e.message)
end
end
private

View File

@ -36,6 +36,12 @@ module Hbc
end
end
class CaskUnreadableError < CaskUnavailableError
def to_s
"Cask '#{token}' is unreadable" << (reason.empty? ? "." : ": #{reason}")
end
end
class CaskAlreadyCreatedError < AbstractCaskErrorWithToken
def to_s
%Q(Cask '#{token}' already exists. Run #{Formatter.identifier("brew cask edit #{token}")} to edit it.)