Class: FastlaneCore::Feature

Inherits:
Object
  • Object
show all
Defined in:
lib/fastlane_core/feature/feature.rb

Class Attribute Summary collapse

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(env_var: nil, description: nil) ⇒ Feature

Returns a new instance of Feature.



44
45
46
47
48
# File 'lib/fastlane_core/feature/feature.rb', line 44

def initialize(env_var: nil, description: nil)
  raise "Invalid Feature" if env_var.nil? || description.nil?
  @env_var = env_var
  @description = description
end

Class Attribute Details

.featuresObject (readonly)

Returns the value of attribute features.



4
5
6
# File 'lib/fastlane_core/feature/feature.rb', line 4

def features
  @features
end

Instance Attribute Details

#descriptionObject (readonly)

Returns the value of attribute description.



43
44
45
# File 'lib/fastlane_core/feature/feature.rb', line 43

def description
  @description
end

#env_varObject (readonly)

Returns the value of attribute env_var.



43
44
45
# File 'lib/fastlane_core/feature/feature.rb', line 43

def env_var
  @env_var
end

Class Method Details

.enabled?(env_var) ⇒ Boolean

Returns:

  • (Boolean)


11
12
13
14
15
16
# File 'lib/fastlane_core/feature/feature.rb', line 11

def enabled?(env_var)
  feature = @features[env_var]
  return false if feature.nil?
  return false if ENV[feature.env_var] == '0' # '0' is a non-falsey value that should indicate feature switch disabled
  return ENV[feature.env_var] # rely on the truthiness of the value set in the environment variable
end

.register(env_var: nil, description: nil) ⇒ Object



6
7
8
9
# File 'lib/fastlane_core/feature/feature.rb', line 6

def register(env_var: nil, description: nil)
  feature = self.new(description: description, env_var: env_var)
  @features[feature.env_var] = feature
end

.register_class_method(klass: nil, symbol: nil, disabled_symbol: nil, enabled_symbol: nil, env_var: nil) ⇒ Object



18
19
20
21
22
23
24
25
26
27
# File 'lib/fastlane_core/feature/feature.rb', line 18

def register_class_method(klass: nil, symbol: nil, disabled_symbol: nil, enabled_symbol: nil, env_var: nil)
  return if klass.nil? || symbol.nil? || disabled_symbol.nil? || enabled_symbol.nil? || env_var.nil?
  klass.define_singleton_method(symbol) do |*args|
    if Feature.enabled?(env_var)
      klass.send(enabled_symbol, *args)
    else
      klass.send(disabled_symbol, *args)
    end
  end
end

.register_instance_method(klass: nil, symbol: nil, disabled_symbol: nil, enabled_symbol: nil, env_var: nil) ⇒ Object



29
30
31
32
33
34
35
36
37
38
# File 'lib/fastlane_core/feature/feature.rb', line 29

def register_instance_method(klass: nil, symbol: nil, disabled_symbol: nil, enabled_symbol: nil, env_var: nil)
  return if klass.nil? || symbol.nil? || disabled_symbol.nil? || enabled_symbol.nil? || env_var.nil?
  klass.send(:define_method, symbol.to_s) do |*args|
    if Feature.enabled?(env_var)
      send(enabled_symbol, *args)
    else
      send(disabled_symbol, *args)
    end
  end
end