class ChefFS::FileSystem::MultiplexedDir

Attributes

multiplexed_dirs[R]

Public Class Methods

new(*multiplexed_dirs) click to toggle source
Calls superclass method ChefFS::FileSystem::BaseFSDir::new
# File lib/chef_fs/file_system/multiplexed_dir.rb, line 7
def initialize(*multiplexed_dirs)
  @multiplexed_dirs = multiplexed_dirs.flatten
  super(@multiplexed_dirs[0].name, @multiplexed_dirs[0].parent)
end

Public Instance Methods

can_have_child?(name, is_dir) click to toggle source
# File lib/chef_fs/file_system/multiplexed_dir.rb, line 37
def can_have_child?(name, is_dir)
  write_dir.can_have_child?(name, is_dir)
end
children() click to toggle source
# File lib/chef_fs/file_system/multiplexed_dir.rb, line 18
def children
  @children ||= begin
    result = []
    seen = {}
    # If multiple things have the same name, the first one wins.
    multiplexed_dirs.each do |dir|
      dir.children.each do |child|
        if seen[child.name]
          Chef::Log.warn("Child with name '#{child.name}' found in multiple directories: #{seen[child.name].path_for_printing} and #{child.path_for_printing}")
        else
          result << child
          seen[child.name] = child
        end
      end
    end
    result
  end
end
create_child(name, file_contents = nil) click to toggle source
# File lib/chef_fs/file_system/multiplexed_dir.rb, line 41
def create_child(name, file_contents = nil)
  @children = nil
  write_dir.create_child(name, file_contents)
end
write_dir() click to toggle source
# File lib/chef_fs/file_system/multiplexed_dir.rb, line 14
def write_dir
  multiplexed_dirs[0]
end