class Pronto::BundlerAudit::GemfileLock::Scanner

Pronto::BundlerAudit::GemfileLock::Scanner scans the given `path` for the given `gem_name` and returns an Integer representing the line number of the gem in the Gemfile.lock file.

Public Class Methods

call(*args) click to toggle source
# File lib/pronto/bundler_audit/gemfile_lock/scanner.rb, line 19
def self.call(*args)
  new(*args).call
end
new(gem_name:, path: GEMFILE_LOCK_FILENAME) click to toggle source
# File lib/pronto/bundler_audit/gemfile_lock/scanner.rb, line 10
def initialize(gem_name:, path: GEMFILE_LOCK_FILENAME)
  unless File.exist?(path)
    raise ArgumentError, "Gemfile.lock path not found"
  end

  @gem_name = gem_name
  @path = path
end

Public Instance Methods

call() click to toggle source
# File lib/pronto/bundler_audit/gemfile_lock/scanner.rb, line 23
def call
  determine_relevant_line_number
end

Private Instance Methods

determine_relevant_line_number() click to toggle source

@return [Integer] the line number; or 0 if not found

# File lib/pronto/bundler_audit/gemfile_lock/scanner.rb, line 30
def determine_relevant_line_number
  line_number = 0

  File.foreach(@path).with_index do |line, index|
    next unless line.include?(@gem_name)

    line_number = index.next
    break
  end

  line_number
end