Sha256: 9d9241da755a864f3f3811e6e149b94c8a1639be0795f37c70e79dd8c9b9f597

Contents?: true

Size: 1.67 KB

Versions: 15

Compression:

Stored size: 1.67 KB

Contents

class Lono::Configset
  class Resolver
    extend Memoist

    @@dependencies = [] # save to later regsiter configsets

    @@resolving_message_shown = false
    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

    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
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
lono-7.5.2 lib/lono/configset/resolver.rb
lono-7.5.1 lib/lono/configset/resolver.rb
lono-7.5.0 lib/lono/configset/resolver.rb
lono-7.4.11 lib/lono/configset/resolver.rb
lono-7.4.10 lib/lono/configset/resolver.rb
lono-7.4.9 lib/lono/configset/resolver.rb
lono-7.4.8 lib/lono/configset/resolver.rb
lono-7.4.7 lib/lono/configset/resolver.rb
lono-7.4.6 lib/lono/configset/resolver.rb
lono-7.4.5 lib/lono/configset/resolver.rb
lono-7.4.4 lib/lono/configset/resolver.rb
lono-7.4.3 lib/lono/configset/resolver.rb
lono-7.4.2 lib/lono/configset/resolver.rb
lono-7.4.1 lib/lono/configset/resolver.rb
lono-7.4.0 lib/lono/configset/resolver.rb