class Inspec::DependencySet


VendorIndex and the Resolver.
Currently this class is a thin wrapper interface to coordinate the
A DependencySet manages a list of dependencies for a profile.

def self.flatten_dep_tree(dep_tree)

right now. Last dep seen for a given name wins right now.
Flatten tree because that is all we know how to deal with for

in the future.
dependency loader - perform a proper dependency related search
This is experimental code to test the working of the
def self.flatten_dep_tree(dep_tree)
  dep_list = {}
  dep_tree.each do |d|
    dep_list[d.name] = d
    dep_list.merge!(flatten_dep_tree(d.dependencies))
  end
  dep_list
end

def self.from_array(dependencies, cwd, vendor_path, backend)

def self.from_array(dependencies, cwd, vendor_path, backend)
  dep_list = {}
  dependencies.each do |d|
    dep_list[d.name] = d
  end
  new(cwd, vendor_path, dep_list, backend)
end

def self.from_lockfile(lockfile, cwd, vendor_path, backend)

Parameters:
  • vendor_path (String) -- Path to the vendor directory
  • cwd (String) -- Current working directory for relative path includes
  • lockfile (Inspec::Lockfile) -- A lockfile to generate the dependency set from
def self.from_lockfile(lockfile, cwd, vendor_path, backend)
  vendor_index = VendorIndex.new(vendor_path)
  dep_tree = lockfile.deps.map do |dep|
    Inspec::Requirement.from_lock_entry(dep, cwd, vendor_index, backend)
  end
  dep_list = flatten_dep_tree(dep_tree)
  new(cwd, vendor_path, dep_list, backend)
end

def each

def each
  @dep_list.each do |_k, v|
    yield v.profile
  end
end

def initialize(cwd, vendor_path, dep_list, backend)

Returns:
  • (dependencies) - this

Parameters:
  • vendor_path (String) -- path which contains vendored dependencies
  • cwd (String) -- current working directory for relative path includes
def initialize(cwd, vendor_path, dep_list, backend)
  @cwd = cwd
  @vendor_path = vendor_path
  @dep_list = dep_list
  @backend = backend
end

def list

def list
  @dep_list || {}
end

def to_array

def to_array
  return [] if @dep_list.nil?
  @dep_list.map do |_k, v|
    v.to_hash
  end.compact
end

def vendor(dependencies)

Returns:
  • (nil) -

Parameters:
  • dependencies (Gem::Dependency) -- list of dependencies
def vendor(dependencies)
  return nil if dependencies.nil? || dependencies.empty?
  @vendor_index ||= VendorIndex.new(@vendor_path)
  @dep_list = Resolver.resolve(dependencies, @vendor_index, @cwd, @backend)
end