brew/Library/Homebrew/cask/auditor.rb

71 lines
1.9 KiB
Ruby
Raw Normal View History

require "cask/download"
2018-08-06 20:22:19 +02:00
2018-09-06 08:29:14 +02:00
module Cask
2016-09-24 13:52:43 +02:00
class Auditor
def self.audit(cask, audit_download: false, check_token_conflicts: false, quarantine: true, commit_range: nil)
new(cask, audit_download, check_token_conflicts, quarantine, commit_range).audit
end
attr_reader :cask, :commit_range
def initialize(cask, audit_download, check_token_conflicts, quarantine, commit_range)
@cask = cask
@audit_download = audit_download
@quarantine = quarantine
@commit_range = commit_range
@check_token_conflicts = check_token_conflicts
end
def audit_download?
@audit_download
end
def quarantine?
@quarantine
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)
end
end
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}'" }.to_sentence}"
MacOS.instance_variable_set(:@languages, languages)
audit_cask_instance(CaskLoader.load(cask.sourcefile_path))
end
def audit_cask_instance(cask)
download = audit_download? && Download.new(cask, quarantine: quarantine?)
2016-09-24 13:52:43 +02:00
audit = Audit.new(cask, download: download,
check_token_conflicts: check_token_conflicts?,
2018-11-02 17:18:07 +00:00
commit_range: commit_range)
2016-09-24 13:52:43 +02:00
audit.run!
puts audit.summary
audit.success?
end
def language_blocks
cask.instance_variable_get(:@dsl).instance_variable_get(:@language_blocks)
end
2016-08-18 22:11:42 +03:00
end
end