class PowerStencil::Engine::ProjectEngine

Attributes

project[R]

Public Class Methods

new(project) click to toggle source
Calls superclass method PowerStencil::Engine::Base::new
# File lib/power_stencil/engine/project_engine.rb, line 15
def initialize(project)
  super()
  @project = project
  load_system_entities_definition
  load_plugins_entities_definition
  load_project_entities_definition
  load_entities
end

Public Instance Methods

running_context(universe = root_universe, main_entry_point: nil) click to toggle source
# File lib/power_stencil/engine/project_engine.rb, line 24
def running_context(universe = root_universe, main_entry_point: nil)
  context = dsl.new universe
  apply_plugins_dsl_definition context
  context.main_entry_point = main_entry_point
  context.instance_eval do
    binding
  end
end

Protected Instance Methods

load_entities() click to toggle source
# File lib/power_stencil/engine/project_engine.rb, line 43
def load_entities
  root_universe.clear
  load_system_entities
  load_project_entities
  load_user_entities
end
load_project_entities_definition() click to toggle source
# File lib/power_stencil/engine/project_engine.rb, line 34
def load_project_entities_definition
  dir = project.project_entity_definitions_path
  if Dir.exist? dir and File.readable? dir
    logger.info 'Loading project specific entity definitions.'
    $LOAD_PATH << dir
    require_definition_files [dir], project
  end
end

Private Instance Methods

apply_plugins_dsl_definition(context) click to toggle source
# File lib/power_stencil/engine/project_engine.rb, line 58
def apply_plugins_dsl_definition(context)
  project.plugins_sorted_by_dependency.each do |plugin|
    plugin.apply_extra_dsl context
  end
end
load_plugins_entities_definition() click to toggle source
# File lib/power_stencil/engine/project_engine.rb, line 52
def load_plugins_entities_definition
  project.plugins_sorted_by_dependency.each do |plugin|
    plugin.require_plugin_entity_definitions
  end
end
load_project_entities() click to toggle source
# File lib/power_stencil/engine/project_engine.rb, line 64
def load_project_entities
  root_universe.import project.project_entities_path, stop_on_error: false do |new_entity|
    logger.debug "Loaded entity: '#{new_entity.as_path}'"
  end
end
load_user_entities() click to toggle source
# File lib/power_stencil/engine/project_engine.rb, line 70
def load_user_entities
  root_universe.import project.user_entities_path, stop_on_error: false do |new_entity|
    logger.debug "Loaded unversioned entity: '#{new_entity.as_path}'"
    new_entity.instance_eval do
      @is_versioned_entity = false
    end
  end
end