Class: Metanorma::Release::Config
- Inherits:
-
Object
- Object
- Metanorma::Release::Config
- Defined in:
- lib/metanorma/release/config.rb
Class Method Summary collapse
- .defaults(org_config: nil) ⇒ Object
- .from_file(path, org_config: nil) ⇒ Object
- .from_yaml(yaml_string, org_config: nil) ⇒ Object
Instance Method Summary collapse
- #channels ⇒ Object
- #default_channels ⇒ Object
- #defaults ⇒ Object
- #documents ⇒ Object
-
#initialize(data, org_config: nil) ⇒ Config
constructor
A new instance of Config.
- #org ⇒ Object
- #resolve_channels(publication) ⇒ Object
- #routing ⇒ Object
- #routing_default ⇒ Object
- #routing_rules ⇒ Object
- #slug_config ⇒ Object
- #slug_default_strategy ⇒ Object
- #slug_strategies ⇒ Object
Constructor Details
#initialize(data, org_config: nil) ⇒ Config
Returns a new instance of Config.
26 27 28 29 |
# File 'lib/metanorma/release/config.rb', line 26 def initialize(data, org_config: nil) @data = data @org_config = org_config end |
Class Method Details
.defaults(org_config: nil) ⇒ Object
22 23 24 |
# File 'lib/metanorma/release/config.rb', line 22 def self.defaults(org_config: nil) new({}, org_config: org_config) end |
.from_file(path, org_config: nil) ⇒ Object
13 14 15 16 17 18 19 20 |
# File 'lib/metanorma/release/config.rb', line 13 def self.from_file(path, org_config: nil) unless File.exist?(path) raise ArgumentError, "Config file not found: #{path}" end from_yaml(File.read(path), org_config: org_config) end |
.from_yaml(yaml_string, org_config: nil) ⇒ Object
8 9 10 11 |
# File 'lib/metanorma/release/config.rb', line 8 def self.from_yaml(yaml_string, org_config: nil) data = YAML.safe_load(yaml_string, permitted_classes: [Symbol]) new(data || {}, org_config: org_config) end |
Instance Method Details
#channels ⇒ Object
35 36 37 |
# File 'lib/metanorma/release/config.rb', line 35 def channels @data.fetch("channels", []) end |
#default_channels ⇒ Object
71 72 73 74 75 76 |
# File 'lib/metanorma/release/config.rb', line 71 def default_channels list = defaults.fetch("channels", nil) return ["public"] unless list list end |
#defaults ⇒ Object
67 68 69 |
# File 'lib/metanorma/release/config.rb', line 67 def defaults @data.fetch("defaults", {}) end |
#documents ⇒ Object
63 64 65 |
# File 'lib/metanorma/release/config.rb', line 63 def documents @data.fetch("documents", []) end |
#org ⇒ Object
31 32 33 |
# File 'lib/metanorma/release/config.rb', line 31 def org @data["org"] end |
#resolve_channels(publication) ⇒ Object
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
# File 'lib/metanorma/release/config.rb', line 78 def resolve_channels(publication) manifest_channels = resolve_manifest_channels(publication) return manifest_channels if manifest_channels rule_channels = resolve_routing_rules(publication) return rule_channels if rule_channels org_rule_channels = resolve_org_routing_rules(publication) return org_rule_channels if org_rule_channels local_default = routing_default return local_default unless local_default == ["public"] && @org_config org_default = @org_config&.routing_default return org_default unless org_default.nil? || org_default.empty? default_channels end |
#routing ⇒ Object
39 40 41 |
# File 'lib/metanorma/release/config.rb', line 39 def routing @data.fetch("routing", {}) end |
#routing_default ⇒ Object
43 44 45 |
# File 'lib/metanorma/release/config.rb', line 43 def routing_default routing.fetch("default", ["public"]) end |
#routing_rules ⇒ Object
47 48 49 |
# File 'lib/metanorma/release/config.rb', line 47 def routing_rules routing.fetch("rules", []) end |
#slug_config ⇒ Object
51 52 53 |
# File 'lib/metanorma/release/config.rb', line 51 def slug_config @data.fetch("slug", {}) end |
#slug_default_strategy ⇒ Object
55 56 57 |
# File 'lib/metanorma/release/config.rb', line 55 def slug_default_strategy slug_config.fetch("default", "edition") end |
#slug_strategies ⇒ Object
59 60 61 |
# File 'lib/metanorma/release/config.rb', line 59 def slug_strategies slug_config.fetch("strategies", {}) end |