33 lines
1.1 KiB
Ruby
Raw Normal View History

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