Method: Lyp::DependencyResolver#compile_dependency_tree

Defined in:
lib/lyp/resolver.rb

#compile_dependency_tree(opts = {}) ⇒ Object

Each “leaf” on the dependency tree is a hash of the following structure:

dependencies: {
  "<package_name>" => {
    clause: "<package>@<version_specifier>",
    versions: {
      "<version>" => {...
      ...
    }
  }
}

}

Since files to be processed are added to a queue, this method loops through the queue until it’s empty.



144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
# File 'lib/lyp/resolver.rb', line 144

def compile_dependency_tree(opts = {})
  old_opts = @opts
  @opts = @opts.merge(opts)
  @queue = []
  @processed_files = {}
  @tree ||= DependencyLeaf.new

  queue_file_for_processing(@user_file, @tree)

  while job = pull_file_from_queue
    process_lilypond_file(job[:path], job[:leaf], opts)
  end

  unless @opts[:ignore_missing]
    squash_old_versions
    remove_unfulfilled_dependencies(tree)
  end

  @tree
ensure
  @opts = old_opts
end