Method: CliApplication::Argv#set_argv

Defined in:
lib/cli_application/argv.rb

#set_argv(action, key, default, description) ⇒ Object

Метод добавления аргумента командной строки. Вызывается при инициализации приложения, служит для определения списка аргументов командной строки, формирвоания подсказок и установки значения по умолчанию. В классе принят не традиционный для Linux формат командной строки. Пример вызова: add_city.rb user_id=123 name=Максим city=‘Верхние Луки’.

Параметры, добавленные данным методом доступны через переменную argv (см. примеры)

Examples:

Примеры использования

app = CliApplication.new(ARGV, __dir__)
app.set_argv(:integer, 'user_id', 0, 'Идентификатор пользователя')
app.set_argv(:string, 'name', 'Без имени', 'Имя пользователя')
app.set_argv(:caps, 'city', 'москВА', 'Город проживания пользователя')

def main
  puts argv.user_id      #=> 0
  puts argv.name         #=> 'Без имени'
  puts argv.city         #=> 'Москва'
end

Parameters:

  • action (Sym)

    параметр определяет действие, которое надо произвести над параметром командной строки.

  • key (String)

    название ключа, напрмиер ‘user_id’, ‘name’, ‘city’.

  • default (Object)

    значение по умочланию, “подставляемое” при отсутствии заданного пользователем параметра

  • description (String)

    описание параметра (подсказка)



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/cli_application/argv.rb', line 52

def set_argv(action, key, default, description)
  key = key.downcase.strip.to_sym
  unless @params.keys.include?(key)
    @params[key] = default
  end

  case action
    when :bool, :boolean
      @params[key] = @params[key].to_s.to_bool
    when :split
      @params[key] = ::StTools::String.split(@params[key].to_s, ',', sort: true)
    when :range
      @params[key] = @params[key].to_s.to_range(sort: true, uniq: true)
    when :range_no_uniq
      @params[key] = @params[key].to_s.to_range(sort: true)
    when :float
      @params[key] = @params[key].to_s.strip.to_f
    when :integer
      @params[key] = @params[key].to_s.strip.to_i
    when :downcase
      @params[key] = @params[key].to_s.downcase
    when :upcase
      @params[key] = @params[key].to_s.upcase
    when :normalize
      @params[key] = @params[key].to_s.normalize
    when :caps
      @params[key] = @params[key].to_s.caps
    when :string
      @params[key] = @params[key].to_s
    else
  end

  convert_from_hash
  set_full(action, key, default, @params[key], description)
end