Skip to content

Commit 42b9dfc

Browse files
author
Miguel Cabeca
committed
Delete action now works as expected.
Deletes symbolic links with or without "to" attribute Deletes hard links only with "to" attribute" (needed to check if "target_file" is a hard link) If the link doesn't exist does nothing (does not fail)
1 parent 1ba15b3 commit 42b9dfc

1 file changed

Lines changed: 18 additions & 6 deletions

File tree

chef/lib/chef/provider/link.rb

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -68,12 +68,24 @@ def action_create
6868
end
6969

7070
def action_delete
71-
if ::File.exists?(@new_resource.target_file) && ::File.writable?(@new_resource.target_file)
72-
Chef::Log.info("Deleting #{@new_resource} at #{@new_resource.target_file}")
73-
::File.delete(@new_resource.target_file)
74-
@new_resource.updated = true
75-
else
76-
raise "Cannot delete #{@new_resource} at #{@new_resource_path}!"
71+
if ::File.exists?(@new_resource.target_file)
72+
if @new_resource.link_type == :symbolic
73+
if ::File.symlink?(@new_resource.target_file)
74+
Chef::Log.info("Deleting #{@new_resource} at #{@new_resource.target_file}")
75+
::File.delete(@new_resource.target_file)
76+
@new_resource.updated = true
77+
else
78+
raise "Cannot delete #{@new_resource} at #{@new_resource.target_file}! Not a symbolic link."
79+
end
80+
elsif @new_resource.link_type == :hard
81+
if ::File.exists?(@new_resource.to) && ::File.stat(@current_resource.target_file).ino == ::File.stat(@new_resource.to).ino
82+
Chef::Log.info("Deleting #{@new_resource} at #{@new_resource.target_file}")
83+
::File.delete(@new_resource.target_file)
84+
@new_resource.updated = true
85+
else
86+
raise "Cannot delete #{@new_resource} at #{@new_resource.target_file}! Not a hard link."
87+
end
88+
end
7789
end
7890
end
7991
end

0 commit comments

Comments
 (0)