From 355244d9a4b74360de67afaa99aba47cf6d9a3b3 Mon Sep 17 00:00:00 2001
From: elijah <elijah@riseup.net>
Date: Thu, 18 Feb 2016 09:47:05 -0800
Subject: added support for json keys prefixed with '!' for replace.

---
 lib/leap_cli/config/object.rb | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

(limited to 'lib')

diff --git a/lib/leap_cli/config/object.rb b/lib/leap_cli/config/object.rb
index 0f7376f..bde5fe7 100644
--- a/lib/leap_cli/config/object.rb
+++ b/lib/leap_cli/config/object.rb
@@ -197,6 +197,10 @@ module LeapCli
             mode = :subtract
             old_value = self.fetch '-'+key, nil
             self.delete('-'+key)
+          elsif self.has_key?('!'+key)
+            mode = :replace
+            old_value = self.fetch '!'+key, nil
+            self.delete('!'+key)
           else
             mode = :normal
             old_value = self.fetch key, nil
@@ -208,8 +212,12 @@ module LeapCli
           old_value = true  if old_value == "true"
           old_value = false if old_value == "false"
 
+          # force replace?
+          if mode == :replace && prefer_self
+            value = old_value
+
           # merge hashes
-          if old_value.is_a?(Hash) || new_value.is_a?(Hash)
+          elsif old_value.is_a?(Hash) || new_value.is_a?(Hash)
             value = Config::Object.new(@manager, @node)
             old_value.is_a?(Hash) ? value.deep_merge!(old_value) : (value[key] = old_value if !old_value.nil?)
             new_value.is_a?(Hash) ? value.deep_merge!(new_value, prefer_self) : (value[key] = new_value if !new_value.nil?)
-- 
cgit v1.2.3