Class: Stupidedi::Schema::Generation::Runner
- Inherits:
-
Object
- Object
- Stupidedi::Schema::Generation::Runner
- Defined in:
- lib/stupidedi/schema/generation/runner.rb
Overview
Orchestrates a full-release generation run. Reads the flat files, then
runs every generator in dependency order. Mirrors the Tediware
stupidedi:generate_version pipeline.
All files are generated into a temporary staging directory first. The
registration and master-loader generators scan that staging tree (not
the live out), so their content is always consistent with the run -
including under write: false (dry-run previews are accurate). On a
successful write run the staging tree is copied into out in one step,
so a failure partway through never leaves a half-written tree.
Defined Under Namespace
Classes: Result
Instance Method Summary collapse
-
#initialize(table_data:, release:, out:, namespace: "Edi", write: true, master_loader: false, logger: nil) ⇒ Runner
constructor
A new instance of Runner.
-
#run ⇒ Array<Result>
One entry per generated file.
Constructor Details
#initialize(table_data:, release:, out:, namespace: "Edi", write: true, master_loader: false, logger: nil) ⇒ Runner
Returns a new instance of Runner.
23 24 25 26 27 28 29 30 31 |
# File 'lib/stupidedi/schema/generation/runner.rb', line 23 def initialize(table_data:, release:, out:, namespace: "Edi", write: true, master_loader: false, logger: nil) @table_data = table_data @release_code = release @out = out @namespace = namespace @write = write @master_loader = master_loader @logger = logger end |
Instance Method Details
#run ⇒ Array<Result>
Returns one entry per generated file.
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/stupidedi/schema/generation/runner.rb', line 34 def run Generation.validate_namespace!(@namespace) validate_release! release = FlatFileReader.read(@table_data, @release_code) guard_against_empty!(release) log "Read release #{release.code}: " \ "#{release.elements.size} elements, #{release.segments.size} segments, " \ "#{release.transaction_sets.size} transaction sets" results = [] Dir.mktmpdir("tediparse-gen") do |staging| @staging = staging results = generate_all(release) if @write ensure_out replace_staged_release_dirs FileUtils.cp_r(File.join(staging, "."), @out) end end log "#{@write ? 'Wrote' : 'Previewed'} #{results.size} files under #{@out}" results end |