Class: Chef::ChefFS::FileSystem::ChefRepositoryFileSystemEntry
- Inherits:
-
FileSystemEntry
- Object
- BaseFSObject
- BaseFSDir
- FileSystemEntry
- Chef::ChefFS::FileSystem::ChefRepositoryFileSystemEntry
- Defined in:
- lib/chef/chef_fs/file_system/chef_repository_file_system_entry.rb
Overview
ChefRepositoryFileSystemEntry works just like FileSystemEntry, except can inflate Chef objects
Direct Known Subclasses
ChefRepositoryFileSystemCookbookEntry, ChefRepositoryFileSystemCookbooksDir, ChefRepositoryFileSystemDataBagsDir
Instance Attribute Summary
Attributes inherited from FileSystemEntry
Attributes inherited from BaseFSObject
Instance Method Summary collapse
- #can_have_child?(name, is_dir) ⇒ Boolean
- #chef_object ⇒ Object
- #children ⇒ Object
- #data_handler ⇒ Object
-
#initialize(name, parent, file_path = nil, data_handler = nil) ⇒ ChefRepositoryFileSystemEntry
constructor
A new instance of ChefRepositoryFileSystemEntry.
Methods inherited from FileSystemEntry
#create_child, #delete, #dir?, #path_for_printing, #read, #write
Methods inherited from BaseFSDir
Methods inherited from BaseFSObject
#child, #compare_to, #create_child, #delete, #dir?, #exists?, #path_for_printing, #read, #root, #write
Constructor Details
#initialize(name, parent, file_path = nil, data_handler = nil) ⇒ ChefRepositoryFileSystemEntry
Returns a new instance of ChefRepositoryFileSystemEntry.
28 29 30 31 |
# File 'lib/chef/chef_fs/file_system/chef_repository_file_system_entry.rb', line 28 def initialize(name, parent, file_path = nil, data_handler = nil) super(name, parent, file_path) @data_handler = data_handler end |
Instance Method Details
#can_have_child?(name, is_dir) ⇒ Boolean
46 47 48 |
# File 'lib/chef/chef_fs/file_system/chef_repository_file_system_entry.rb', line 46 def can_have_child?(name, is_dir) !is_dir && name[-5..-1] == '.json' end |
#chef_object ⇒ Object
37 38 39 40 41 42 43 44 |
# File 'lib/chef/chef_fs/file_system/chef_repository_file_system_entry.rb', line 37 def chef_object begin return data_handler.chef_object(JSON.parse(read, :create_additions => false)) rescue Chef::Log.error("Could not read #{path_for_printing} into a Chef object: #{$!}") end nil end |
#children ⇒ Object
50 51 52 53 54 55 |
# File 'lib/chef/chef_fs/file_system/chef_repository_file_system_entry.rb', line 50 def children # Except cookbooks and data bag dirs, all things must be json files Dir.entries(file_path).sort. select { |child_name| can_have_child?(child_name, File.directory?(File.join(file_path, child_name))) }. map { |child_name| ChefRepositoryFileSystemEntry.new(child_name, self) } end |
#data_handler ⇒ Object
33 34 35 |
# File 'lib/chef/chef_fs/file_system/chef_repository_file_system_entry.rb', line 33 def data_handler @data_handler || parent.data_handler end |