| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  | module Hbc | 
					
						
							|  |  |  |   class DSL | 
					
						
							|  |  |  |     class Installer | 
					
						
							|  |  |  |       VALID_KEYS = Set.new [ | 
					
						
							| 
									
										
										
										
											2016-10-14 20:33:16 +02:00
										 |  |  |         :manual, | 
					
						
							|  |  |  |         :script, | 
					
						
							|  |  |  |       ] | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |       attr_accessor(*VALID_KEYS) | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-24 13:52:43 +02:00
										 |  |  |       def initialize(*parameters) | 
					
						
							|  |  |  |         raise CaskInvalidError.new(token, "'installer' stanza requires an argument") if parameters.empty? | 
					
						
							|  |  |  |         parameters = {}.merge(*parameters) | 
					
						
							|  |  |  |         if parameters.key?(:script) && !parameters[:script].respond_to?(:key?) | 
					
						
							|  |  |  |           if parameters.key?(:executable) | 
					
						
							|  |  |  |             raise CaskInvalidError.new(token, "'installer' stanza gave arguments for both :script and :executable") | 
					
						
							|  |  |  |           end | 
					
						
							|  |  |  |           parameters[:executable] = parameters[:script] | 
					
						
							|  |  |  |           parameters.delete(:script) | 
					
						
							|  |  |  |           parameters = { script: parameters } | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |         unless parameters.keys.length == 1
 | 
					
						
							|  |  |  |           raise "invalid 'installer' stanza: only one of #{VALID_KEYS.inspect} is permitted" | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |         key = parameters.keys.first | 
					
						
							|  |  |  |         raise "invalid 'installer' stanza key: '#{key.inspect}'" unless VALID_KEYS.include?(key) | 
					
						
							|  |  |  |         writer_method = "#{key}=".to_sym | 
					
						
							|  |  |  |         send(writer_method, parameters[key]) | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |