summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Smith <tsmith84@gmail.com>2020-07-06 22:09:59 -0700
committerTim Smith <tsmith84@gmail.com>2020-07-20 11:45:27 -0700
commit7c007aab2f2a9713cf5414527d69af7efa30b6b9 (patch)
tree607278aceb9d14e04840f5d095cf066fee339ea3
parent59c0b1133580ca1402b158209ad9d0fb06d282a8 (diff)
downloadchef-7c007aab2f2a9713cf5414527d69af7efa30b6b9.tar.gz
Work entirely in arrays and make sure we single quote all values
Signed-off-by: Tim Smith <tsmith@chef.io>
-rw-r--r--lib/chef/resource/macos_userdefaults.rb21
1 files changed, 10 insertions, 11 deletions
diff --git a/lib/chef/resource/macos_userdefaults.rb b/lib/chef/resource/macos_userdefaults.rb
index 3b8b844608..c78523bf23 100644
--- a/lib/chef/resource/macos_userdefaults.rb
+++ b/lib/chef/resource/macos_userdefaults.rb
@@ -147,22 +147,21 @@ class Chef
value = new_resource.value
type = new_resource.type || value_type(value)
- 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
+ value = case type
+ when "dict"
+ # creates an array of Key1 Value1 Key2 Value2...
+ value.flatten.map { |x| "'#{x}'" }
+ when "array"
+ value.map { |x| "'#{x}'" }
+ else
+ "'#{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
+ cmd.flatten
end
def value_type(value)