PHP 8.2.31
Preview: conflict.rb Size: 2.57 KB
/proc/thread-self/root/opt/alt/ruby21/lib64/ruby/2.1.0/rubygems/resolver/conflict.rb

##
# Used internally to indicate that a dependency conflicted
# with a spec that would be activated.

class Gem::Resolver::Conflict

  ##
  # The specification that was activated prior to the conflict

  attr_reader :activated

  ##
  # The dependency that is in conflict with the activated gem.

  attr_reader :dependency

  attr_reader :failed_dep # :nodoc:

  ##
  # Creates a new resolver conflict when +dependency+ is in conflict with an
  # already +activated+ specification.

  def initialize(dependency, activated, failed_dep=dependency)
    @dependency = dependency
    @activated = activated
    @failed_dep = failed_dep
  end

  def == other # :nodoc:
    self.class === other and
      @dependency == other.dependency and
      @activated  == other.activated  and
      @failed_dep == other.failed_dep
  end

  ##
  # A string explanation of the conflict.

  def explain
    "<Conflict wanted: #{@failed_dep}, had: #{activated.spec.full_name}>"
  end

  ##
  # Return the 2 dependency objects that conflicted

  def conflicting_dependencies
    [@failed_dep.dependency, @activated.request.dependency]
  end

  ##
  # Explanation of the conflict used by exceptions to print useful messages

  def explanation
    activated   = @activated.spec.full_name
    requirement = @failed_dep.dependency.requirement

    "  Activated %s via:\n    %s\n  instead of (%s) via:\n    %s\n" % [
      activated,   request_path(@activated).join(', '),
      requirement, request_path(requester).join(', '),
    ]
  end

  ##
  # Returns true if the conflicting dependency's name matches +spec+.

  def for_spec?(spec)
    @dependency.name == spec.name
  end

  def pretty_print q # :nodoc:
    q.group 2, '[Dependency conflict: ', ']' do
      q.breakable

      q.text 'activated '
      q.pp @activated

      q.breakable
      q.text ' dependency '
      q.pp @dependency

      q.breakable
      if @dependency == @failed_dep then
        q.text ' failed'
      else
        q.text ' failed dependency '
        q.pp @failed_dep
      end
    end
  end

  ##
  # Path of activations from the +current+ list.

  def request_path current
    path = []

    while current do
      requirement = current.request.dependency.requirement
      path << "#{current.spec.full_name} (#{requirement})"

      current = current.parent
    end

    path = ['user request (gem command or Gemfile)'] if path.empty?

    path
  end

  ##
  # Return the Specification that listed the dependency

  def requester
    @failed_dep.requester
  end

end

##
# TODO: Remove in RubyGems 3

Gem::Resolver::DependencyConflict = Gem::Resolver::Conflict # :nodoc:

Directory Contents

Dirs: 0 × Files: 24

Name Size Perms Modified Actions
3.26 KB lrw-r--r-- 2013-11-25 19:14:49
Edit Download
2.27 KB lrw-r--r-- 2014-02-06 02:59:36
Edit Download
1.74 KB lrw-r--r-- 2013-11-25 19:14:49
Edit Download
912 B lrw-r--r-- 2014-02-06 02:59:36
Edit Download
879 B lrw-r--r-- 2014-02-06 02:59:36
Edit Download
2.57 KB lrw-r--r-- 2013-11-25 19:14:49
Edit Download
252 B lrw-r--r-- 2013-11-19 00:34:13
Edit Download
1.77 KB lrw-r--r-- 2013-11-25 19:14:49
Edit Download
2.86 KB lrw-r--r-- 2014-02-06 02:59:36
Edit Download
837 B lrw-r--r-- 2013-11-25 19:14:49
Edit Download
1.36 KB lrw-r--r-- 2014-02-06 02:59:36
Edit Download
1.45 KB lrw-r--r-- 2013-11-19 00:34:13
Edit Download
862 B lrw-r--r-- 2013-11-25 19:14:49
Edit Download
3.00 KB lrw-r--r-- 2014-02-06 02:59:36
Edit Download
342 B lrw-r--r-- 2013-11-25 19:14:49
Edit Download
1.63 KB lrw-r--r-- 2014-02-06 02:59:36
Edit Download
1.18 KB lrw-r--r-- 2013-12-08 01:22:39
Edit Download
1.31 KB lrw-r--r-- 2013-12-08 01:22:39
Edit Download
1002 B lrw-r--r-- 2014-02-06 02:59:36
Edit Download
1.76 KB lrw-r--r-- 2013-11-25 19:14:49
Edit Download
1.06 KB lrw-r--r-- 2013-11-19 00:34:13
Edit Download
920 B lrw-r--r-- 2013-12-08 01:22:39
Edit Download
1.88 KB lrw-r--r-- 2014-02-06 02:59:36
Edit Download
545 B lrw-r--r-- 2013-11-25 19:14:49
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).