Class: FastlaneCore::ConfigItem
- Inherits:
-
Object
- Object
- FastlaneCore::ConfigItem
- Defined in:
- lib/fastlane_core/configuration/config_item.rb
Instance Attribute Summary collapse
-
#conflict_block ⇒ Object
Returns the value of attribute conflict_block.
-
#conflicting_options ⇒ Object
Returns the value of attribute conflicting_options.
-
#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, conflicting_options: nil, conflict_block: nil) ⇒ 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, conflicting_options: nil, conflict_block: nil) ⇒ ConfigItem
Creates a new option
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/fastlane_core/configuration/config_item.rb', line 19 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, conflicting_options: nil, conflict_block: nil) 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 if .each do |conflicting_option_key| raise "Conflicting option key must be a symbol" unless conflicting_option_key.kind_of? Symbol end 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 = @conflict_block = conflict_block end |
Instance Attribute Details
#conflict_block ⇒ Object
Returns the value of attribute conflict_block.
3 4 5 |
# File 'lib/fastlane_core/configuration/config_item.rb', line 3 def conflict_block @conflict_block end |
#conflicting_options ⇒ Object
Returns the value of attribute conflicting_options.
3 4 5 |
# File 'lib/fastlane_core/configuration/config_item.rb', line 3 def end |
#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)
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
# File 'lib/fastlane_core/configuration/config_item.rb', line 83 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 TRUE).include?(value) return true elsif %w(NO no false 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
106 107 108 109 110 111 112 |
# File 'lib/fastlane_core/configuration/config_item.rb', line 106 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
115 116 117 |
# File 'lib/fastlane_core/configuration/config_item.rb', line 115 def string? data_type == String end |
#to_s ⇒ Object
119 120 121 |
# File 'lib/fastlane_core/configuration/config_item.rb', line 119 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
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/fastlane_core/configuration/config_item.rb', line 61 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) UI.user_error!("'#{self.key}' value must be a #{data_type}! Found #{value.class} instead.") end if @verify_block begin @verify_block.call(value) rescue => ex UI.error "Error setting value '#{value}' for option '#{@key}'" raise Interface::FastlaneError.new, ex.to_s end end end true end |
#verify!(value) ⇒ Object
This will raise an exception if the value is not valid
54 55 56 57 |
# File 'lib/fastlane_core/configuration/config_item.rb', line 54 def verify!(value) UI.user_error!("Invalid value '#{value}' for option '#{self}'") unless valid? value true end |