summaryrefslogtreecommitdiff
path: root/lib/chef/provider/env.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/chef/provider/env.rb')
-rw-r--r--lib/chef/provider/env.rb16
1 files changed, 8 insertions, 8 deletions
diff --git a/lib/chef/provider/env.rb b/lib/chef/provider/env.rb
index 600cac1e6b..815a19bc0c 100644
--- a/lib/chef/provider/env.rb
+++ b/lib/chef/provider/env.rb
@@ -61,9 +61,12 @@ class Chef
def requires_modify_or_create?
if @new_resource.delim
#e.g. check for existing value within PATH
- not new_values.all? do |val|
- current_values.include? val
+ new_values.inject(0) do |index, val|
+ next_index = current_values.find_index val
+ return true if next_index.nil? || next_index < index
+ next_index
end
+ false
else
@new_resource.value != @current_resource.value
end
@@ -99,9 +102,9 @@ class Chef
return true #do not delete the key
else
new_value =
- current_values.select { |item|
+ current_values.select do |item|
not new_values.include?(item)
- }.join(@new_resource.delim)
+ end.join(@new_resource.delim)
if new_value.empty?
return false #nothing left here, delete the key
@@ -145,10 +148,7 @@ class Chef
def modify_env
if @new_resource.delim
- values = new_values.reject do |v|
- current_values.include?(v)
- end
- @new_resource.value((values + [@current_resource.value]).join(@new_resource.delim))
+ @new_resource.value((new_values + current_values).uniq.join(@new_resource.delim))
end
create_env
end