Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
tree: 152a50a4af
Fetching contributors…

Cannot retrieve contributors at this time

76 lines (62 sloc) 1.876 kb
module Bundler
class Definition
def self.from_gemfile(gemfile)
gemfile = Pathname.new(gemfile).expand_path
unless gemfile.file?
raise GemfileNotFound, "`#{gemfile}` not found"
end
Dsl.evaluate(gemfile)
end
def self.from_lock(lockfile)
# gemfile_definition = from_gemfile(nil)
locked_definition = Locked.new(YAML.load_file(lockfile))
# raise GemfileError unless gemfile_definition.equivalent?(locked_definition)
locked_definition
end
attr_reader :dependencies, :sources
alias actual_dependencies dependencies
def initialize(dependencies, sources)
@dependencies = dependencies
@sources = sources
end
def local_index
@local_index ||= begin
index = Index.from_installed_gems
sources.reverse_each do |source|
index.merge! source.local_specs if source.respond_to?(:local_specs)
end
index
end
end
# def equivalent?(other)
# self.matches?(other) && other.matches?(self)
# # other.matches?(self)
# end
# def matches?(other)
# dependencies.all? do |dep|
# dep =~ other.specs.find {|spec| spec.name == dep.name }
# end
# end
class Locked < Definition
def initialize(details)
@details = details
end
def sources
@sources ||= @details["sources"].map do |args|
name, options = args.to_a.flatten
Bundler::Source.const_get(name).new(options)
end
end
def actual_dependencies
@actual_dependencies ||= @details["specs"].map do |args|
Gem::Dependency.new(*args.to_a.flatten)
end
end
def dependencies
@dependencies ||= @details["dependencies"].map do |args|
Gem::Dependency.new(*args.to_a.flatten)
end
end
end
end
end
Jump to Line
Something went wrong with that request. Please try again.