aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
authorJosh Hagins2016-10-24 04:08:56 -0400
committerJosh Hagins2016-10-24 04:27:21 -0400
commit4ed51d82406e5edd44cbc28eb3444d7a618320ed (patch)
tree2b33ef14edb529c6cbdfcfdf585bc67117b57ffe /Library
parentb481ed73a079ea6abecf18529d61eea87e85d058 (diff)
downloadbrew-4ed51d82406e5edd44cbc28eb3444d7a618320ed.tar.bz2
hbc/auditor: refactor and fix bug
Use instance methods to DRY things up, and fix a bug discovered in caskroom/homebrew-cask#26067 where Casks with language blocks would always fail audit.
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/cask/lib/hbc/auditor.rb67
1 files changed, 49 insertions, 18 deletions
diff --git a/Library/Homebrew/cask/lib/hbc/auditor.rb b/Library/Homebrew/cask/lib/hbc/auditor.rb
index e2d5dea0e..c2ffbebda 100644
--- a/Library/Homebrew/cask/lib/hbc/auditor.rb
+++ b/Library/Homebrew/cask/lib/hbc/auditor.rb
@@ -1,32 +1,63 @@
module Hbc
class Auditor
def self.audit(cask, audit_download: false, check_token_conflicts: false)
- if !ARGV.value("language") &&
- languages_blocks = cask.instance_variable_get(:@dsl).instance_variable_get(:@language_blocks)
- begin
- saved_languages = MacOS.instance_variable_get(:@languages)
-
- languages_blocks.keys.map do |languages|
- ohai "Auditing language: #{languages.map { |lang| "'#{lang}'" }.join(", ")}"
- MacOS.instance_variable_set(:@languages, languages)
- audit_cask_instance(Hbc.load(cask.sourcefile_path), audit_download, check_token_conflicts)
- CLI::Cleanup.run(cask.token) if audit_download
- end.all?
- ensure
- MacOS.instance_variable_set(:@languages, saved_languages)
- end
+ new(cask, audit_download, check_token_conflicts).audit
+ end
+
+ attr_reader :cask
+
+ def initialize(cask, audit_download, check_token_conflicts)
+ @cask = cask
+ @audit_download = audit_download
+ @check_token_conflicts = check_token_conflicts
+ end
+
+ def audit_download?
+ @audit_download
+ end
+
+ def check_token_conflicts?
+ @check_token_conflicts
+ end
+
+ def audit
+ if !ARGV.value("language") && language_blocks
+ audit_all_languages
else
- audit_cask_instance(cask, audit_download, check_token_conflicts)
+ audit_cask_instance(cask)
end
end
- def self.audit_cask_instance(cask, audit_download, check_token_conflicts)
- download = audit_download && Download.new(cask)
+ private
+
+ def audit_all_languages
+ saved_languages = MacOS.instance_variable_get(:@languages)
+ begin
+ language_blocks.keys.all?(&method(:audit_languages))
+ ensure
+ MacOS.instance_variable_set(:@languages, saved_languages)
+ end
+ end
+
+ def audit_languages(languages)
+ ohai "Auditing language: #{languages.map { |lang| "'#{lang}'" }.join(", ")}"
+ MacOS.instance_variable_set(:@languages, languages)
+ audit_cask_instance(Hbc.load(cask.sourcefile_path))
+ ensure
+ CLI::Cleanup.run(cask.token) if audit_download?
+ end
+
+ def audit_cask_instance(cask)
+ download = audit_download? && Download.new(cask)
audit = Audit.new(cask, download: download,
- check_token_conflicts: check_token_conflicts)
+ check_token_conflicts: check_token_conflicts?)
audit.run!
puts audit.summary
audit.success?
end
+
+ def language_blocks
+ cask.instance_variable_get(:@dsl).instance_variable_get(:@language_blocks)
+ end
end
end