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)
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)
-
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)
-
(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)
-
(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