class Chef::Provider::Link
Public Instance Methods
canonicalize(path)
click to toggle source
# File lib/chef/provider/link.rb, line 75 def canonicalize(path) ChefUtils.windows? ? path.tr("/", "\\") : path end
define_resource_requirements()
click to toggle source
# File lib/chef/provider/link.rb, line 60 def define_resource_requirements requirements.assert(:delete) do |a| a.assertion do if current_resource.to current_resource.link_type == new_resource.link_type && (current_resource.link_type == :symbolic || current_resource.to != "") else true end end a.failure_message Chef::Exceptions::Link, "Cannot delete #{new_resource} at #{new_resource.target_file}! Not a #{new_resource.link_type} link." a.whyrun("Would assume the link at #{new_resource.target_file} was previously created") end end
load_current_resource()
click to toggle source
# File lib/chef/provider/link.rb, line 36 def load_current_resource @current_resource = Chef::Resource::Link.new(new_resource.name) current_resource.target_file(new_resource.target_file) if file_class.symlink?(current_resource.target_file) current_resource.link_type(:symbolic) current_resource.to( canonicalize(file_class.readlink(current_resource.target_file)) ) else current_resource.link_type(:hard) if ::File.exist?(current_resource.target_file) if ::File.exist?(new_resource.to) && file_class.stat(current_resource.target_file).ino == file_class.stat(new_resource.to).ino current_resource.to(canonicalize(new_resource.to)) else current_resource.to("") end end end ScanAccessControl.new(new_resource, current_resource).set_all! current_resource end
manage_symlink_access?()
click to toggle source
Implementation components *should not* follow symlinks when managing access control (e.g., use lchmod instead of chmod) if the resource is a symlink.
# File lib/chef/provider/link.rb, line 154 def manage_symlink_access? new_resource.link_type == :symbolic end