| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  | module Hbc | 
					
						
							|  |  |  |   class Auditor | 
					
						
							|  |  |  |     def self.audit(cask, audit_download: false, check_token_conflicts: false) | 
					
						
							| 
									
										
										
										
											2016-10-24 04:08:56 -04:00
										 |  |  |       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 | 
					
						
							| 
									
										
										
										
											2016-09-25 22:47:31 +02:00
										 |  |  |       else | 
					
						
							| 
									
										
										
										
											2016-10-24 04:08:56 -04:00
										 |  |  |         audit_cask_instance(cask) | 
					
						
							| 
									
										
										
										
											2016-09-25 22:47:31 +02:00
										 |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-24 04:08:56 -04:00
										 |  |  |     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) | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |       audit = Audit.new(cask, download:              download, | 
					
						
							| 
									
										
										
										
											2016-10-24 04:08:56 -04:00
										 |  |  |                               check_token_conflicts: check_token_conflicts?) | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |       audit.run! | 
					
						
							|  |  |  |       puts audit.summary | 
					
						
							|  |  |  |       audit.success? | 
					
						
							|  |  |  |     end | 
					
						
							| 
									
										
										
										
											2016-10-24 04:08:56 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def language_blocks | 
					
						
							|  |  |  |       cask.instance_variable_get(:@dsl).instance_variable_get(:@language_blocks) | 
					
						
							|  |  |  |     end | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  |   end | 
					
						
							|  |  |  | end |