| 
									
										
										
										
											2020-10-10 14:16:11 +02:00
										 |  |  | # typed: true | 
					
						
							| 
									
										
										
										
											2020-07-29 12:20:23 -04:00
										 |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-05 17:17:03 -05:00
										 |  |  | # An adapter for casks to provide dependency information in a formula-like interface. | 
					
						
							| 
									
										
										
										
											2020-07-29 09:14:39 -04:00
										 |  |  | class CaskDependent | 
					
						
							| 
									
										
										
										
											2021-11-12 13:52:20 -08:00
										 |  |  |   attr_reader :cask | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-29 09:14:39 -04:00
										 |  |  |   def initialize(cask) | 
					
						
							|  |  |  |     @cask = cask | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def name | 
					
						
							|  |  |  |     @cask.token | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def full_name | 
					
						
							|  |  |  |     @cask.full_name | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-10 00:29:39 +09:00
										 |  |  |   def runtime_dependencies | 
					
						
							| 
									
										
										
										
											2022-02-16 18:59:58 +09:00
										 |  |  |     deps.flat_map { |dep| [dep, *dep.to_formula.runtime_dependencies] }.uniq | 
					
						
							| 
									
										
										
										
											2020-07-29 09:14:39 -04:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def deps | 
					
						
							| 
									
										
										
										
											2021-03-26 14:11:03 +00:00
										 |  |  |     @deps ||= @cask.depends_on.formula.map do |f| | 
					
						
							|  |  |  |       Dependency.new f | 
					
						
							| 
									
										
										
										
											2020-07-29 09:14:39 -04:00
										 |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def requirements | 
					
						
							|  |  |  |     @requirements ||= begin | 
					
						
							|  |  |  |       requirements = [] | 
					
						
							|  |  |  |       dsl_reqs = @cask.depends_on | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       dsl_reqs.arch&.each do |arch| | 
					
						
							|  |  |  |         requirements << ArchRequirement.new([:x86_64]) if arch[:bits] == 64
 | 
					
						
							|  |  |  |         requirements << ArchRequirement.new([arch[:type]]) | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |       dsl_reqs.cask.each do |cask_ref| | 
					
						
							|  |  |  |         requirements << Requirement.new([{ cask: cask_ref }]) | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |       requirements << dsl_reqs.macos if dsl_reqs.macos | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       requirements | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-18 12:03:22 -04:00
										 |  |  |   def recursive_dependencies(ignore_missing: false, &block) | 
					
						
							|  |  |  |     Dependency.expand(self, ignore_missing: ignore_missing, &block) | 
					
						
							| 
									
										
										
										
											2020-07-29 09:14:39 -04:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def recursive_requirements(&block) | 
					
						
							|  |  |  |     Requirement.expand(self, &block) | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def any_version_installed? | 
					
						
							|  |  |  |     @cask.installed? | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |