class Navo::Berksfile

A global Berksfile to be shared amongst all threads.

This synchronizes access so we don’t have multiple threads doing the same work resolving cookbooks.

Attributes

config[RW]
path[RW]

Public Class Methods

cache_directory() click to toggle source
# File lib/navo/berksfile.rb, line 38
def cache_directory
  Berkshelf::CookbookStore.default_path
end
install(logger: nil) click to toggle source
# File lib/navo/berksfile.rb, line 18
def install(logger: nil)
  if @installed
    logger.info 'Berksfile cookbooks already resolved'
    return
  end

  logger.info 'Installing Berksfile...'
  Berkshelf.logger = Celluloid.logger = logger
  Berkshelf.ui.mute { Berkshelf::Installer.new(berksfile).run }
  Celluloid.logger = nil # Ignore annoying shutdown messages

  @installed = true
end
load() click to toggle source
# File lib/navo/berksfile.rb, line 13
def load
  require 'berkshelf' # Lazily require so we don't have to load for every command
  berksfile
end
lockfile_path() click to toggle source
# File lib/navo/berksfile.rb, line 47
def lockfile_path
  berksfile.lockfile.filepath
end
vendor(logger:) click to toggle source
# File lib/navo/berksfile.rb, line 32
def vendor(logger:)
    Berkshelf.logger = Celluloid.logger = logger
    Berkshelf.ui.mute { berksfile.vendor(vendor_directory) }
    Celluloid.logger = nil # Ignore annoying shutdown messages
end
vendor_directory() click to toggle source
# File lib/navo/berksfile.rb, line 42
def vendor_directory
  @vendor_directory ||=
    FileUtils.mkdir_p(File.join(config.repo_root, %w[.navo vendored-cookbooks])).first
end

Private Class Methods

berksfile() click to toggle source
# File lib/navo/berksfile.rb, line 53
def berksfile
  @berksfile ||= Berkshelf::Berksfile.from_file(@path)
end