Class: Metanorma::Release::Config

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

Class Method Summary collapse

Instance Method Summary collapse

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

#channelsObject



35
36
37
# File 'lib/metanorma/release/config.rb', line 35

def channels
  @data.fetch("channels", [])
end

#default_channelsObject



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

#defaultsObject



67
68
69
# File 'lib/metanorma/release/config.rb', line 67

def defaults
  @data.fetch("defaults", {})
end

#documentsObject



63
64
65
# File 'lib/metanorma/release/config.rb', line 63

def documents
  @data.fetch("documents", [])
end

#orgObject



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

#routingObject



39
40
41
# File 'lib/metanorma/release/config.rb', line 39

def routing
  @data.fetch("routing", {})
end

#routing_defaultObject



43
44
45
# File 'lib/metanorma/release/config.rb', line 43

def routing_default
  routing.fetch("default", ["public"])
end

#routing_rulesObject



47
48
49
# File 'lib/metanorma/release/config.rb', line 47

def routing_rules
  routing.fetch("rules", [])
end

#slug_configObject



51
52
53
# File 'lib/metanorma/release/config.rb', line 51

def slug_config
  @data.fetch("slug", {})
end

#slug_default_strategyObject



55
56
57
# File 'lib/metanorma/release/config.rb', line 55

def slug_default_strategy
  slug_config.fetch("default", "edition")
end

#slug_strategiesObject



59
60
61
# File 'lib/metanorma/release/config.rb', line 59

def slug_strategies
  slug_config.fetch("strategies", {})
end