Sha256: ba1e884481c83e64248ace7c378ab8cf6aff79d09f0ed96d6c032b9057656438

Contents?: true

Size: 1.16 KB

Versions: 2

Compression:

Stored size: 1.16 KB

Contents

require 'optparse'

module Ego
  class Options

    attr_reader :mode,
                :robot_name,
                :verbose,
                :query,
                :usage,
                :usage_error

    def initialize(argv)
      @mode = :interpret
      @verbose = false
      parse(argv)
      @query = argv.join(" ")
    end

  private

    def parse(argv)
      OptionParser.new do |opts|
        @robot_name = opts.program_name.capitalize
        opts.banner = "Usage: #{opts.program_name} [ options ] query..."

        opts.on("-s", "--shell", "Start in REPL-mode") do
          @mode = :shell
        end

        opts.on("-v", "--version", "Print version number") do
          @mode = :version
        end

        opts.on("-V", "--verbose", "Include debugging info in output") do
          @verbose = true
        end

        opts.on("-h", "--help", "Show this message") do
          @mode = :help
        end

        begin
          argv = ["-h"] if argv.empty?
          opts.parse!(argv)
        rescue OptionParser::ParseError => e
          @usage_error = e.message
          @mode = :help
        ensure
          @usage = opts
        end
      end
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ego-0.3.0 lib/ego/options.rb
ego-0.2.0 lib/ego/options.rb