Class: Chef::ChefFS::FileSystem::Repository::ChefRepositoryFileSystemCookbookEntry

Inherits:
ChefRepositoryFileSystemEntry show all
Defined in:
lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb

Direct Known Subclasses

ChefRepositoryFileSystemCookbookDir

Instance Attribute Summary collapse

Attributes inherited from FileSystemEntry

#file_path

Attributes inherited from BaseFSObject

#name, #parent, #path

Instance Method Summary collapse

Methods inherited from ChefRepositoryFileSystemEntry

#chef_object, #data_handler, #minimize, #write, #write_pretty_json=

Methods inherited from FileSystemEntry

#create_child, #delete, #dir?, #exists?, #path_for_printing, #read, #write

Methods inherited from BaseFSDir

#dir?, #empty?

Methods inherited from BaseFSObject

#chef_object, #child, #compare_to, #create_child, #delete, #dir?, #exists?, #path_for_printing, #read, #root, #write

Constructor Details

#initialize(name, parent, file_path = nil, ruby_only = false, recursive = false) ⇒ ChefRepositoryFileSystemCookbookEntry

Returns a new instance of ChefRepositoryFileSystemCookbookEntry.



28
29
30
31
32
# File 'lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb', line 28

def initialize(name, parent, file_path = nil, ruby_only = false, recursive = false)
  super(name, parent, file_path)
  @ruby_only = ruby_only
  @recursive = recursive
end

Instance Attribute Details

#recursiveObject (readonly)

Returns the value of attribute recursive.



35
36
37
# File 'lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb', line 35

def recursive
  @recursive
end

#ruby_onlyObject (readonly)

Returns the value of attribute ruby_only.



34
35
36
# File 'lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb', line 34

def ruby_only
  @ruby_only
end

Instance Method Details

#can_have_child?(name, is_dir) ⇒ Boolean

Returns:

  • (Boolean)


41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb', line 41

def can_have_child?(name, is_dir)
  if is_dir
    return recursive && name != "." && name != ".."
  elsif ruby_only
    return false if name[-3..-1] != ".rb"
  end

  # Check chefignore
  ignorer = parent
  loop do
    if ignorer.is_a?(ChefRepositoryFileSystemCookbooksDir)
      # Grab the path from entry to child
      path_to_child = name
      child = self
      while child.parent != ignorer
        path_to_child = PathUtils.join(child.name, path_to_child)
        child = child.parent
      end
      # Check whether that relative path is ignored
      return !ignorer.chefignore || !ignorer.chefignore.ignored?(path_to_child)
    end
    ignorer = ignorer.parent
    break unless ignorer
  end

  true
end

#childrenObject



37
38
39
# File 'lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb', line 37

def children
  super.select { |entry| !(entry.dir? && entry.children.size == 0 ) }
end

#write_pretty_jsonObject



69
70
71
# File 'lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb', line 69

def write_pretty_json
  false
end