summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Smith <tsmith84@gmail.com>2020-07-06 21:03:22 -0700
committerTim Smith <tsmith84@gmail.com>2020-07-20 11:45:27 -0700
commite64a52b391f51cb56639c0e3ba3f9849dded248e (patch)
tree6a6916d0a72e95401a7398d2a20ae2a50fa5bff1
parent2053b5524c58f88afe7e8f69d7d1257e9870a11e (diff)
downloadchef-e64a52b391f51cb56639c0e3ba3f9849dded248e.tar.gz
Quote non dict/array values to support spaces
Signed-off-by: Tim Smith <tsmith@chef.io>
-rw-r--r--lib/chef/resource/macos_userdefaults.rb17
1 files changed, 11 insertions, 6 deletions
diff --git a/lib/chef/resource/macos_userdefaults.rb b/lib/chef/resource/macos_userdefaults.rb
index 2e68351184..6251460910 100644
--- a/lib/chef/resource/macos_userdefaults.rb
+++ b/lib/chef/resource/macos_userdefaults.rb
@@ -144,17 +144,22 @@ class Chef
action_class do
def defaults_write_cmd
- cmd = ["defaults", "write", "'#{new_resource.domain}'", "'#{new_resource.key}'"]
- cmd.prepend("sudo") if new_resource.sudo
-
value = new_resource.value
type = new_resource.type || value_type(value)
- # creates a string of Key1 Value1 Key2 Value2...
- value = value.map { |k, v| "\"#{k}\" \"#{v}\"" }.join(" ") if type == "dict"
- if type == "array"
+
+ case type
+ when "dict"
+ # creates a string of Key1 Value1 Key2 Value2...
+ value = value.map { |k, v| "\"#{k}\" \"#{v}\"" }.join(" ")
+ when "array"
value = value.join("' '")
value = "'#{value}'"
+ else
+ value = "'#{value}'"
end
+
+ cmd = ["defaults", "write", "'#{new_resource.domain}'", "'#{new_resource.key}'"]
+ cmd.prepend("sudo") if new_resource.sudo
cmd << "-#{type}" if type
cmd << value
cmd