summaryrefslogtreecommitdiff
path: root/lib/bundler/match_remote_metadata.rb
blob: 601af7e55de25c49ed548c1b0d9404fba037af76 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# frozen_string_literal: true

module Bundler
  module FetchMetadata
    # A fallback is included because the original version of the specification
    # API didn't include that field, so some marshalled specs in the index have it
    # set to +nil+.
    def matches_current_ruby?
      ensure_required_ruby_version_loaded
      super
    end

    def matches_current_rubygems?
      ensure_required_rubygems_version_loaded
      super
    end

    def matches_current_ruby_with_overrides?(overrides)
      ensure_required_ruby_version_loaded
      super
    end

    def matches_current_rubygems_with_overrides?(overrides)
      ensure_required_rubygems_version_loaded
      super
    end

    private

    def ensure_required_ruby_version_loaded
      @required_ruby_version ||= _remote_specification.required_ruby_version || Gem::Requirement.default # rubocop:disable Naming/MemoizedInstanceVariableName
    end

    def ensure_required_rubygems_version_loaded
      @required_rubygems_version ||= _remote_specification.required_rubygems_version || Gem::Requirement.default # rubocop:disable Naming/MemoizedInstanceVariableName
    end
  end

  module MatchRemoteMetadata
    include MatchMetadata

    prepend FetchMetadata
  end
end