Class: Metanorma::Release::AggregationPipeline

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

Overview

rubocop:disable Metrics/ClassLength

Defined Under Namespace

Classes: Config, Dependencies, Result

Instance Method Summary collapse

Constructor Details

#initialize(deps) ⇒ AggregationPipeline

Returns a new instance of AggregationPipeline.



54
55
56
# File 'lib/metanorma/release/aggregation_pipeline.rb', line 54

def initialize(deps)
  @deps = deps
end

Instance Method Details

#run(config, output_dir) ⇒ Object



58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/metanorma/release/aggregation_pipeline.rb', line 58

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

  repos.each do |repo|
    repo_docs, report = process_repo(repo, output_dir, config)
    publications.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(
    publications: publications,
    repo_count: repos.length,
    channels_found: publications.flat_map(&:channels).uniq.sort,
    report: reports,
    failed_repos: failed_repos,
  )
end