diff options
author | Tim Smith <tsmith84@gmail.com> | 2020-07-06 22:09:59 -0700 |
---|---|---|
committer | Tim Smith <tsmith84@gmail.com> | 2020-07-20 11:45:27 -0700 |
commit | 7c007aab2f2a9713cf5414527d69af7efa30b6b9 (patch) | |
tree | 607278aceb9d14e04840f5d095cf066fee339ea3 | |
parent | 59c0b1133580ca1402b158209ad9d0fb06d282a8 (diff) | |
download | chef-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.rb | 21 |
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) |