Module: Chef::Mixin::CreatePath
Instance Method Summary collapse
-
#create_path(file_path) ⇒ Object
Creates a given path, including all directories that lead up to it.
Instance Method Details
#create_path(file_path) ⇒ Object
Creates a given path, including all directories that lead up to it. Like mkdir_p, but without the leaking.
Parameters
- file_path<String, Array>
-
A string that represents the path to create,
or an Array with the path-parts.
Returns
The created file_path.
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/chef/mixin/create_path.rb', line 31 def create_path(file_path) unless file_path.kind_of?(String) || file_path.kind_of?(Array) raise ArgumentError, "file_path must be a string or an array!" end if file_path.kind_of?(String) file_path = File.(file_path).split(File::SEPARATOR) file_path.shift if file_path[0] == '' # Check if path starts with a separator or drive letter (Windows) unless file_path[0].match("^#{File::SEPARATOR}|^[a-zA-Z]:") file_path[0] = "#{File::SEPARATOR}#{file_path[0]}" end end file_path.each_index do |i| create_path = File.join(file_path[0, i + 1]) unless File.directory?(create_path) Chef::Log.debug("Creating directory #{create_path}") Dir.mkdir(create_path) end end File.(File.join(file_path)) end |