def message
conflicts.values.flatten.reduce('') do |o, conflict|
o << %(Bundler could not find compatible versions for gem "#{conflict.requirement.name}":\n)
if conflict.locked_requirement
o << %( In snapshot (Gemfile.lock):\n)
o << %( #{clean_req conflict.locked_requirement}\n)
o << %(\n)
end
o << %( In Gemfile:\n)
o << conflict.requirement_trees.map do |tree|
t = ''
depth = 2
tree.each do |req|
t << ' ' * depth << %(#{clean_req req})
t << %( depends on) unless tree[-1] == req
t << %(\n)
depth += 1
end
t
end.join("\n")
if conflict.requirement.name == 'bundler'
o << %(\n Current Bundler version:\n bundler (#{Bundler::VERSION}))
other_bundler_required = !conflict.requirement.requirement.satisfied_by?(Gem::Version.new Bundler::VERSION)
end
if conflict.requirement.name == "bundler" && other_bundler_required
o << "\n"
o << "This Gemfile requires a different version of Bundler.\n"
o << "Perhaps you need to update Bundler by running `gem install bundler`?\n"
end
if conflict.locked_requirement
o << "\n"
o << %(Running `bundle update` will rebuild your snapshot from scratch, using only\n)
o << %(the gems in your Gemfile, which may resolve the conflict.\n)
elsif !conflict.existing
if conflict.requirement_trees.first.size > 1
o << "Could not find gem '#{clean_req(conflict.requirement)}', which is required by "
o << "gem '#{clean_req(conflict.requirement_trees.first[-2])}', in any of the sources."
else
o << "Could not find gem '#{clean_req(conflict.requirement)} in any of the sources\n"
end
end
o
end
end