# module Chef::Mixin::CreatePath

### Public Instance Methods

create_path(file_path) click to toggle source

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.

    # 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.expand_path(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.expand_path(File.join(file_path))
    end