Class: ChefFS::FileSystem::ChefRepositoryFileSystemEntry
- Inherits:
-
FileSystemEntry
- Object
- BaseFSObject
- BaseFSDir
- FileSystemEntry
- ChefFS::FileSystem::ChefRepositoryFileSystemEntry
- Defined in:
- lib/chef_fs/file_system/chef_repository_file_system_entry.rb
Overview
ChefRepositoryFileSystemEntry works just like FileSystemEntry, except can inflate Chef objects
Direct Known Subclasses
ChefRepositoryFileSystemAclsDir, 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.
27 28 29 30 |
# File 'lib/chef_fs/file_system/chef_repository_file_system_entry.rb', line 27 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
45 46 47 |
# File 'lib/chef_fs/file_system/chef_repository_file_system_entry.rb', line 45 def can_have_child?(name, is_dir) !is_dir && name[-5..-1] == '.json' end |
#chef_object ⇒ Object
36 37 38 39 40 41 42 43 |
# File 'lib/chef_fs/file_system/chef_repository_file_system_entry.rb', line 36 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
49 50 51 52 53 54 |
# File 'lib/chef_fs/file_system/chef_repository_file_system_entry.rb', line 49 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
32 33 34 |
# File 'lib/chef_fs/file_system/chef_repository_file_system_entry.rb', line 32 def data_handler @data_handler || parent.data_handler end |