Tell the user to tap (if req.) for tapped deps

Also propagate dependency info through exception if possible so the error message is more useful.
This commit is contained in:
Max Howell 2012-03-16 11:55:30 +00:00
parent 15f3e9ea77
commit 3d5b4af523
2 changed files with 21 additions and 1 deletions

View File

@ -24,10 +24,24 @@ end
class FormulaUnavailableError < RuntimeError
attr :name
attr :dependent, true
def dependent_s
"(dependency of #{dependent})" if dependent and dependent != name
end
def to_s
if name =~ %r{(\w+)/(\w+)/(\w+)} then <<-EOS.undent
No available formula for #$3 #{dependent_s}
Please tap it and then try again: brew tap #$1/#$2
EOS
else
"No available formula for #{name} #{dependent_s}"
end
end
def initialize name
@name = name
super "No available formula for #{name}"
end
end

View File

@ -44,6 +44,12 @@ class FormulaInstaller
raise CannotInstallFormulaError, "You must `brew link #{dep}' before #{f} can be installed"
end
end unless ignore_deps
rescue FormulaUnavailableError => e
# this is sometimes wrong if the dependency chain is more than one deep
# but can't easily fix this without a rewrite FIXME-brew2
e.dependent = f.name
raise
end
def install