Method: PDK::CLI::Set::Config.transform_value

Defined in:
lib/pdk/cli/set/config.rb

.transform_value(type_name, value) ⇒ Object

:nocov:



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/pdk/cli/set/config.rb', line 13

def self.transform_value(type_name, value)
  normalized_name = type_name.downcase.strip
  unless ALLOWED_TYPE_NAMES.include?(normalized_name)
    raise PDK::CLI::ExitWithError, format('Unknown type %{type_name}. Expected one of %{allowed}', type_name: type_name, allowed: pretty_allowed_names)
  end

  # Short circuit string conversions as it's trivial
  if normalized_name == 'string'
    raise PDK::CLI::ExitWithError, format('An error occured converting \'%{value}\' into a %{type_name}', value: value.nil? ? 'nil' : value, type_name: type_name) unless value.is_a?(String)

    return value
  end

  begin
    case normalized_name
    when 'array'
      convert_to_array(value)
    when 'boolean'
      convert_to_boolean(value)
    when 'number'
      convert_to_number(value)
    else
      value
    end
  rescue ArgumentError, TypeError
    raise PDK::CLI::ExitWithError, format('An error occured converting \'%{value}\' into a %{type_name}', value: value.nil? ? 'nil' : value, type_name: type_name)
  end
end