Class: Legion::Workflow::Manifest

Inherits:
Object
  • Object
show all
Defined in:
lib/legion/workflow/manifest.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(path:) ⇒ Manifest

Returns a new instance of Manifest.



10
11
12
13
14
15
16
17
18
# File 'lib/legion/workflow/manifest.rb', line 10

def initialize(path:)
  raw = YAML.safe_load_file(path, symbolize_names: true)
  @name = raw[:name]
  @version = raw[:version]
  @description = raw[:description]
  @requires = raw[:requires] || []
  @relationships = parse_relationships(raw[:relationships] || [])
  @settings = raw[:settings] || {}
end

Instance Attribute Details

#descriptionObject (readonly)

Returns the value of attribute description.



8
9
10
# File 'lib/legion/workflow/manifest.rb', line 8

def description
  @description
end

#nameObject (readonly)

Returns the value of attribute name.



8
9
10
# File 'lib/legion/workflow/manifest.rb', line 8

def name
  @name
end

#relationshipsObject (readonly)

Returns the value of attribute relationships.



8
9
10
# File 'lib/legion/workflow/manifest.rb', line 8

def relationships
  @relationships
end

#requiresObject (readonly)

Returns the value of attribute requires.



8
9
10
# File 'lib/legion/workflow/manifest.rb', line 8

def requires
  @requires
end

#settingsObject (readonly)

Returns the value of attribute settings.



8
9
10
# File 'lib/legion/workflow/manifest.rb', line 8

def settings
  @settings
end

#versionObject (readonly)

Returns the value of attribute version.



8
9
10
# File 'lib/legion/workflow/manifest.rb', line 8

def version
  @version
end

Instance Method Details

#errorsObject



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/legion/workflow/manifest.rb', line 24

def errors
  errs = []
  errs << 'name is required' unless name
  errs << 'at least one relationship is required' if relationships.empty?
  relationships.each_with_index do |rel, i|
    errs << "relationship #{i}: trigger is required" unless rel[:trigger]
    errs << "relationship #{i}: action is required" unless rel[:action]
    %i[trigger action].each do |key|
      next unless rel[key]

      %i[extension runner function].each do |field|
        errs << "relationship #{i}: #{key}.#{field} is required" unless rel[key][field]
      end
    end
  end
  errs
end

#valid?Boolean

Returns:

  • (Boolean)


20
21
22
# File 'lib/legion/workflow/manifest.rb', line 20

def valid?
  errors.empty?
end