class RuboCop::Lockfile

@api private
Does not actually resolve gems, just parses the lockfile.
Encapsulation of a lockfile for use when checking for gems.

def dependencies

Gems that the bundle depends on
def dependencies
  return [] unless parser
  parser.dependencies.values
end

def gems

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)

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

def parser

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