Class: Metanorma::Release::OrgConfig

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

Defined Under Namespace

Classes: Ref

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(data) ⇒ OrgConfig

Returns a new instance of OrgConfig.



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

def initialize(data)
  @data = data
end

Class Method Details

.default_config_nameObject



19
20
21
# File 'lib/metanorma/release/org_config.rb', line 19

def self.default_config_name
  "channels"
end

.defaultsObject



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

def self.defaults
  new({})
end

.from_file(path) ⇒ Object

Raises:

  • (ArgumentError)


33
34
35
36
37
# File 'lib/metanorma/release/org_config.rb', line 33

def self.from_file(path)
  raise ArgumentError, "Org config file not found: #{path}" unless File.exist?(path)

  from_yaml(File.read(path))
end

.from_yaml(yaml_string) ⇒ Object



28
29
30
31
# File 'lib/metanorma/release/org_config.rb', line 28

def self.from_yaml(yaml_string)
  data = YAML.safe_load(yaml_string, permitted_classes: [Symbol])
  new(data || {})
end

.parse_ref(org_string) ⇒ Object

Raises:

  • (ArgumentError)


10
11
12
13
14
15
16
17
# File 'lib/metanorma/release/org_config.rb', line 10

def self.parse_ref(org_string)
  parts = org_string.to_s.split("#", 2)
  slug = parts[0].to_s.strip
  segments = slug.split("/", 2)
  raise ArgumentError, "Invalid org reference: #{org_string}" unless segments.length == 2

  Ref.new(owner: segments[0], repo: segments[1], name: parts[1]&.strip)
end

.remote_path(ref) ⇒ Object



23
24
25
26
# File 'lib/metanorma/release/org_config.rb', line 23

def self.remote_path(ref)
  name = ref.name || default_config_name
  ".metanorma/#{name}.yml"
end

Instance Method Details

#channelsObject



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

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

#routing_defaultObject



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

def routing_default
  dig_defaults_routing("default") || []
end

#routing_rulesObject



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

def routing_rules
  dig_defaults_routing("rules") || []
end

#valid_channel?(name) ⇒ Boolean

Returns:

  • (Boolean)


59
60
61
62
63
64
65
66
67
# File 'lib/metanorma/release/org_config.rb', line 59

def valid_channel?(name)
  return true if channels.empty?

  ch = Channel.new(name)
  channels.any? do |valid|
    valid_ch = Channel.new(valid)
    ch.eql?(valid_ch) || ch.name.start_with?("#{valid_ch.name}/") || valid_ch.name.start_with?("#{ch.name}/")
  end
end