Class: Metanorma::Release::AggregateCommand
- Inherits:
-
Object
- Object
- Metanorma::Release::AggregateCommand
- Defined in:
- lib/metanorma/release/commands/aggregate.rb
Defined Under Namespace
Classes: Config
Constant Summary collapse
- DEFAULT_CONFIG_FILE =
"metanorma.aggregate.yml"- DEFAULT_CACHE_DIR =
".cache/aggregate"
Class Method Summary collapse
- .build_config(cli_options) ⇒ Object
- .load_config_file(path) ⇒ Object
- .merge_config(file_data, cli_options) ⇒ Object
Instance Method Summary collapse
- #call ⇒ Object
-
#initialize(config) ⇒ AggregateCommand
constructor
A new instance of AggregateCommand.
Constructor Details
#initialize(config) ⇒ AggregateCommand
Returns a new instance of AggregateCommand.
19 20 21 |
# File 'lib/metanorma/release/commands/aggregate.rb', line 19 def initialize(config) @config = config end |
Class Method Details
.build_config(cli_options) ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/metanorma/release/commands/aggregate.rb', line 38 def self.build_config() file_data = load_config_file([:config]) merged = merge_config(file_data, ) Config.new( source: merged[:source], organizations: merged[:organizations], topic: merged[:topic], repos: merged[:repos], channels: merged[:channels], stages: merged[:stages], output_dir: merged[:output_dir], file_routing: merged[:file_routing], cache_dir: merged[:cache_dir] || DEFAULT_CACHE_DIR, data_dir: merged[:data_dir], include_drafts: merged[:include_drafts], concurrency: merged[:concurrency], min_documents: merged[:min_documents], token: merged[:token], create_zip: merged[:create_zip], ) end |
.load_config_file(path) ⇒ Object
60 61 62 63 64 65 |
# File 'lib/metanorma/release/commands/aggregate.rb', line 60 def self.load_config_file(path) path ||= DEFAULT_CONFIG_FILE return {} unless File.exist?(path) YAML.safe_load_file(path, permitted_classes: [Symbol]) || {} end |
.merge_config(file_data, cli_options) ⇒ Object
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/metanorma/release/commands/aggregate.rb', line 67 def self.merge_config(file_data, ) gh = file_data["github"] || {} { source: [:source] || file_data["source"], organizations: [:organizations].any? ? [:organizations] : Array(gh["organizations"]), topic: [:topic] || gh["topic"], repos: [:repos] || file_data["repos"], channels: [:channels].any? ? [:channels] : Array(file_data["channels"]), stages: [:stages].any? ? [:stages] : Array(file_data["stages"]), output_dir: [:output_dir] || file_data["output_dir"], file_routing: [:file_routing] || file_data["file_routing"], cache_dir: [:cache_dir] || file_data["cache_dir"], data_dir: [:data_dir] || file_data["data_dir"], include_drafts: [:include_drafts] || file_data["include_drafts"], concurrency: [:concurrency] || file_data["concurrency"], min_documents: [:min_documents] || file_data["min_documents"], token: [:token], create_zip: [:create_zip], } end |
Instance Method Details
#call ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/metanorma/release/commands/aggregate.rb', line 23 def call result = run_aggregation return result unless result.publications.any? index = build_index(result) site = Site.new(index: index, output_dir: @config.output_dir, data_dir: @config.data_dir) site.write! site.enrich! site.package! if @config.create_zip stamp_primary_identifiers(index) result end |