class Appraisal::BundlerDSL

Constants

PARTS

Attributes

dependencies[R]
git_sources[W]

Public Class Methods

new() click to toggle source
# File lib/appraisal/bundler_dsl.rb, line 10
def initialize
  @sources = []
  @ruby_version = nil
  @dependencies = DependencyList.new
  @gemspecs = []
  @groups = Hash.new
  @platforms = Hash.new
  @gits = Hash.new
  @paths = Hash.new
  @source_blocks = Hash.new
  @git_sources = {}
  @install_if = {}
end

Public Instance Methods

for_dup() click to toggle source
# File lib/appraisal/bundler_dsl.rb, line 86
def for_dup
  Utils.join_parts PARTS.map { |part| send("#{part}_entry_for_dup") }
end
gem(name, *requirements) click to toggle source
# File lib/appraisal/bundler_dsl.rb, line 28
def gem(name, *requirements)
  @dependencies.add(name, substitute_git_source(requirements))
end
gemspec(options = {}) click to toggle source
# File lib/appraisal/bundler_dsl.rb, line 90
def gemspec(options = {})
  @gemspecs << Gemspec.new(options)
end
git(source, options = {}, &block) click to toggle source
# File lib/appraisal/bundler_dsl.rb, line 70
def git(source, options = {}, &block)
  @gits[source] ||=
    Git.new(source, options).tap { |g| g.git_sources = @git_sources.dup }
  @gits[source].run(&block)
end
git_source(source, &block) click to toggle source
# File lib/appraisal/bundler_dsl.rb, line 94
def git_source(source, &block)
  @git_sources[source] = block
end
group(*names, &block) click to toggle source
# File lib/appraisal/bundler_dsl.rb, line 36
def group(*names, &block)
  @groups[names] ||=
    Group.new(names).tap { |g| g.git_sources = @git_sources.dup }
  @groups[names].run(&block)
end
install_if(condition, &block) click to toggle source
# File lib/appraisal/bundler_dsl.rb, line 42
def install_if(condition, &block)
  @install_if[condition] ||=
    Conditional.new(condition).tap { |g| g.git_sources = @git_sources.dup }
  @install_if[condition].run(&block)
end
path(source, options = {}, &block) click to toggle source
# File lib/appraisal/bundler_dsl.rb, line 76
def path(source, options = {}, &block)
  @paths[source] ||=
    Path.new(source, options).tap { |g| g.git_sources = @git_sources.dup }
  @paths[source].run(&block)
end
platform(*names, &block)
Alias for: platforms
platforms(*names, &block) click to toggle source
# File lib/appraisal/bundler_dsl.rb, line 48
def platforms(*names, &block)
  @platforms[names] ||=
    Platform.new(names).tap { |g| g.git_sources = @git_sources.dup }
  @platforms[names].run(&block)
end
Also aliased as: platform
remove_gem(name) click to toggle source
# File lib/appraisal/bundler_dsl.rb, line 32
def remove_gem(name)
  @dependencies.remove(name)
end
ruby(ruby_version) click to toggle source
# File lib/appraisal/bundler_dsl.rb, line 66
def ruby(ruby_version)
  @ruby_version = ruby_version
end
run(&block) click to toggle source
# File lib/appraisal/bundler_dsl.rb, line 24
def run(&block)
  instance_exec(&block)
end
source(source, &block) click to toggle source
# File lib/appraisal/bundler_dsl.rb, line 56
def source(source, &block)
  if block_given?
    @source_blocks[source] ||=
      Source.new(source).tap { |g| g.git_sources = @git_sources.dup }
    @source_blocks[source].run(&block)
  else
    @sources << source
  end
end
to_s() click to toggle source
# File lib/appraisal/bundler_dsl.rb, line 82
def to_s
  Utils.join_parts PARTS.map { |part| send("#{part}_entry") }
end

Private Instance Methods

dependencies_entry() click to toggle source
# File lib/appraisal/bundler_dsl.rb, line 126
def dependencies_entry
  @dependencies.to_s
end
dependencies_entry_for_dup() click to toggle source
# File lib/appraisal/bundler_dsl.rb, line 130
def dependencies_entry_for_dup
  @dependencies.for_dup
end
gemspec_entry() click to toggle source
# File lib/appraisal/bundler_dsl.rb, line 118
def gemspec_entry
  @gemspecs.map(&:to_s).join("\n")
end
gemspec_entry_for_dup() click to toggle source
# File lib/appraisal/bundler_dsl.rb, line 122
def gemspec_entry_for_dup
  @gemspecs.map(&:for_dup).join("\n")
end
indent(string) click to toggle source
# File lib/appraisal/bundler_dsl.rb, line 149
def indent(string)
  string.strip.gsub(/^(.+)$/, '  \1')
end
ruby_version_entry() click to toggle source
# File lib/appraisal/bundler_dsl.rb, line 110
def ruby_version_entry
  if @ruby_version
    "ruby #{@ruby_version.inspect}"
  end
end
Also aliased as: ruby_version_entry_for_dup
ruby_version_entry_for_dup()
Alias for: ruby_version_entry
source_entry() click to toggle source
# File lib/appraisal/bundler_dsl.rb, line 104
def source_entry
  @sources.uniq.map { |source| "source #{source.inspect}" }.join("\n")
end
Also aliased as: source_entry_for_dup
source_entry_for_dup()
Alias for: source_entry
substitute_git_source(requirements) click to toggle source
# File lib/appraisal/bundler_dsl.rb, line 153
def substitute_git_source(requirements)
  requirements.each do |requirement|
    if requirement.is_a?(Hash)
      (requirement.keys & @git_sources.keys).each do |matching_source|
        value = requirement.delete(matching_source)
        requirement[:git] = @git_sources[matching_source].call(value)
      end
    end
  end
end