homebrew-cask-versions/lib/hbc/dsl/installer.rb
Roland Walker 202d6019f8 Move all code under an Hbc:: namespace
* convert existing Cask:: namespace to Hbc::
* move Homebrew-fork code under Hbc::
* move freestanding classes such as Tty and TopologicalHash under Hbc::
* recast HOMEBREW_CASK_ constants as HBC_
* modify our Homebrew Formula for backward compatibility
* devscripts and dev docs
2015-01-02 07:27:03 -05:00

31 lines
1.1 KiB
Ruby

class Hbc::DSL::Installer
VALID_KEYS = Set.new [
:manual,
:script,
]
attr_accessor *VALID_KEYS
def initialize(*parameters)
unless parameters.length > 0
raise Hbc::CaskInvalidError.new(self.token, "'installer' stanza requires an argument")
end
parameters = Hash.new().merge(*parameters)
if parameters.key?(:script) and ! parameters[:script].respond_to?(:key?)
if parameters.key?(:executable)
raise Hbc::CaskInvalidError.new(self.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])
end
end