Class: Mxrb::Compiler::SettingsMaterializer

Inherits:
Object
  • Object
show all
Defined in:
lib/mxrb/compiler/settings_materializer.rb

Overview

Synchronizes Runtime-visible project settings, including lifecycle microflows.

Instance Method Summary collapse

Constructor Details

#initialize(mpr_path, deployment:) ⇒ SettingsMaterializer

Returns a new instance of SettingsMaterializer.



9
10
11
12
# File 'lib/mxrb/compiler/settings_materializer.rb', line 9

def initialize(mpr_path, deployment:)
  @mpr_path = File.expand_path(mpr_path)
  @deployment = File.expand_path(deployment)
end

Instance Method Details

#materializeObject



14
15
16
17
18
19
20
21
22
# File 'lib/mxrb/compiler/settings_materializer.rb', line 14

def materialize
  source = SourceModel.read(@mpr_path)
  path = File.join(@deployment, 'model', 'model.mdp')
  package = ModelPackage.read(path)
  compiler = SettingsDocumentCompiler.new(RuntimeModelSchema.new(package, version: source.version))
  documents = source.units_of('Settings$ProjectSettings').map { compiler.compile(_1) }
  documents.reduce(package) { |result, document| result.upsert(document) }.write(path)
  SettingsMaterialization.new(model_path: path, documents: documents.length)
end