Class: Metanorma::Release::AggregationPipeline

Inherits:
Object
  • Object
show all
Defined in:
lib/metanorma/release/aggregation_pipeline.rb

Defined Under Namespace

Classes: Config, Dependencies, Result

Instance Method Summary collapse

Constructor Details

#initialize(deps) ⇒ AggregationPipeline

Returns a new instance of AggregationPipeline.



25
26
27
# File 'lib/metanorma/release/aggregation_pipeline.rb', line 25

def initialize(deps)
  @deps = deps
end

Instance Method Details

#run(config, output_dir) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/metanorma/release/aggregation_pipeline.rb', line 29

def run(config, output_dir)
  @deps.delta_state.load
  repos = @deps.discoverer.discover
  documents = []
  reports = []
  failed_repos = []

  repos.each do |repo|
    repo_docs, report = process_repo(repo, output_dir, config)
    documents.concat(repo_docs)
    reports << report
  rescue StandardError => e
    failed_repos << RepoError.new(tag: repo.to_s, message: e.message)
    raise if config.fail_on_error
  end

  @deps.delta_state.save

  Result.new(
    documents: documents,
    repo_count: repos.length,
    channels_found: documents.flat_map { |d| d.channels || [] }.uniq.sort,
    report: reports,
    failed_repos: failed_repos
  )
end