Sha256: 0ac4a59ebbd661e4c834a291355d59a0a7cdec5d1ce89837edd853919a4291e4

Contents?: true

Size: 943 Bytes

Versions: 3

Compression:

Stored size: 943 Bytes

Contents

require 'optparse'

module Bini
  class OptionParser < ::OptionParser
    def initialize
      super
      @options = {}

      on("-V", "--version", "Print version") { |version| @options[:version] = true}
    end

    def parse!
      super

      if @options[:version]
        if Bini.version
          puts Bini.version
        else
          puts "No version supplied."
        end
        exit 0
      end

      mash Bini.config if Bini.config
    end

    # These are the hash like bits.

    def clear
      @options.clear
    end

    def [](k = nil)
      return @options[k] if k
      return @options if @options.any?
      {}
    end

    def []=(k,v)
      @options[k] = v
    end

    # merge takes in a set of values and overwrites the previous values.
    # mash does this in reverse.
    def mash(h)
      h.merge! @options
      @options.clear
      h.each {|k,v| self[k] = v}
    end
  end
  Options = OptionParser.new
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
bini-0.5.5 lib/bini/optparser.rb
bini-0.5.4 lib/bini/optparser.rb
bini-0.5.2 lib/bini/optparser.rb