53 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
		
		
			
		
	
	
			53 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
|   | class Hbc::CLI::Audit < Hbc::CLI::Base | ||
|  |   def self.help | ||
|  |     "verifies installability of Casks" | ||
|  |   end | ||
|  | 
 | ||
|  |   def self.run(*args) | ||
|  |     failed_casks = new(args, Hbc::Auditor).run | ||
|  |     return if failed_casks.empty? | ||
|  |     raise Hbc::CaskError, "audit failed for casks: #{failed_casks.join(' ')}" | ||
|  |   end | ||
|  | 
 | ||
|  |   def initialize(args, auditor) | ||
|  |     @args = args | ||
|  |     @auditor = auditor | ||
|  |   end | ||
|  | 
 | ||
|  |   def run | ||
|  |     casks_to_audit.each_with_object([]) do |cask, failed| | ||
|  |       failed << cask unless audit(cask) | ||
|  |     end | ||
|  |   end | ||
|  | 
 | ||
|  |   def audit(cask) | ||
|  |     odebug "Auditing Cask #{cask}" | ||
|  |     @auditor.audit(cask, audit_download:        audit_download?, | ||
|  |                          check_token_conflicts: check_token_conflicts?) | ||
|  |   end | ||
|  | 
 | ||
|  |   def audit_download? | ||
|  |     @args.include?("--download") | ||
|  |   end | ||
|  | 
 | ||
|  |   def check_token_conflicts? | ||
|  |     @args.include?("--token-conflicts") | ||
|  |   end | ||
|  | 
 | ||
|  |   def casks_to_audit | ||
|  |     if cask_tokens.empty? | ||
|  |       Hbc.all | ||
|  |     else | ||
|  |       cask_tokens.map { |token| Hbc.load(token) } | ||
|  |     end | ||
|  |   end | ||
|  | 
 | ||
|  |   def cask_tokens | ||
|  |     @cask_tokens ||= self.class.cask_tokens_from(@args) | ||
|  |   end | ||
|  | 
 | ||
|  |   def self.needs_init? | ||
|  |     true | ||
|  |   end | ||
|  | end |