class Inspec::DependencySet


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|
    # if depedent profile does not have a source version then only name is used in dependency hash
    key_name = (d.source_version.blank? ? "#{d.name}" : "#{d.name}-#{d.source_version}") rescue "#{d.name}"
    dep_list[key_name] = d
    dep_list.merge!(flatten_dep_tree(d.dependencies))
  end
  dep_list
end

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

def self.from_array(dependencies, cwd, cache, backend)
  dep_list = {}
  dependencies.each do |d|
    # if depedent profile does not have a source version then only name is used in dependency hash
    key_name = (d.source_version.blank? ? "#{d.name}" : "#{d.name}-#{d.source_version}") rescue "#{d.name}"
    dep_list[key_name] = d
  end
  new(cwd, cache, dep_list, backend)
end

def self.from_lockfile(lockfile, config, opts = {})

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, config, opts = {})
  dep_tree = lockfile.deps.map do |dep|
    Inspec::Requirement.from_lock_entry(dep, config, opts)
  end
  dep_list = flatten_dep_tree(dep_tree)
  new(config[:cwd], config[:cache], dep_list, config[:backend])
end

def each

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

def initialize(cwd, cache, 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, cache, dep_list, backend)
  @cwd = cwd
  @cache = cache
  @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?
  @dep_list = Resolver.resolve(dependencies, @cache, @cwd, @backend)
end