| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  | 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? | 
					
						
							| 
									
										
										
										
											2016-09-20 15:11:33 +02:00
										 |  |  |     raise Hbc::CaskError, "audit failed for casks: #{failed_casks.join(" ")}" | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  |   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 |