Class: Insika::EnvSchema::Spec

Inherits:
Data
  • Object
show all
Defined in:
lib/insika/env_schema.rb

Overview

One env key the engine knows about. type drives validation; secret masks the value in insika env; enum restricts allowed values; required makes a blank value a finding (engine keys are all optional — deployment resilience — so required is used by deployment extras, not the defaults here).

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#descriptionObject (readonly)

Returns the value of attribute description

Returns:

  • (Object)

    the current value of description



39
40
41
# File 'lib/insika/env_schema.rb', line 39

def description
  @description
end

#enumObject (readonly)

Returns the value of attribute enum

Returns:

  • (Object)

    the current value of enum



39
40
41
# File 'lib/insika/env_schema.rb', line 39

def enum
  @enum
end

#nameObject (readonly)

Returns the value of attribute name

Returns:

  • (Object)

    the current value of name



39
40
41
# File 'lib/insika/env_schema.rb', line 39

def name
  @name
end

#requiredObject (readonly)

Returns the value of attribute required

Returns:

  • (Object)

    the current value of required



39
40
41
# File 'lib/insika/env_schema.rb', line 39

def required
  @required
end

#secretObject (readonly)

Returns the value of attribute secret

Returns:

  • (Object)

    the current value of secret



39
40
41
# File 'lib/insika/env_schema.rb', line 39

def secret
  @secret
end

#typeObject (readonly)

Returns the value of attribute type

Returns:

  • (Object)

    the current value of type



39
40
41
# File 'lib/insika/env_schema.rb', line 39

def type
  @type
end

Instance Method Details

#error_for(raw) ⇒ Object

nil/blank when optional -> no finding. Present -> must satisfy the type. -> error string or nil.



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/insika/env_schema.rb', line 45

def error_for(raw)
  value = raw.to_s
  return "is required (unset)" if value.strip.empty? && required
  return nil if value.strip.empty?

  case type
  when :integer
    "must be an integer, got #{value.inspect}" unless value.match?(/\A-?\d+\z/)
  when :boolean
    "must be a boolean (#{BOOLEANS.join('/')}), got #{value.inspect}" unless EnvSchema.boolean?(value)
  when :enum
    "must be one of #{enum.inspect}, got #{value.inspect}" unless Array(enum).include?(value)
  when :url
    "must be an http(s) URL, got #{value.inspect}" unless value.match?(%r{\Ahttps?://\S+\z})
  end # :string / :csv / :path -> any string is valid
end

#required?Boolean

Returns:

  • (Boolean)


41
# File 'lib/insika/env_schema.rb', line 41

def required? = required

#secret?Boolean

Returns:

  • (Boolean)


40
# File 'lib/insika/env_schema.rb', line 40

def secret? = secret