class BranchIOCLI::Configuration::Option

Attributes

aliases[RW]
argument_optional[RW]
confirm_symbol[RW]
convert_proc[RW]
default_value[RW]
description[RW]
env_name[RW]
example[RW]
label[RW]
name[RW]
negatable[RW]
skip_confirmation[RW]
type[RW]
valid_values_proc[RW]
validate_proc[RW]

Public Class Methods

global_options() click to toggle source
# File lib/branch_io_cli/configuration/option.rb, line 4
def self.global_options
  [
    new(
      name: :confirm,
      description: "Enable or disable many prompts",
      default_value: true,
      skip_confirmation: true
    )
  ]
end
new(options) click to toggle source
# File lib/branch_io_cli/configuration/option.rb, line 31
def initialize(options)
  @name = options[:name]
  @env_name = options[:env_name]
  @type = options[:type]
  @description = options[:description]
  @default_value = options[:default_value]
  @example = options[:example]
  @argument_optional = options[:argument_optional] || false
  @aliases = options[:aliases] || []
  @aliases = [@aliases] unless @aliases.kind_of?(Array)
  @negatable = options[:negatable]
  @negatable = options[:type].nil? if options[:negatable].nil?
  @confirm_symbol = options[:confirm_symbol] || @name
  @valid_values_proc = options[:valid_values_proc]
  @validate_proc = options[:validate_proc]
  @convert_proc = options[:convert_proc]
  @label = options[:label] || @name.to_s.capitalize.gsub(/_/, ' ')
  @skip_confirmation = options[:skip_confirmation]

  raise ArgumentError, "Use :validate_proc or :valid_values_proc, but not both." if @valid_values_proc && @validate_proc

  @env_name = "BRANCH_#{@name.to_s.upcase}" if @env_name.nil?
  @argument_optional ||= @negatable
end

Public Instance Methods

convert(value) click to toggle source
# File lib/branch_io_cli/configuration/option.rb, line 74
def convert(value)
  return convert_proc.call(value) if convert_proc

  if type == Array
    value = value.split(",") if value.kind_of?(String)
  elsif type == String && value.kind_of?(String)
    value = value.strip
    value = nil if value.empty?
  elsif type.nil?
    value = true if value.kind_of?(String) && value =~ /^[ty]/i
    value = false if value.kind_of?(String) && value =~ /^[fn]/i
  end

  value
end
display_value(value) click to toggle source
# File lib/branch_io_cli/configuration/option.rb, line 90
def display_value(value)
  if type.nil?
    value ? "yes" : "no"
  elsif value.nil?
    "(none)"
  else
    value.to_s
  end
end
env_value() click to toggle source
# File lib/branch_io_cli/configuration/option.rb, line 70
def env_value
  convert(ENV[env_name]) if env_name
end
ui_type() click to toggle source
# File lib/branch_io_cli/configuration/option.rb, line 60
def ui_type
  if type.nil?
    "Boolean"
  elsif type == Array
    "Comma-separated list"
  else
    type.to_s
  end
end
valid?(value) click to toggle source
# File lib/branch_io_cli/configuration/option.rb, line 100
def valid?(value)
  return validate_proc.call(value) if validate_proc

  return true if value.nil?

  if valid_values && type != Array
    valid_values.include? value
  elsif valid_values
    value.all? { |v| valid_values.include?(v) }
  elsif type
    value.kind_of? type
  else
    value == true || value == false
  end
end
valid_values() click to toggle source
# File lib/branch_io_cli/configuration/option.rb, line 56
def valid_values
  return valid_values_proc.call if valid_values_proc && valid_values_proc.kind_of?(Proc)
end