class Abot::Whitelist::OptionParser
Класс раширяет возможности стандартного gem'а
Constants
- Option
Public Class Methods
instance() { |instance| ... }
click to toggle source
# File lib/abot/whitelist/option_parser.rb, line 89 def self.instance @instance ||= new yield @instance if block_given? @instance end
new()
click to toggle source
Calls superclass method
# File lib/abot/whitelist/option_parser.rb, line 18 def initialize super @options = {} end
Public Instance Methods
add_env(key, default: nil, required: false)
click to toggle source
Обрабатывает переменную среды окружения и регистрирует его в опциях
Указанный ключ в аргументе метода, при поиске переменной среды окружения будет преобразован сл. образом: `:env_key => “ENV_KEY”`
@param key [Symbol]
@param default [Object]
@param required [FalseClass,TrueClass]
# File lib/abot/whitelist/option_parser.rb, line 108 def add_env(key, default: nil, required: false) raise Error, 'call after parse' if frozen? @options[key] = Option.new( :environment, environment(key.to_s.upcase) || default, required ) end
add_option(key, *args, default: nil, required: false)
click to toggle source
Добавляет обработчик опций командной строки
@param key [Symbol]
@param args [Array]
@param default [Object]
@param required [FalseClass,TrueClass]
# File lib/abot/whitelist/option_parser.rb, line 128 def add_option(key, *args, default: nil, required: false) raise Error, 'call after parse' if frozen? @options[key] = Option.new( :option, default, required ) on(*args) { |value| @options[key][:value] = value } end
final!(args = ARGV)
click to toggle source
Выполняет обработку входящих аргументов и читает конфигурационый файл
@return [void]
# File lib/abot/whitelist/option_parser.rb, line 144 def final!(args = ARGV) raise Error, 'duplicate call #final!' if frozen? parse args load @options[:config_file] ? @options[:config_file][:value] : nil # заполняет значение до заморозки экземпляра класса @banner = "Usage: #{program_name} [options]" if @banner.nil? freeze show_help! show_version! validate! end
options(keys_filter = [])
click to toggle source
Возвращает полученные в результате работы парсера опции
@param keys_filter [Array<Symbol>] исключает отсуствующие ключи
@return [Hash]
# File lib/abot/whitelist/option_parser.rb, line 165 def options(keys_filter = []) raise Error, 'call before #final!' unless frozen? result = @options.each_with_object({}) do |option, acc| acc[option[0]] = option[1][:value] unless option[1][:value].nil? end return result if keys_filter.empty? result.select { |k, _| keys_filter.include? k } end
Protected Instance Methods
add_help_about_envs()
click to toggle source
# File lib/abot/whitelist/option_parser.rb, line 25 def add_help_about_envs envs = @options.select { |_, option| option[:type] == :environment } return if envs.empty? separator '' separator 'Accessed environments:' envs.each do |key, v| separator ' ' * 4 + [key.to_s.upcase, v[:value]].join('=') end end
show_help!()
click to toggle source
# File lib/abot/whitelist/option_parser.rb, line 37 def show_help! show_help = @options.fetch( :help, Option.new(:option, false, false) ) return unless show_help[:value] add_help_about_envs print help # получение справочной информации Process.exit! unless ENV.fetch('RUN_TEST', nil) end
show_version!()
click to toggle source
# File lib/abot/whitelist/option_parser.rb, line 52 def show_version! show_version = @options.fetch( :version, Option.new(:option, false, false) ) return unless show_version[:value] puts ver # аналогично методу #show_help! Process.exit! unless ENV.fetch('RUN_TEST', nil) end
validate!()
click to toggle source
# File lib/abot/whitelist/option_parser.rb, line 65 def validate! required_options = @options.select do |_, option| option[:required] && option[:value].nil? end return if required_options.empty? raise Error, <<~ERROR Having problems: #{ required_options.map do |key, option| case option[:type] when :environment "- environment '#{key.to_s.upcase}' is required" when :option "- option '#{key}' is required" end end.join("\n") } ERROR end