Sha256: d94ddffe0ef2b8e599f5aba08a91a4b83a6abdf846cde3c0f22202fe931340f4

Contents?: true

Size: 934 Bytes

Versions: 4

Compression:

Stored size: 934 Bytes

Contents

require 'appraisal/gemfile'
require 'appraisal/command'
require 'fileutils'

module Appraisal
  # Represents one appraisal and its dependencies
  class Appraisal
    attr_reader :name, :gemfile

    def initialize(name, source_gemfile)
      @name = name
      @gemfile = source_gemfile.dup
    end

    def gem(name, *requirements)
      gemfile.gem(name, *requirements)
    end

    def write_gemfile
      ::File.open(gemfile_path, "w") do |file|
        file.puts("# This file was generated by Appraisal")
        file.puts
        file.write(gemfile.to_s)
      end
    end

    def install
      Command.new("bundle install --gemfile=#{gemfile_path}").run
    end

    def gemfile_path
      unless ::File.exist?(gemfile_root)
        FileUtils.mkdir(gemfile_root)
      end

      ::File.join(gemfile_root, "#{name}.gemfile")
    end

    private

    def gemfile_root
      ::File.join(Dir.pwd, "gemfiles")
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
appraisal-0.4.1 lib/appraisal/appraisal.rb
appraisal-0.4.0 lib/appraisal/appraisal.rb
appraisal-0.3.8 lib/appraisal/appraisal.rb
appraisal-0.3.7 lib/appraisal/appraisal.rb