# class Chef::ChefFS::FileSystem::ChefRepositoryFileSystemCookbooksDir

### Attributes

chefignore[R]

### Public Class Methods

new(name, parent, file_path) click to toggle source
Calls superclass method

    # File lib/chef/chef_fs/file_system/chef_repository_file_system_cookbooks_dir.rb, line 27
    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/chef_fs/file_system/chef_repository_file_system_cookbooks_dir.rb, line 58
    def can_have_child?(name, is_dir)
      is_dir && !name.start_with?('.')
    end

children() click to toggle source

    # File lib/chef/chef_fs/file_system/chef_repository_file_system_cookbooks_dir.rb, line 39
    def children
      begin
        Dir.entries(file_path).sort.
            select { |child_name| can_have_child?(child_name, File.directory?(File.join(file_path, child_name))) }.
            map { |child_name| make_child(child_name) }.
            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
      rescue Errno::ENOENT
        raise Chef::ChefFS::FileSystem::NotFoundError.new(self, $!)
      end
    end

### Protected Instance Methods

make_child(child_name) click to toggle source

    # File lib/chef/chef_fs/file_system/chef_repository_file_system_cookbooks_dir.rb, line 64
    def make_child(child_name)
      ChefRepositoryFileSystemCookbookDir.new(child_name, self)
    end