Module: MistralClient::Mixins::Definable

Included in:
Environment, Execution, Workflow
Defined in:
lib/mistral_client/mixins/definable.rb

Instance Method Summary collapse

Instance Method Details

#parse_definition(definition) ⇒ Object

rubocop:disable Metrics/MethodLength



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/mistral_client/mixins/definable.rb', line 5

def parse_definition(definition)
  return YAML.dump(definition) if definition.is_a?(Hash) || definition.is_a?(Array)

  definition = File.read(definition) if File.exist?(definition)
  # Called outside the if/else to validate the YAML.
  parsed = YAML.safe_load(definition, [], [], true)
  if defined? massage_definition
    massage_definition(parsed)
  else
    definition
  end
rescue Psych::SyntaxError
  raise ConfigurationError,
        'Only filenames or raw or parsed strings of YAML are supported.'
end