class Racli::OptionParser

Public Instance Methods

call(args) click to toggle source
# File lib/racli/option_parser.rb, line 7
def call(args)
  options, args = parse(args)
  config_params = { config: options[:config], rcfile: options[:rcfile] }

  params = { method: 'GET', path: '/' }
  params[:method] = args[0] unless args.empty?
  params[:path] = args[1] if args.length > 1

  request_params = options.dup
  request_params.delete(:config)
  request_params.delete(:rcfile)
  params[:params] = request_params

  [config_params, params]
end

Private Instance Methods

parse(args) click to toggle source
# File lib/racli/option_parser.rb, line 25
def parse(args)
  keys = args.select { |key| key.include?('--') }
             .map { |key| key.gsub(/^\-\-/, '') }
             .reject { |key| %w[config rcfile].include?(key) }
  options = {}
  options[:config] = File.expand_path('./config.ru', Dir.pwd)
  options[:rcfile] = File.expand_path('./.raclirc', Dir.pwd)

  parser = ::OptionParser.new
  parser.on('-c', '--config VALUE') { |v| options[:config] = v }
  parser.on('--rcfile VALUE') { |v| options[:rcfile] = v }
  keys.each do |key|
    parser.on("--#{key} VALUE") { |v| options[key.to_s] = v }
  end

  args = parser.parse(ARGV)
  [options, args]
end