diff options
| author | Josh Hagins | 2016-10-24 04:08:56 -0400 |
|---|---|---|
| committer | Josh Hagins | 2016-10-24 04:27:21 -0400 |
| commit | 4ed51d82406e5edd44cbc28eb3444d7a618320ed (patch) | |
| tree | 2b33ef14edb529c6cbdfcfdf585bc67117b57ffe /Library | |
| parent | b481ed73a079ea6abecf18529d61eea87e85d058 (diff) | |
| download | brew-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.rb | 67 |
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 |
