Class: ENVied::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/envied/configuration.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(**options, &block) ⇒ Configuration

Returns a new instance of Configuration.



5
6
7
8
9
# File 'lib/envied/configuration.rb', line 5

def initialize(**options, &block)
  @coercer = options.fetch(:coercer, Coercer.new)
  @defaults_enabled = options.fetch(:enable_defaults, defaults_enabled_default)
  instance_eval(&block) if block_given?
end

Instance Attribute Details

#coercerObject (readonly)

Returns the value of attribute coercer.



3
4
5
# File 'lib/envied/configuration.rb', line 3

def coercer
  @coercer
end

#current_groupObject (readonly)

Returns the value of attribute current_group.



3
4
5
# File 'lib/envied/configuration.rb', line 3

def current_group
  @current_group
end

#defaults_enabledObject (readonly)

Returns the value of attribute defaults_enabled.



3
4
5
# File 'lib/envied/configuration.rb', line 3

def defaults_enabled
  @defaults_enabled
end

Class Method Details

.load(**options) ⇒ Object



11
12
13
14
15
16
# File 'lib/envied/configuration.rb', line 11

def self.load(**options)
  envfile = File.expand_path('Envfile')
  new(options).tap do |v|
    v.instance_eval(File.read(envfile), envfile)
  end
end

Instance Method Details

#defaults_enabled?Boolean

Returns:

  • (Boolean)


23
24
25
26
27
# File 'lib/envied/configuration.rb', line 23

def defaults_enabled?
  @defaults_enabled.respond_to?(:call) ?
    @defaults_enabled.call :
    @defaults_enabled
end

#enable_defaults!(value = true, &block) ⇒ Object



18
19
20
21
# File 'lib/envied/configuration.rb', line 18

def enable_defaults!(value = true, &block)
  default_values_deprecation
  @defaults_enabled = block_given? ? block.call : value
end

#group(*names, &block) ⇒ Object



37
38
39
40
41
42
43
44
# File 'lib/envied/configuration.rb', line 37

def group(*names, &block)
  names.each do |name|
    @current_group = name.to_sym
    yield
  end
ensure
  @current_group = nil
end

#variable(name, type = :string, **options) ⇒ Object



29
30
31
32
33
34
35
# File 'lib/envied/configuration.rb', line 29

def variable(name, type = :string, **options)
  unless coercer.supported_type?(type)
    raise ArgumentError, "#{type.inspect} is not a supported type. Should be one of #{coercer.supported_types}"
  end
  options[:group] = current_group if current_group
  variables << ENVied::Variable.new(name, type, options)
end

#variablesObject



46
47
48
# File 'lib/envied/configuration.rb', line 46

def variables
  @variables ||= []
end