class CliParser

The command line interface parser

Public Class Methods

call_subcommand(command) click to toggle source

Tries to call subcommand extracted from hash

@param command [String] subcommand to call

# File lib/cli_parser.rb, line 115
def self.call_subcommand(command)
  if command.nil?
    abort(@banner)
  else
    command.call
  end
end
parse_argv() click to toggle source

Parse the arguments in the command line

# File lib/cli_parser.rb, line 99
def self.parse_argv
  client = Client.new
  subcommands = {
    recipe: -> { client.recipe @options },
    register: -> { client.register ARGV[1], ARGV[2] },
    login: -> { client.login ARGV[1], ARGV[2] },
    last: -> { client.last },
    review: -> { client.review ARGV[1] },
    user: -> { client.user }
  }
  call_subcommand subcommands[ARGV[0].to_sym]
end
parse_opts() click to toggle source

Parse the options in command line

# File lib/cli_parser.rb, line 27
def self.parse_opts
  OptionParser.new do |opts|
    opts.banner = @banner

    # help message option
    opts.on('--help',
            'Prints help message') do
      puts opts
      exit
    end

    # version message option
    opts.on('--version',
            'Prints version') do
      puts "yum #{Yum::VERSION}"
      exit
    end

    # phrase -----------------------------------------------------------------
    # include recipe with phrase
    opts.on('-p', '--phrase PHRASE', @help[:phrase]) do |phrase|
      @options[:q] = phrase
    end

    # holiday ----------------------------------------------------------------
    # include holiday recipes
    opts.on('-h', '--holiday HOLIDAY', @help[:holiday]) do |holiday|
      @options[:allowedHoliday] = holiday
    end

    # exclude holiday recipes
    opts.on('--eh', '--excluded-holiday HOLIDAY', @help[:holiday]) do |hol|
      @options[:excludedHoliday] = hol
    end

    # ingredients ------------------------------------------------------------
    # include ingredients in recipes
    opts.on('-i', '--ingredients INGREDIENT', @help[:ing]) do |ing|
      @options[:allowedIngredient] = ing
    end

    # exclude holiday in recipes
    opts.on('--ei', '--excluded-ingredient INGREDIENT', @help[:ing]) do |ing|
      @options[:excludedIngredient] = ing
    end

    # cuisines ---------------------------------------------------------------
    # include cuisines in recipes
    opts.on('-c', '--cuisine CUISINE', @help[:cui]) do |cui|
      @options[:allowedCuisine] = cui
    end

    # exclude cuisines in recipes
    opts.on('--ec', '--excluded-cuisine CUISINE', @help[:cui]) do |cui|
      @options[:excludedCuisine] = cui
    end
    # diets ------------------------------------------------------------------
    # include diets in recipes
    opts.on('-d', '--diet DIET', @help[:diet]) do |diet|
      @options[:allowedDiet] = diet
    end

    # exclude diets in recipes
    opts.on('--ed', '--excluded-diet DIET', @help[:diet]) do |diet|
      @options[:excludedDiet] = diet
    end
  end.parse!
rescue OptionParser::InvalidOption => e
  abort(e)
end