Class: FastlaneCore::ConfigItem
- Inherits:
-
Object
- Object
- FastlaneCore::ConfigItem
- Defined in:
- lib/fastlane_core/configuration/config_item.rb
Instance Attribute Summary collapse
-
#default_value ⇒ Object
Returns the value of attribute default_value.
-
#description ⇒ Object
Returns the value of attribute description.
-
#env_name ⇒ Object
Returns the value of attribute env_name.
-
#key ⇒ Object
Returns the value of attribute key.
-
#optional ⇒ Object
Returns the value of attribute optional.
-
#short_option ⇒ Object
Returns the value of attribute short_option.
-
#verify_block ⇒ Object
Returns the value of attribute verify_block.
Instance Method Summary collapse
-
#auto_convert_value(value) ⇒ Object
Returns an updated value type (if necessary).
-
#data_type ⇒ Object
Determines the defined data type of this ConfigItem.
-
#initialize(key: nil, env_name: nil, description: nil, short_option: nil, default_value: nil, verify_block: nil, is_string: true, type: nil, optional: false) ⇒ ConfigItem
constructor
Creates a new option.
-
#string? ⇒ Boolean
Replaces the attr_accessor, but maintains the same interface.
- #to_s ⇒ Object
-
#valid?(value) ⇒ Boolean
Make sure, the value is valid (based on the verify block) Returns false if that’s not the case.
-
#verify!(value) ⇒ Object
This will raise an exception if the value is not valid.
Constructor Details
#initialize(key: nil, env_name: nil, description: nil, short_option: nil, default_value: nil, verify_block: nil, is_string: true, type: nil, optional: false) ⇒ ConfigItem
Creates a new option
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/fastlane_core/configuration/config_item.rb', line 17 def initialize(key: nil, env_name: nil, description: nil, short_option: nil, default_value: nil, verify_block: nil, is_string: true, type: nil, optional: false) raise "key must be a symbol" unless key.kind_of? Symbol raise "env_name must be a String" unless (env_name || '').kind_of? String if short_option raise "short_option must be a String of length 1" unless short_option.kind_of? String and short_option.delete('-').length == 1 end if description raise "Do not let descriptions end with a '.', since it's used for user inputs as well".red if description[-1] == '.' end if type.to_s.length > 0 and short_option.to_s.length == 0 raise "Type '#{type}' for key '#{key}' requires a short option" end @key = key @env_name = env_name @description = description @short_option = short_option @default_value = default_value @verify_block = verify_block @is_string = is_string @data_type = type @optional = optional end |
Instance Attribute Details
#default_value ⇒ Object
Returns the value of attribute default_value.
3 4 5 |
# File 'lib/fastlane_core/configuration/config_item.rb', line 3 def default_value @default_value end |
#description ⇒ Object
Returns the value of attribute description.
3 4 5 |
# File 'lib/fastlane_core/configuration/config_item.rb', line 3 def description @description end |
#env_name ⇒ Object
Returns the value of attribute env_name.
3 4 5 |
# File 'lib/fastlane_core/configuration/config_item.rb', line 3 def env_name @env_name end |
#key ⇒ Object
Returns the value of attribute key.
3 4 5 |
# File 'lib/fastlane_core/configuration/config_item.rb', line 3 def key @key end |
#optional ⇒ Object
Returns the value of attribute optional.
3 4 5 |
# File 'lib/fastlane_core/configuration/config_item.rb', line 3 def optional @optional end |
#short_option ⇒ Object
Returns the value of attribute short_option.
3 4 5 |
# File 'lib/fastlane_core/configuration/config_item.rb', line 3 def short_option @short_option end |
#verify_block ⇒ Object
Returns the value of attribute verify_block.
3 4 5 |
# File 'lib/fastlane_core/configuration/config_item.rb', line 3 def verify_block @verify_block end |
Instance Method Details
#auto_convert_value(value) ⇒ Object
Returns an updated value type (if necessary)
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/fastlane_core/configuration/config_item.rb', line 73 def auto_convert_value(value) # Weird because of https://stackoverflow.com/questions/9537895/using-a-class-object-in-case-statement case when data_type == Array return value.split(',') if value.kind_of?(String) when data_type == Integer return value.to_i when data_type == Float return value.to_f else # Special treatment if the user specififed true, false or YES, NO # There is no boolean typoe, so we just do it here if %w(YES yes true).include?(value) return true elsif %w(NO no false).include?(value) return false end end return value # fallback to not doing anything end |
#data_type ⇒ Object
Determines the defined data type of this ConfigItem
97 98 99 100 101 102 103 |
# File 'lib/fastlane_core/configuration/config_item.rb', line 97 def data_type if @data_type @data_type else (@is_string ? String : nil) end end |
#string? ⇒ Boolean
Replaces the attr_accessor, but maintains the same interface
106 107 108 |
# File 'lib/fastlane_core/configuration/config_item.rb', line 106 def string? data_type == String end |
#to_s ⇒ Object
110 111 112 |
# File 'lib/fastlane_core/configuration/config_item.rb', line 110 def to_s [@key, @description].join(": ") end |
#valid?(value) ⇒ Boolean
Make sure, the value is valid (based on the verify block) Returns false if that’s not the case
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/fastlane_core/configuration/config_item.rb', line 51 def valid?(value) # we also allow nil values, which do not have to be verified. if value # Verify that value is the type that we're expecting, if we are expecting a type if data_type && !value.kind_of?(data_type) raise "'#{self.key}' value must be a #{data_type}! Found #{value.class} instead.".red end if @verify_block begin @verify_block.call(value) rescue => ex Helper.log.fatal "Error setting value '#{value}' for option '#{@key}'".red raise ex end end end true end |
#verify!(value) ⇒ Object
This will raise an exception if the value is not valid
44 45 46 47 |
# File 'lib/fastlane_core/configuration/config_item.rb', line 44 def verify!(value) raise "Invalid value '#{value}' for option '#{self}'".red unless valid? value true end |