summaryrefslogtreecommitdiff
path: root/lib/bundler/match_platform.rb
blob: 81d85d8e463c6bc27b559334e8ab237b2df1316d (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
# frozen_string_literal: true

require_relative "gem_helpers"

module Bundler
  module MatchPlatform
    include GemHelpers

    def match_platform(p)
      MatchPlatform.platforms_match?(platform, p)
    end

    def self.platforms_match?(gemspec_platform, local_platform)
      return true if gemspec_platform.nil?
      return true if Gem::Platform::RUBY == gemspec_platform
      return true if local_platform == gemspec_platform
      gemspec_platform = Gem::Platform.new(gemspec_platform)
      generic_gemspec_platform = GemHelpers.generic(gemspec_platform)
      unless generic_gemspec_platform == Gem::Platform::RUBY
        return true if generic_gemspec_platform === local_platform
      end
      return true if gemspec_platform === local_platform

      false
    end
  end
end