Class: Lono::Configset::Resolver

Inherits:
Object
  • Object
show all
Extended by:
Memoist
Defined in:
lib/lono/configset/resolver.rb

Constant Summary collapse

@@dependencies =

save to later regsiter configsets

[]
@@resolving_message_shown =
false

Instance Method Summary collapse

Instance Method Details

#registerObject



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/lono/configset/resolver.rb', line 29

def register
  @@dependencies.each do |jade|
    # dependency jades have minimal registry info. For additional info is pulled from stored reference data in
    # jade like jade.resource_from_parent.
    registry = jade.registry
    registry.resource = jade.resource_from_parent

    # Always prepend to Register::Blueprint.configsets to ensure they are run before any other configset.
    # Leaving old code in place for now. Possibly revisit this approach.
    Register::Blueprint.prepend(registry)
    # if jade.type == "blueprint/configset"
    #   Register::Blueprint.prepend(registry)
    # elsif jade.type == "configset"
    #   Register::Project.prepend(registry)
    # end
  end
end

#resolve(*unresolved) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/lono/configset/resolver.rb', line 8

def resolve(*unresolved)
  unresolved.flatten! # initially only top-level
  unresolved.uniq! { |jade| jade.name }
  puts "Resolving dependencies..." if !@@resolving_message_shown && !unresolved.empty?
  puts "Resolving #{unresolved.map(&:name)}" if ENV['LONO_DEBUG_CONFIGSET']

  @@resolving_message_shown = true

  unresolved.each do |jade|
    jade.check_for_circular_dependency!
    jade.materialize
    jade.dependencies.each do |j|
      @@dependencies << j # store for later registration
      unless j.resolved? or unresolved.include?(j)
        resolve(j)
      end
    end
    jade.resolved! # resolve after depth-first tranversal. So all dependencies have also been resolved at this point.
  end
end