Sha256: 8cab8b05e7c43747513fd6437865cb8fd9cf8be7bd1f80a67119631ba7ea94c8

Contents?: true

Size: 1.13 KB

Versions: 5

Compression:

Stored size: 1.13 KB

Contents

require 'pessimize/gemfile'
require 'pessimize/gemfile_lock_version_parser'
require 'pessimize/version_mapper'

module Pessimize
  class Pessimizer
    def initialize(file_manager, options)
      self.file_manager = file_manager
      self.options = options
      self.lock_parser = GemfileLockVersionParser.new
    end

    def run
      collect_gems_and_versions
      update_gem_versions
      write_new_gemfile
      puts "~> written #{gemfile.gems.length} gems to Gemfile, constrained to #{options[:version_constraint]} version updates\n\n"
    end

  protected
    attr_accessor :gemfile, :lock_parser, :file_manager, :options

    def sep(num = 1)
      "\n" * num
    end

    def collect_gems_and_versions
      self.gemfile = Gemfile.new(file_manager.gemfile_contents)
      lock_parser.call File.open(file_manager.gemfile_lock)
    end

    def update_gem_versions
      VersionMapper.new.call(gemfile.gems, lock_parser.versions, options[:version_constraint])
    end

    def write_new_gemfile
      File.delete(file_manager.gemfile)
      File.open(file_manager.gemfile, 'w') do |f|
        f.write gemfile.to_s
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 2 rubygems

Version Path
pessimize-0.5.0 lib/pessimize/pessimizer.rb
pessimizer-1.0.0 lib/pessimize/pessimizer.rb
pessimize-0.4.0 lib/pessimize/pessimizer.rb
pessimize-0.3.0 lib/pessimize/pessimizer.rb
pessimize-0.2.0 lib/pessimize/pessimizer.rb