pdobb/pronto-bundler_audit

View on GitHub
lib/pronto/bundler_audit/results/unpatched_gem.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
# frozen_string_literal: true

require_relative "base_result"
require "pronto/bundler_audit/advisory_formatters/compact"
require "pronto/bundler_audit/advisory_formatters/verbose"
require "pronto/bundler_audit/gemfile_lock/scanner"

module Pronto
  class BundlerAudit
    module Results
      # Pronto::BundlerAudit::Results::UnpatchedGem is a stand-in for the
      # ::Pronto::Message object for ::Bundler::Audit::Scanner::UnpatchedGem
      # issues.
      class UnpatchedGem < BaseResult
        # @return [Symbol]
        def level
          :error
        end

        # @return [Integer]
        def line
          find_relevant_line_number
        end

        # @return [String]
        def message
          advisory_formatter.to_s
        end

        private

        # @return [Integer]
        def find_relevant_line_number
          Pronto::BundlerAudit::GemfileLock::Scanner.call(gem_name: @gem.name)
        end

        def advisory_formatter
          # TODO: Switch type based on configuration options, once available.
          Pronto::BundlerAudit::AdvisoryFormatters::Verbose.new(
            gem: @gem,
            advisory: @advisory)
        end
      end
    end
  end
end