in lib/omnibus/software.rb [370:417]
def source(val = NULL)
unless null?(val)
unless val.is_a?(Hash)
raise InvalidValue.new(:source,
"be a kind of `Hash', but was `#{val.class.inspect}'")
end
val = canonicalize_source(val)
extra_keys = val.keys - [
:git, :file, :path, :url,
:md5, :sha1, :sha256, :sha512,
:cookie, :warning, :unsafe, :extract, :cached_name, :authorization, :internal,
:options,
:submodules
]
unless extra_keys.empty?
raise InvalidValue.new(:source,
"only include valid keys. Invalid keys: #{extra_keys.inspect}")
end
duplicate_keys = val.keys & %i{git file path url}
unless duplicate_keys.size < 2
raise InvalidValue.new(:source,
"not include duplicate keys. Duplicate keys: #{duplicate_keys.inspect}")
end
if Config.use_internal_sources && val[:url]
if internal_source_set? && val[:internal].nil?
hash_types = %i{md5 sha1 sha256 sha512}
val.each_key do |key|
val.delete(key) unless hash_types.include?(key)
end
end
@source ||= {}
@source.merge!(val)
else
@source ||= {}
@source.merge!(val)
end
end
override = canonicalize_source(overrides[:source])
apply_overrides(:source, override)
end