# File lib/chef/knife/core/object_loader.rb, line 104 def file_exists_and_is_readable?(file) File.exists?(file) && File.readable?(file) end
# File lib/chef/knife/core/object_loader.rb, line 76 def find_all_object_dirs(path) path = File.join(path, '*') objects = Dir.glob(File.expand_path(path)) objects.delete_if { |o| !File.directory?(o) } objects.map { |o| File.basename(o) } end
Find all objects in the given location If the object type is File it will look for all *.{json,rb} files, otherwise it will lookup for folders only (useful for data_bags)
@param [String] path - base look up location
@return [Array<String>] basenames of the found objects
@api public
# File lib/chef/knife/core/object_loader.rb, line 69 def find_all_objects(path) path = File.join(path, '*') path << '.{json,rb}' objects = Dir.glob(File.expand_path(path)) objects.map { |o| File.basename(o) } end
When someone makes this awesome, please update the above error message.
# File lib/chef/knife/core/object_loader.rb, line 46 def find_file(repo_location, *components) if file_exists_and_is_readable?(File.expand_path( components.last )) File.expand_path( components.last ) else relative_path = File.join(Dir.pwd, repo_location, *components) if file_exists_and_is_readable?(relative_path) relative_path else nil end end end
# File lib/chef/knife/core/object_loader.rb, line 37 def load_from(repo_location, *components) unless object_file = find_file(repo_location, *components) ui.error "Could not find or open file '#{components.last}' in current directory or in '#{repo_location}/#{components.join('/')}'" exit 1 end object_from_file(object_file) end
# File lib/chef/knife/core/object_loader.rb, line 83 def object_from_file(filename) case filename when /\.(js|json)$/ r = Yajl::Parser.parse(IO.read(filename)) # Chef::DataBagItem doesn't work well with the json_create method if @klass == Chef::DataBagItem r else @klass.json_create(r) end when /\.rb$/ r = klass.new r.from_file(filename) r else ui.fatal("File must end in .js, .json, or .rb") exit 30 end end
Generated with the Darkfish Rdoc Generator 2.