class Inspec::DependencySet

A DependencySet manages a list of dependencies for a profile.

Attributes

dep_list[RW]
vendor_path[R]

Public Class Methods

flatten_dep_tree(dep_tree) click to toggle source

This is experimental code to test the working of the dependency loader - perform a proper dependency related search in the future.

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

# File lib/inspec/dependencies/dependency_set.rb, line 39
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
from_array(dependencies, cwd, cache, backend) click to toggle source
# File lib/inspec/dependencies/dependency_set.rb, line 25
def self.from_array(dependencies, cwd, cache, backend)
  dep_list = {}
  dependencies.each do |d|
    dep_list[d.name] = d
  end
  new(cwd, cache, dep_list, backend)
end
from_lockfile(lockfile, config, opts = {}) click to toggle source

Return a dependency set given a lockfile.

@param lockfile [Inspec::Lockfile] A lockfile to generate the dependency set from @param cwd [String] Current working directory for relative path includes @param vendor_path [String] Path to the vendor directory

# File lib/inspec/dependencies/dependency_set.rb, line 16
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
new(cwd, cache, dep_list, backend) click to toggle source

initialize

@param cwd [String] current working directory for relative path includes @param vendor_path [String] path which contains vendored dependencies @return [dependencies] this

# File lib/inspec/dependencies/dependency_set.rb, line 55
def initialize(cwd, cache, dep_list, backend)
  @cwd = cwd
  @cache = cache
  @dep_list = dep_list
  @backend = backend
end

Public Instance Methods

each() { |profile| ... } click to toggle source
# File lib/inspec/dependencies/dependency_set.rb, line 62
def each
  @dep_list.each do |_k, v|
    yield v.profile
  end
end
list() click to toggle source
# File lib/inspec/dependencies/dependency_set.rb, line 68
def list
  @dep_list || {}
end
to_array() click to toggle source
# File lib/inspec/dependencies/dependency_set.rb, line 72
def to_array
  return [] if @dep_list.nil?

  @dep_list.map do |_k, v|
    v.to_hash
  end.compact
end
vendor(dependencies) click to toggle source
  1. Get dependencies, pull things to a local cache if necessary

  2. Resolve dependencies

@param dependencies [Gem::Dependency] list of dependencies @return [nil]

# File lib/inspec/dependencies/dependency_set.rb, line 87
def vendor(dependencies)
  return nil if dependencies.nil? || dependencies.empty?

  @dep_list = Resolver.resolve(dependencies, @cache, @cwd, @backend)
end