PHP 8.2.31
Preview: remote_specification.rb Size: 3.46 KB
/proc/thread-self/root/opt/alt/ruby26/lib64/ruby/2.6.0/bundler/remote_specification.rb

# frozen_string_literal: true

require "uri"

module Bundler
  # Represents a lazily loaded gem specification, where the full specification
  # is on the source server in rubygems' "quick" index. The proxy object is to
  # be seeded with what we're given from the source's abbreviated index - the
  # full specification will only be fetched when necessary.
  class RemoteSpecification
    include MatchPlatform
    include Comparable

    attr_reader :name, :version, :platform
    attr_writer :dependencies
    attr_accessor :source, :remote

    def initialize(name, version, platform, spec_fetcher)
      @name         = name
      @version      = Gem::Version.create version
      @platform     = platform
      @spec_fetcher = spec_fetcher
      @dependencies = nil
    end

    # Needed before installs, since the arch matters then and quick
    # specs don't bother to include the arch in the platform string
    def fetch_platform
      @platform = _remote_specification.platform
    end

    def full_name
      if platform == Gem::Platform::RUBY || platform.nil?
        "#{@name}-#{@version}"
      else
        "#{@name}-#{@version}-#{platform}"
      end
    end

    # Compare this specification against another object. Using sort_obj
    # is compatible with Gem::Specification and other Bundler or RubyGems
    # objects. Otherwise, use the default Object comparison.
    def <=>(other)
      if other.respond_to?(:sort_obj)
        sort_obj <=> other.sort_obj
      else
        super
      end
    end

    # Because Rubyforge cannot be trusted to provide valid specifications
    # once the remote gem is downloaded, the backend specification will
    # be swapped out.
    def __swap__(spec)
      SharedHelpers.ensure_same_dependencies(self, dependencies, spec.dependencies)
      @_remote_specification = spec
    end

    # Create a delegate used for sorting. This strategy is copied from
    # RubyGems 2.23 and ensures that Bundler's specifications can be
    # compared and sorted with RubyGems' own specifications.
    #
    # @see #<=>
    # @see Gem::Specification#sort_obj
    #
    # @return [Array] an object you can use to compare and sort this
    #   specification against other specifications
    def sort_obj
      [@name, @version, @platform == Gem::Platform::RUBY ? -1 : 1]
    end

    def to_s
      "#<#{self.class} name=#{name} version=#{version} platform=#{platform}>"
    end

    def dependencies
      @dependencies ||= begin
        deps = method_missing(:dependencies)

        # allow us to handle when the specs dependencies are an array of array of string
        # see https://github.com/bundler/bundler/issues/5797
        deps = deps.map {|d| d.is_a?(Gem::Dependency) ? d : Gem::Dependency.new(*d) }

        deps
      end
    end

    def git_version
      return unless loaded_from && source.is_a?(Bundler::Source::Git)
      " #{source.revision[0..6]}"
    end

  private

    def to_ary
      nil
    end

    def _remote_specification
      @_remote_specification ||= @spec_fetcher.fetch_spec([@name, @version, @platform])
      @_remote_specification || raise(GemspecError, "Gemspec data for #{full_name} was" \
        " missing from the server! Try installing with `--full-index` as a workaround.")
    end

    def method_missing(method, *args, &blk)
      _remote_specification.send(method, *args, &blk)
    end

    def respond_to?(method, include_all = false)
      super || _remote_specification.respond_to?(method, include_all)
    end
    public :respond_to?
  end
end

Directory Contents

Dirs: 12 × Files: 67

Name Size Perms Modified Actions
cli DIR
- drwxr-xr-x 2024-03-03 22:47:32
Edit Download
- drwxr-xr-x 2024-03-03 22:47:32
Edit Download
fetcher DIR
- drwxr-xr-x 2024-03-03 22:47:32
Edit Download
installer DIR
- drwxr-xr-x 2024-03-03 22:47:32
Edit Download
plugin DIR
- drwxr-xr-x 2024-03-03 22:47:32
Edit Download
resolver DIR
- drwxr-xr-x 2024-03-03 22:47:32
Edit Download
settings DIR
- drwxr-xr-x 2024-03-03 22:47:32
Edit Download
source DIR
- drwxr-xr-x 2024-03-03 22:47:32
Edit Download
ssl_certs DIR
- drwxr-xr-x 2024-03-03 22:47:32
Edit Download
templates DIR
- drwxr-xr-x 2024-03-03 22:47:32
Edit Download
ui DIR
- drwxr-xr-x 2024-03-03 22:47:32
Edit Download
vendor DIR
- drwxr-xr-x 2024-03-03 22:47:32
Edit Download
1.61 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
879 B lrw-r--r-- 2022-04-12 11:50:11
Edit Download
35.12 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
3.27 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
518 B lrw-r--r-- 2022-04-12 11:50:11
Edit Download
212 B lrw-r--r-- 2022-04-12 11:50:11
Edit Download
2.19 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
36.44 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
4.43 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
3.19 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
876 B lrw-r--r-- 2022-04-12 11:50:11
Edit Download
827 B lrw-r--r-- 2022-04-12 11:50:11
Edit Download
21.46 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
3.91 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
5.22 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
1.31 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
4.59 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
3.07 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
10.83 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
4.33 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
423 B lrw-r--r-- 2022-04-12 11:50:11
Edit Download
5.88 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
3.19 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
1.46 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
137 B lrw-r--r-- 2022-04-12 11:50:11
Edit Download
6.52 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
5.00 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
5.24 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
8.61 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
2.33 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
11.85 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
3.62 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
2.18 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
8.62 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
659 B lrw-r--r-- 2022-04-12 11:50:11
Edit Download
5.79 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
9.12 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
702 B lrw-r--r-- 2022-04-12 11:50:11
Edit Download
853 B lrw-r--r-- 2022-04-12 11:50:11
Edit Download
3.46 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
14.20 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
1.60 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
5.88 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
3.49 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
25.01 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
761 B lrw-r--r-- 2022-04-12 11:50:11
Edit Download
4.96 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
10.95 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
12.38 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
720 B lrw-r--r-- 2022-04-12 11:50:11
Edit Download
12.00 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
1.84 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
2.66 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
5.87 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
5.34 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
2.78 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
198 B lrw-r--r-- 2022-04-12 11:50:11
Edit Download
1.20 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
192 B lrw-r--r-- 2022-04-12 11:50:11
Edit Download
100 B lrw-r--r-- 2022-04-12 11:50:11
Edit Download
1.61 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
193 B lrw-r--r-- 2022-04-12 11:50:11
Edit Download
821 B lrw-r--r-- 2022-04-12 11:50:11
Edit Download
2.86 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
466 B lrw-r--r-- 2022-04-12 11:50:11
Edit Download
2.57 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download
2.41 KB lrw-r--r-- 2022-04-12 11:50:11
Edit Download

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