Sha256: df2f649953f461902ec6ba0b879d58d2f4dec3927a4dc4b449ab2b8d0bceaab5

Contents?: true

Size: 1.06 KB

Versions: 221

Compression:

Stored size: 1.06 KB

Contents

# frozen_string_literal: true

module RuboCop
  # Encapsulation of a lockfile for use when checking for gems.
  # Does not actually resolve gems, just parses the lockfile.
  # @api private
  class Lockfile
    # Gems that the bundle depends on
    def dependencies
      return [] unless parser

      parser.dependencies.values
    end

    # All activated gems, including transitive dependencies
    def gems
      return [] unless parser

      # `Bundler::LockfileParser` returns `Bundler::LazySpecification` objects
      # which are not resolved, so extract the dependencies from them
      parser.dependencies.values.concat(parser.specs.flat_map(&:dependencies))
    end

    def includes_gem?(name)
      gems.any? { |gem| gem.name == name }
    end

    private

    def parser
      return unless defined?(Bundler) && Bundler.default_lockfile
      return @parser if defined?(@parser)

      lockfile = Bundler.read_file(Bundler.default_lockfile)
      @parser = lockfile ? Bundler::LockfileParser.new(lockfile) : nil
    rescue Bundler::BundlerError
      nil
    end
  end
end

Version data entries

221 entries across 212 versions & 19 rubygems

Version Path
cm-admin-1.5.22 vendor/bundle/ruby/3.3.0/gems/rubocop-1.35.1/lib/rubocop/lockfile.rb
cm-admin-1.5.21 vendor/bundle/ruby/3.3.0/gems/rubocop-1.35.1/lib/rubocop/lockfile.rb
cm-admin-1.5.20 vendor/bundle/ruby/3.3.0/gems/rubocop-1.35.1/lib/rubocop/lockfile.rb
harbr-2.8.1 vendor/bundle/ruby/3.2.0/gems/rubocop-1.57.2/lib/rubocop/lockfile.rb
bison-0.1.0 vendor/bundle/ruby/3.2.0/gems/rubocop-1.62.1/lib/rubocop/lockfile.rb
rubocop-1.62.1 lib/rubocop/lockfile.rb
rubocop-1.62.0 lib/rubocop/lockfile.rb
rubocop-1.61.0 lib/rubocop/lockfile.rb
mlh-rubocop-config-1.0.3 vendor/bundle/ruby/3.2.0/gems/rubocop-1.60.2/lib/rubocop/lockfile.rb
rubocop-1.60.2 lib/rubocop/lockfile.rb
study_line-0.2.7 vendor/bundle/ruby/3.2.0/gems/rubocop-1.60.0/lib/rubocop/lockfile.rb
study_line-0.2.6 vendor/bundle/ruby/3.2.0/gems/rubocop-1.60.0/lib/rubocop/lockfile.rb
study_line-0.2.5 vendor/bundle/ruby/3.2.0/gems/rubocop-1.60.0/lib/rubocop/lockfile.rb
study_line-0.2.4 vendor/bundle/ruby/3.2.0/gems/rubocop-1.60.0/lib/rubocop/lockfile.rb
study_line-0.2.3 vendor/bundle/ruby/3.2.0/gems/rubocop-1.60.0/lib/rubocop/lockfile.rb
study_line-0.2.2 vendor/bundle/ruby/3.2.0/gems/rubocop-1.60.0/lib/rubocop/lockfile.rb
rubocop-1.60.1 lib/rubocop/lockfile.rb
study_line-0.2.1 vendor/bundle/ruby/3.2.0/gems/rubocop-1.60.0/lib/rubocop/lockfile.rb
study_line-0.2.0 vendor/bundle/ruby/3.2.0/gems/rubocop-1.60.0/lib/rubocop/lockfile.rb
rubocop-1.60.0 lib/rubocop/lockfile.rb