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.
-
#deprecated ⇒ Object
Returns the value of attribute deprecated.
-
#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: nil, conflicting_options: nil, conflict_block: nil, deprecated: 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: nil, conflicting_options: nil, conflict_block: nil, deprecated: nil) ⇒ ConfigItem
Creates a new option
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 52 53 54 55 56 57 |
# File 'lib/fastlane_core/configuration/config_item.rb', line 20 def initialize(key: nil, env_name: nil, description: nil, short_option: nil, default_value: nil, verify_block: nil, is_string: true, type: nil, optional: nil, conflicting_options: nil, conflict_block: nil, deprecated: nil) UI.user_error!("key must be a symbol") unless key.kind_of? Symbol UI.user_error!("env_name must be a String") unless (env_name || '').kind_of? String if short_option UI.user_error!("short_option must be a String of length 1") unless short_option.kind_of? String and short_option.delete('-').length == 1 end if description UI.user_error!("Do not let descriptions end with a '.', since it's used for user inputs as well") if description[-1] == '.' end if .each do |conflicting_option_key| UI.user_error!("Conflicting option key must be a symbol") unless conflicting_option_key.kind_of? Symbol end end if deprecated # deprecated options are automatically optional optional = true if optional.nil? UI.crash!("Deprecated option must be optional") unless optional # deprecated options are marked deprecated in their description description = "[DEPRECATED!] #{deprecated} - #{description}" end optional = false if optional.nil? @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 @conflicting_options = @conflict_block = conflict_block @deprecated = deprecated 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 @conflicting_options 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 |
#deprecated ⇒ Object
Returns the value of attribute deprecated.
3 4 5 |
# File 'lib/fastlane_core/configuration/config_item.rb', line 3 def deprecated @deprecated 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)
89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/fastlane_core/configuration/config_item.rb', line 89 def auto_convert_value(value) return nil if value.nil? if data_type == Array return value.split(',') if value.kind_of?(String) elsif data_type == Integer return value.to_i if value.to_i.to_s == value.to_s elsif data_type == Float return value.to_f if value.to_f.to_s == value.to_s else # Special treatment if the user specified true, false or YES, NO # There is no boolean type, 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
112 113 114 115 116 117 118 |
# File 'lib/fastlane_core/configuration/config_item.rb', line 112 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
121 122 123 |
# File 'lib/fastlane_core/configuration/config_item.rb', line 121 def string? data_type == String end |
#to_s ⇒ Object
125 126 127 |
# File 'lib/fastlane_core/configuration/config_item.rb', line 125 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
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/fastlane_core/configuration/config_item.rb', line 67 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
60 61 62 63 |
# File 'lib/fastlane_core/configuration/config_item.rb', line 60 def verify!(value) UI.user_error!("Invalid value '#{value}' for option '#{self}'") unless valid?(value) true end |