class ChefFS::FileSystem::ChefRepositoryFileSystemCookbooksDir

Attributes

chefignore[R]

Public Class Methods

new(name, parent, file_path) click to toggle source
Calls superclass method
# File lib/chef_fs/file_system/chef_repository_file_system_cookbooks_dir.rb, line 26
def initialize(name, parent, file_path)
  super(name, parent, file_path)
  begin
    @chefignore = Chef::Cookbook::Chefignore.new(self.file_path)
  rescue Errno::EISDIR
  rescue Errno::EACCES
    # Work around a bug in Chefignore when chefignore is a directory
  end
end

Public Instance Methods

can_have_child?(name, is_dir) click to toggle source
# File lib/chef_fs/file_system/chef_repository_file_system_cookbooks_dir.rb, line 53
def can_have_child?(name, is_dir)
  is_dir && !name.start_with?('.')
end
children() click to toggle source
# File lib/chef_fs/file_system/chef_repository_file_system_cookbooks_dir.rb, line 38
def children
  Dir.entries(file_path).sort.
      select { |child_name| can_have_child?(child_name, File.directory?(File.join(file_path, child_name))) }.
      map { |child_name| ChefRepositoryFileSystemCookbookDir.new(child_name, self) }.
      select do |entry|
        # empty cookbooks and cookbook directories are ignored
        if entry.children.size == 0
          Chef::Log.warn("Cookbook '#{entry.name}' is empty or entirely chefignored at #{entry.path_for_printing}")
          false
        else
          true
        end
      end
end