class Build::Environment
def update_hash(hash)
def update_hash(hash) @values.each do |key, value| previous = hash[key] if Replace === value # Replace the parent value hash[key] = value elsif Default === value # Update the parent value if not defined. hash[key] = previous || value elsif Array === previous # Merge with the parent value hash[key] = previous + Array(value) elsif OpenStruct === value hash[key] = value.to_h else hash[key] = value end end return self end