diff options
author | Tim Smith <tsmith84@gmail.com> | 2020-07-06 21:03:22 -0700 |
---|---|---|
committer | Tim Smith <tsmith84@gmail.com> | 2020-07-20 11:45:27 -0700 |
commit | e64a52b391f51cb56639c0e3ba3f9849dded248e (patch) | |
tree | 6a6916d0a72e95401a7398d2a20ae2a50fa5bff1 | |
parent | 2053b5524c58f88afe7e8f69d7d1257e9870a11e (diff) | |
download | chef-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.rb | 17 |
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 |