Class: CliApplication::Argv
- Inherits:
-
OpenStruct
- Object
- OpenStruct
- CliApplication::Argv
- Defined in:
- lib/cli_application/argv.rb
Instance Method Summary collapse
-
#help ⇒ Object
Метод выводит подсказку по аргументам командной строки.
-
#initialize(argv) ⇒ Argv
constructor
Конструктор.
-
#set_argv(action, key, default, description) ⇒ Object
Метод добавления аргумента командной строки.
Constructor Details
#initialize(argv) ⇒ Argv
Конструктор. Вызывается при создании класса приложения. Данный класс доступен в главной функции приложения (main) через переменную argv
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/cli_application/argv.rb', line 12 def initialize(argv) @params = Hash.new @full = Hash.new argv.each do |one| if one.match(/[a-z\_0-9]\=/i) pair = one.split('=') # UPDATE 2015-10-26 - при указании пустого параметра при запуске скрипта # он становился равным самому себе, поскольку split строки вида "param=" # возвращал pair.first равное pair.last @params[pair.first.to_s.strip.downcase.to_sym] = pair.last if pair.count > 1 else warn "WARNING: некорректный ключ параметра командной строки: #{one.inspect} (#{File.basename(__FILE__)} at #{__LINE__})" end end super(@params) end |
Instance Method Details
#help ⇒ Object
Метод выводит подсказку по аргументам командной строки
89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/cli_application/argv.rb', line 89 def help return if @full.empty? puts puts "Параметры приложения:" screenwidth = ::StTools::System.screen(:width) @full.each do |key, data| line = get_helpline(key, data[:description], keylen, screenwidth) line.each { |x| puts x } end puts end |
#set_argv(action, key, default, description) ⇒ Object
Метод добавления аргумента командной строки. Вызывается при инициализации приложения, служит для определения списка аргументов командной строки, формирвоания подсказок и установки значения по умолчанию. В классе принят не традиционный для Linux формат командной строки. Пример вызова: add_city.rb user_id=123 name=Максим city=‘Верхние Луки’.
Параметры, добавленные данным методом доступны через переменную argv (см. примеры)
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 |