aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike McQuaid2016-05-28 20:09:49 +0100
committerMike McQuaid2016-05-28 20:11:07 +0100
commit7829af75089a9935679c82f631366d8bdafe9659 (patch)
tree288420c88518f56b3291c8e8f0a01230c47f69ec
parent28d99940de687e010cda40762eedf67dd1f3ddd9 (diff)
downloadbrew-7829af75089a9935679c82f631366d8bdafe9659.tar.bz2
bottle/test-bot: deep merge bottle JSON hashes.
-rw-r--r--Library/Homebrew/cmd/bottle.rb2
-rw-r--r--Library/Homebrew/cmd/test-bot.rb2
-rw-r--r--Library/Homebrew/utils.rb1
-rw-r--r--Library/Homebrew/utils/hash.rb10
4 files changed, 13 insertions, 2 deletions
diff --git a/Library/Homebrew/cmd/bottle.rb b/Library/Homebrew/cmd/bottle.rb
index 7c93b2d6b..d1215f0d6 100644
--- a/Library/Homebrew/cmd/bottle.rb
+++ b/Library/Homebrew/cmd/bottle.rb
@@ -336,7 +336,7 @@ module Homebrew
write = ARGV.include? "--write"
bottles_hash = ARGV.named.reduce({}) do |hash, json_file|
- hash.merge! Utils::JSON.load(IO.read(json_file))
+ deep_merge_hashes hash, Utils::JSON.load(IO.read(json_file))
end
bottles_hash.each do |formula_name, bottle_hash|
diff --git a/Library/Homebrew/cmd/test-bot.rb b/Library/Homebrew/cmd/test-bot.rb
index e83f09e68..2480b99fe 100644
--- a/Library/Homebrew/cmd/test-bot.rb
+++ b/Library/Homebrew/cmd/test-bot.rb
@@ -821,7 +821,7 @@ module Homebrew
formula_packaged = {}
bottles_hash = json_files.reduce({}) do |hash, json_file|
- hash.merge! Utils::JSON.load(IO.read(json_file))
+ deep_merge_hashes hash, Utils::JSON.load(IO.read(json_file))
end
bottles_hash.each do |formula_name, bottle_hash|
diff --git a/Library/Homebrew/utils.rb b/Library/Homebrew/utils.rb
index caa1a87e2..09bab2c54 100644
--- a/Library/Homebrew/utils.rb
+++ b/Library/Homebrew/utils.rb
@@ -1,5 +1,6 @@
require "pathname"
require "exceptions"
+require "utils/hash"
require "utils/json"
require "utils/inreplace"
require "utils/popen"
diff --git a/Library/Homebrew/utils/hash.rb b/Library/Homebrew/utils/hash.rb
new file mode 100644
index 000000000..63dd02c1a
--- /dev/null
+++ b/Library/Homebrew/utils/hash.rb
@@ -0,0 +1,10 @@
+def deep_merge_hashes(hash1, hash2)
+ merger = proc do |key, v1, v2|
+ if Hash === v1 && Hash === v2
+ v1.merge v2, &merger
+ else
+ v2
+ end
+ end
+ hash1.merge hash2, &merger
+end