class Berkshelf::ChefRepoUniverse

Shim to look like a Berkshelf::APIClient but for a chef repo folder.

@since 6.1

Public Class Methods

new(uri, **options) click to toggle source
# File lib/berkshelf/chef_repo_universe.rb, line 9
def initialize(uri, **options)
  @uri = uri
  @path = options[:path]
  @options = options
end

Public Instance Methods

universe() click to toggle source
# File lib/berkshelf/chef_repo_universe.rb, line 15
def universe
  Dir.entries(cookbooks_path).sort.each_with_object([]) do |entry, cookbooks|
    next if entry[0] == "." # Skip hidden folders.

    entry_path = "#{cookbooks_path}/#{entry}"
    next unless File.directory?(entry_path) # Skip non-dirs.

    cookbook = begin
      Berkshelf::CachedCookbook.from_path(entry_path)
               rescue IOError
                 next # It wasn't a cookbook.
    end
    cookbooks << Berkshelf::APIClient::RemoteCookbook.new(
      cookbook.cookbook_name,
      cookbook.version,
      location_type: "file_store",
      location_path: entry_path,
      dependencies: cookbook.metadata.dependencies
    )
  end
end

Private Instance Methods

cookbooks_path() click to toggle source
# File lib/berkshelf/chef_repo_universe.rb, line 39
def cookbooks_path
  if File.exist?("#{@path}/cookbooks")
    "#{@path}/cookbooks"
  else
    @path
  end
end