class Gemrat::Arguments

Constants

ATTRIBUTES

Attributes

arguments[RW]

Public Class Methods

new(*args) click to toggle source
# File lib/gemrat/arguments.rb, line 10
def initialize(*args)
  self.arguments = *args

  parse_options
end

Public Instance Methods

gems() click to toggle source
# File lib/gemrat/arguments.rb, line 17
def gems
  gem_names.map do |name|
    gem      = Gem.new
    gem.name = name
    gem
  end
end

Private Instance Methods

gem_names() click to toggle source
# File lib/gemrat/arguments.rb, line 86
def gem_names
  arguments.take_while { |arg| arg !~ /^-|^--/}
end
parse_options() click to toggle source
# File lib/gemrat/arguments.rb, line 36
def parse_options
  self.options = OpenStruct.new

  options.gemfile = "Gemfile"

  opt_parser = OptionParser.new do |opts|
    opts.banner = Messages::USAGE

    opts.on("-g", "--gemfile GEMFILE", "# Specify the Gemfile to be used, defaults to 'Gemfile'") do |gemfile|
      options.gemfile = gemfile
    end

    opts.on("--no-install", "# Skip executing bundle after adding the gem.") do
      options.no_install = true
    end

    opts.on("--no-version", "# Do not add a version to the gemfile.") do
      options.no_version = true
    end

    opts.on("-p", "--pessimistic", "# Add gem with a pessimistic operator (~>)") do
      options.version_constraint = "pessimistic"
    end

    opts.on("-o", "--optimistic", "# Add gem with an optimistic operator (>=)") do
      options.version_constraint = "optimistic"
    end

    opts.on_tail("-h", "--help", "# Print these usage instructions.") do
      puts opts
      raise PrintHelp
    end

    opts.on("-v", "--version", "# Show current gemrat version.") do
      puts Gemrat::VERSION
      raise PrintHelp
    end
  end

  begin
    opt_parser.parse!(arguments)
  rescue OptionParser::InvalidOption
    puts opt_parser
    raise PrintHelp
  end
  validate(opt_parser)

  self.gemfile = Gemfile.new(options.gemfile)
end
validate(opt_parser) click to toggle source
# File lib/gemrat/arguments.rb, line 29
def validate(opt_parser)
  if gem_names.empty? || gem_names.first.nil?
    puts opt_parser.help
    raise PrintHelp
  end
end