Class: Factorix::Dependency::Graph::Builder
- Inherits:
-
Object
- Object
- Factorix::Dependency::Graph::Builder
- Defined in:
- lib/factorix/dependency/graph/builder.rb
Overview
Builds a dependency graph from installed MODs and MOD list
The Builder constructs a Graph by:
-
Creating nodes for all installed MODs
-
Setting enabled state from mod-list.json
-
Creating edges from dependency information in info.json
Class Method Summary collapse
-
.build(installed_mods:, mod_list:) ⇒ Factorix::Dependency::Graph
Build a dependency graph from current state.
Instance Method Summary collapse
-
#build ⇒ Factorix::Dependency::Graph
Build the graph.
-
#initialize(installed_mods:, mod_list:) ⇒ Builder
constructor
A new instance of Builder.
Constructor Details
#initialize(installed_mods:, mod_list:) ⇒ Builder
Returns a new instance of Builder.
22 23 24 25 |
# File 'lib/factorix/dependency/graph/builder.rb', line 22 def initialize(installed_mods:, mod_list:) @installed_mods = installed_mods @mod_list = mod_list end |
Class Method Details
.build(installed_mods:, mod_list:) ⇒ Factorix::Dependency::Graph
Build a dependency graph from current state
18 |
# File 'lib/factorix/dependency/graph/builder.rb', line 18 def self.build(installed_mods:, mod_list:) = new(installed_mods:, mod_list:).build |
Instance Method Details
#build ⇒ Factorix::Dependency::Graph
Build the graph
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/factorix/dependency/graph/builder.rb', line 30 def build graph = Graph.new unique_mods = @installed_mods.map(&:mod) unique_mods.uniq! unique_mods.each do |mod| add_node_for_mod(graph, mod) end # Only active versions contribute edges active_versions = graph.nodes.to_h {|node| [node.mod, node.version] } @installed_mods.each do |installed_mod| next unless active_versions[installed_mod.mod] == installed_mod.version add_edges_for_dependencies(graph, installed_mod) end graph end |