class LicenseScout::DependencyManager::Berkshelf

Public Instance Methods

dependencies() click to toggle source
# File lib/license_scout/dependency_manager/berkshelf.rb, line 44
def dependencies
  unless berkshelf_available?
    raise LicenseScout::Exceptions::Error.new("Project at '#{directory}' is a Berkshelf project but berkshelf gem is not available in your bundle. Add berkshelf to your bundle in order to collect licenses for this project.")
  end

  cookbook_dependencies = []

  Dir.chdir(directory) do
    berksfile = ::Berkshelf::Berksfile.from_file("./Berksfile")

    # Berkshelf should not give an error when there are cookbooks in the
    # lockfile that are no longer in the berksfile. It handles this case in
    # the Installer class which we are not using here. So we handle this
    # case in the same way Installer does.
    berksfile.lockfile.reduce!

    cookbook_dependencies = berksfile.list
  end

  cookbook_dependencies.map do |dep|
    new_dependency(dep.name, dep.cached_cookbook.version, dep.cached_cookbook.path.to_s)
  end.compact
end
detected?() click to toggle source
# File lib/license_scout/dependency_manager/berkshelf.rb, line 40
def detected?
  File.exist?(berksfile_path) && File.exist?(lockfile_path)
end
install_command() click to toggle source
# File lib/license_scout/dependency_manager/berkshelf.rb, line 36
def install_command
  "berks install"
end
name() click to toggle source
# File lib/license_scout/dependency_manager/berkshelf.rb, line 24
def name
  "chef_berkshelf"
end
signature() click to toggle source
# File lib/license_scout/dependency_manager/berkshelf.rb, line 32
def signature
  "Berksfile and Berksfile.lock files"
end
type() click to toggle source
# File lib/license_scout/dependency_manager/berkshelf.rb, line 28
def type
  "chef_cookbook"
end

Private Instance Methods

berksfile_path() click to toggle source
# File lib/license_scout/dependency_manager/berkshelf.rb, line 80
def berksfile_path
  File.join(directory, "Berksfile")
end
berkshelf_available?() click to toggle source
# File lib/license_scout/dependency_manager/berkshelf.rb, line 70
def berkshelf_available?
  begin
    require "berkshelf"
  rescue LoadError
    return false
  end

  true
end
lockfile_path() click to toggle source
# File lib/license_scout/dependency_manager/berkshelf.rb, line 84
def lockfile_path
  File.join(directory, "Berksfile.lock")
end