# frozen_string_literal: true require_relative "../../../github/yarn_audit" module Neetob class CLI module MonthlyAudit module Security module Code class YarnAudit < CLI::Base def initialize super() end def run ui.success("### 1.1.2. Checking whether running `yarn audit` throws any vulnerabilities") repo_data = [["Repository", "Vulnerabilities Found", "Comments", "Audit Passed"]] ui.info "\n" NeetoCompliance::NeetoRepos.products.keys.each do |repo| ui.info("Checking yarn audit run results for #{repo}", print_to_audit_log: false) yarn_audit_result = Neetob::CLI::Github::YarnAudit.new([repo]).run vulnerabilities_found = "No" audit_passed = "No" comments = nil if yarn_audit_result && yarn_audit_result.include?("0 vulnerabilities found") audit_passed = "Yes" else vulnerabilities_found = "Yes" vulnerabilities = yarn_audit_result.split("\n").select { |line| line.include?("vulnerabilities found") }.first.strip severity = yarn_audit_result.split("\n").select { |line| line.include?("Severity:") }.first.strip.gsub("|", ",") comments = "#{vulnerabilities}<br>#{severity}" end repo_data << [repo, vulnerabilities_found, comments, audit_passed] end ui.print_table(repo_data) end end end end end end end