Sha256: 1284eca2c396d13d4295360db42a3edaab5f7d994910889e89f2937b3d02055f

Contents?: true

Size: 1.02 KB

Versions: 1

Compression:

Stored size: 1.02 KB

Contents

require 'fileutils'

class Freezer
  def initialize(gemfile_path)
    @gemfile_path = gemfile_path
    @tmpfile_path = tmpfile_path
  end

  def overwrite_gemfile
    cp_gemfile
    overwrite
    replace_gemfile
  end

  def overwrite
    return unless gemfile? && tmpfile?
    gemfile = File.open(@gemfile_path)
    tmpfile = File.open(@tmpfile_path, 'w')
    regex = /^\s*gem ['"]([-\w]+)['"](,.*)?/
    gems_hash = Parser.new(@gemfile_path).unfrozen_gems_hash

    gemfile.each do |line|
      name = line.scan(regex).flatten.first
      if !name.nil? && !gems_hash[name].nil?
        line.chomp! << ", '#{gems_hash[name]}'\n"
      end
      tmpfile.write(line)
    end

    gemfile.close
    tmpfile.close
  end

  def tmpfile_path
    File.join(File.dirname(@gemfile_path), TMPFILE)
  end

  def cp_gemfile
    return unless gemfile?
    FileUtils.cp(@gemfile_path, @tmpfile_path)
  end

  def replace_gemfile
    if gemfile? && tmpfile?
      FileUtils.rm_f(@gemfile_path)
      FileUtils.mv(@tmpfile_path, @gemfile_path)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
frozen_gems-0.0.2 lib/frozen_gems/freezer.rb