| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  | module Hbc | 
					
						
							|  |  |  |   module Scopes | 
					
						
							|  |  |  |     def self.included(base) | 
					
						
							|  |  |  |       base.extend(ClassMethods) | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |     module ClassMethods | 
					
						
							|  |  |  |       def all | 
					
						
							|  |  |  |         @all_casks ||= {} | 
					
						
							|  |  |  |         all_tokens.map { |t| @all_casks[t] ||= load(t) } | 
					
						
							|  |  |  |       end | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |       def all_tapped_cask_dirs | 
					
						
							|  |  |  |         Tap.map(&:cask_dir).compact | 
					
						
							|  |  |  |       end | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |       def all_tokens | 
					
						
							| 
									
										
										
										
											2016-10-23 14:44:14 +02:00
										 |  |  |         Tap.map do |t| | 
					
						
							|  |  |  |           t.cask_files.map do |p| | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |             "#{t.name}/#{File.basename(p, ".rb")}" | 
					
						
							| 
									
										
										
										
											2016-10-23 14:44:14 +02:00
										 |  |  |           end | 
					
						
							|  |  |  |         end.flatten | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |       end | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |       def installed | 
					
						
							|  |  |  |         # Hbc.load has some DWIM which is slow.  Optimize here | 
					
						
							|  |  |  |         # by spoon-feeding Hbc.load fully-qualified paths. | 
					
						
							|  |  |  |         # TODO: speed up Hbc::Source::Tapped (main perf drag is calling Hbc.all_tokens repeatedly) | 
					
						
							|  |  |  |         # TODO: ability to specify expected source when calling Hbc.load (minor perf benefit) | 
					
						
							|  |  |  |         Pathname.glob(caskroom.join("*")) | 
					
						
							| 
									
										
										
										
											2016-10-23 14:44:14 +02:00
										 |  |  |                 .map do |caskroom_path| | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |                   token = caskroom_path.basename.to_s | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-23 14:44:14 +02:00
										 |  |  |                   path_to_cask = all_tapped_cask_dirs.find do |tap_dir| | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |                     tap_dir.join("#{token}.rb").exist? | 
					
						
							| 
									
										
										
										
											2016-10-23 14:44:14 +02:00
										 |  |  |                   end | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |                   if path_to_cask | 
					
						
							|  |  |  |                     Hbc.load(path_to_cask.join("#{token}.rb")) | 
					
						
							|  |  |  |                   else | 
					
						
							|  |  |  |                     Hbc.load(token) | 
					
						
							|  |  |  |                   end | 
					
						
							| 
									
										
										
										
											2016-10-23 14:44:14 +02:00
										 |  |  |                 end | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |       end | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |