class Gemrat::Runner

Attributes

instance[RW]
gem[RW]
gemfile[RW]
gems[RW]
no_install[RW]
no_version[RW]
version_constraint[RW]

Public Class Methods

new(*args) click to toggle source
# File lib/gemrat/runner.rb, line 15
def initialize(*args)
  with_error_handling { parse_arguments(*args) }
end
run(*args) click to toggle source
# File lib/gemrat/runner.rb, line 6
def run(*args)
  @instance ||= new(*args)
  @instance.run
end

Public Instance Methods

run() click to toggle source
# File lib/gemrat/runner.rb, line 19
def run
  for_each_gem do
    with_error_handling { gemfile.add(gem) }
  end

  run_bundle unless skip_bundle?
end

Private Instance Methods

for_each_gem() { || ... } click to toggle source
# File lib/gemrat/runner.rb, line 58
def for_each_gem
  gems && gems.each do |gem|
    set_no_version(gem)
    set_version_constraint(gem)
    self.gem = gem
    yield
  end
end
parse_arguments(*args) click to toggle source
# File lib/gemrat/runner.rb, line 34
def parse_arguments(*args)
  Arguments.new(*args).tap do |a|
    self.gems      = a.gems
    self.gemfile   = a.gemfile
    self.no_install = a.options.no_install
    self.no_version = a.options.no_version
    self.version_constraint = a.options.version_constraint
  end
end
run_bundle() click to toggle source
# File lib/gemrat/runner.rb, line 85
def run_bundle
  puts "Bundling...".green
  `bundle`
end
set_no_version(gem) click to toggle source
# File lib/gemrat/runner.rb, line 71
def set_no_version(gem)
  if no_version
    gem.no_version!
  end
end
set_version_constraint(gem) click to toggle source
# File lib/gemrat/runner.rb, line 67
def set_version_constraint(gem)
  gem.version_constraint = version_constraint
end
skip_bundle?() click to toggle source
# File lib/gemrat/runner.rb, line 77
def skip_bundle?
  gems.nil? ||
  gems.empty? ||
  gems.select(&:valid?).empty? ||
  !gemfile.needs_bundle? ||
  no_install
end
with_error_handling() { || ... } click to toggle source
# File lib/gemrat/runner.rb, line 44
def with_error_handling
  yield
rescue Arguments::PrintHelp
rescue Gem::NotFound
  puts Messages::GEM_NOT_FOUND.red % gem.name
  gem.invalid!
rescue Gemfile::DuplicateGemFound
  puts Messages::DUPLICATE_GEM_FOUND % gem.name
  gem.invalid!
rescue Gem::InvalidFlags
  puts Messages::INVALID_FLAGS.red
  gem.invalid!
end