Sha256: 7dbc9d6d584caa70ed170fa23272da471a7f232d8d0d5b241cbeb39421cf7732

Contents?: true

Size: 862 Bytes

Versions: 2

Compression:

Stored size: 862 Bytes

Contents

require 'appraisal/dependency'

module Appraisal
  # Load bundler Gemfiles and merge dependencies
  class Gemfile
    attr_reader :dependencies

    def initialize
      @dependencies = {}
    end

    def load(path)
      run(IO.read(path))
    end

    def run(definitions)
      instance_eval(definitions, __FILE__, __LINE__)
    end

    def gem(name, *requirements)
      @dependencies[name] = Dependency.new(name, requirements)
    end

    def source(source)
      @source = source
    end

    def to_s
      %{source "#{@source}"\n} <<
        dependencies.values.map { |dependency| dependency.to_s }.join("\n")
    end

    def dup
      Gemfile.new.tap do |gemfile|
        gemfile.source @source
        dependencies.values.each do |dependency|
          gemfile.gem(dependency.name, *dependency.requirements)
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
appraisal-0.2.0 lib/appraisal/gemfile.rb
appraisal-0.1 lib/appraisal/gemfile.rb