diff --git a/lib/cask/audit.rb b/lib/cask/audit.rb index f8e67301a45..4ebbc685f58 100644 --- a/lib/cask/audit.rb +++ b/lib/cask/audit.rb @@ -16,6 +16,7 @@ class Cask::Audit _check_no_checksums_if_latest _check_sourceforge_download_url_format _check_download(download) if download + return !(errors? or warnings?) end def summary_header diff --git a/lib/cask/auditor.rb b/lib/cask/auditor.rb index 387087afa1d..a90ed631f02 100644 --- a/lib/cask/auditor.rb +++ b/lib/cask/auditor.rb @@ -2,12 +2,13 @@ class Cask::Auditor def self.audit(cask, options = {}) audit = Cask::Audit.new(cask) - if options.fetch(:audit_download, false) + retval = if options.fetch(:audit_download, false) audit.run!(Cask::Download.new(cask)) else audit.run! end puts audit.summary + retval end end diff --git a/lib/cask/cli/audit.rb b/lib/cask/cli/audit.rb index 1c683e2cb41..a184507b4d5 100644 --- a/lib/cask/cli/audit.rb +++ b/lib/cask/cli/audit.rb @@ -4,7 +4,13 @@ class Cask::CLI::Audit end def self.run(*args) - new(args, Cask::Auditor).run + retval = new(args, Cask::Auditor).run + # retval is ternary: true/false/nil + if retval.nil? + raise CaskError.new("audit failed") + elsif ! retval + raise CaskError.new("some audits failed") + end end def initialize(args, auditor) @@ -13,7 +19,11 @@ class Cask::CLI::Audit end def run - casks_to_audit.each { |cask| audit(cask) } + count = 0 + casks_to_audit.each do |cask| + count += 1 if audit(cask) + end + count == 0 ? nil : count == casks_to_audit.length end def audit(cask)