Sha256: 209d127971176cef6bccae134216983472324825fa5406d96f0e3d449ec82b8b

Contents?: true

Size: 1.23 KB

Versions: 26

Compression:

Stored size: 1.23 KB

Contents

# frozen_string_literal: true

require 'bundler'

module Synvert::Core
  # GemSpec checks and compares gem version.
  class Rewriter::GemSpec
    # @!attribute [r] name
    #   @return [String] the name of gem_spec
    # @!attribute [r] version
    #   @return [String] the version of gem_spec
    attr_reader :name, :version

    # Initialize a GemSpec.
    #
    # @param name [String] gem name
    # @param version [String] gem version, e.g. '~> 2.0.0'
    def initialize(name, version)
      @name = name
      @version = version
    end

    # Check if the specified gem version in Gemfile.lock matches gem_spec comparator.
    #
    # @return [Boolean] true if matches, otherwise false.
    def match?
      return true unless Configuration.strict

      gemfile_lock_path = File.expand_path(File.join(Configuration.root_path, 'Gemfile.lock'))

      # if Gemfile.lock does not exist, just ignore this check
      return true unless File.exist?(gemfile_lock_path)

      ENV['BUNDLE_GEMFILE'] = Configuration.root_path # make sure bundler reads Gemfile.lock in the correct path
      parser = Bundler::LockfileParser.new(File.read(gemfile_lock_path))
      parser.specs.any? { |spec| Gem::Dependency.new(@name, @version).match?(spec) }
    end
  end
end

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
synvert-core-2.2.2 lib/synvert/core/rewriter/gem_spec.rb
synvert-core-2.2.1 lib/synvert/core/rewriter/gem_spec.rb
synvert-core-2.2.0 lib/synvert/core/rewriter/gem_spec.rb
synvert-core-2.1.2 lib/synvert/core/rewriter/gem_spec.rb
synvert-core-2.1.1 lib/synvert/core/rewriter/gem_spec.rb
synvert-core-2.1.0 lib/synvert/core/rewriter/gem_spec.rb
synvert-core-2.0.3 lib/synvert/core/rewriter/gem_spec.rb
synvert-core-2.0.2 lib/synvert/core/rewriter/gem_spec.rb
synvert-core-2.0.1 lib/synvert/core/rewriter/gem_spec.rb
synvert-core-2.0.0 lib/synvert/core/rewriter/gem_spec.rb
synvert-core-1.35.4 lib/synvert/core/rewriter/gem_spec.rb
synvert-core-1.35.3 lib/synvert/core/rewriter/gem_spec.rb
synvert-core-1.35.2 lib/synvert/core/rewriter/gem_spec.rb
synvert-core-1.35.1 lib/synvert/core/rewriter/gem_spec.rb
synvert-core-1.35.0 lib/synvert/core/rewriter/gem_spec.rb
synvert-core-1.34.0 lib/synvert/core/rewriter/gem_spec.rb
synvert-core-1.33.3 lib/synvert/core/rewriter/gem_spec.rb
synvert-core-1.33.2 lib/synvert/core/rewriter/gem_spec.rb
synvert-core-1.33.1 lib/synvert/core/rewriter/gem_spec.rb
synvert-core-1.33.0 lib/synvert/core/rewriter/gem_spec.rb