From 116ed26e4ee72b86d3f2abbeee1c10f2d0f7166d Mon Sep 17 00:00:00 2001 From: Ewoud Kohl van Wijngaarden Date: Tue, 14 Feb 2023 13:36:55 +0100 Subject: [PATCH 1/2] Refactor context handling --- lib/puppet-lint.rb | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/puppet-lint.rb b/lib/puppet-lint.rb index a45e31da..00860f4f 100644 --- a/lib/puppet-lint.rb +++ b/lib/puppet-lint.rb @@ -124,6 +124,7 @@ def format_message(message) puts format % message puts " #{message[:reason]}" if message[:kind] == :ignored && !message[:reason].nil? + print_context(message) end # Internal: Format a problem message and print it to STDOUT so GitHub Actions @@ -154,7 +155,8 @@ def get_context(message) def print_context(message) return if message[:check] == 'documentation' return if message[:kind] == :fixed - line = get_context(message) + line = message[:context] + return unless line offset = line.index(%r{\S}) || 1 puts "\n #{line.strip}" printf("%#{message[:column] + 2 - offset}s\n\n", '^') @@ -175,12 +177,12 @@ def report(problems) next unless message[:kind] == :fixed || [message[:kind], :all].include?(configuration.error_level) + message[:context] = get_context(message) if configuration.with_context + if configuration.json || configuration.sarif - message['context'] = get_context(message) if configuration.with_context json << message else format_message(message) - print_context(message) if configuration.with_context print_github_annotation(message) if configuration.github_actions end end From 18ff0c9519ed33df6879f800f223dfe8319966ce Mon Sep 17 00:00:00 2001 From: Ewoud Kohl van Wijngaarden Date: Tue, 14 Feb 2023 13:40:06 +0100 Subject: [PATCH 2/2] Always return an array of problems in report --- lib/puppet-lint.rb | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/puppet-lint.rb b/lib/puppet-lint.rb index 00860f4f..dbe1dd5a 100644 --- a/lib/puppet-lint.rb +++ b/lib/puppet-lint.rb @@ -170,6 +170,8 @@ def print_context(message) # Returns array of problem. def report(problems) json = [] + print_stdout = !(configuration.json || configuration.sarif) + problems.each do |message| next if message[:kind] == :ignored && !PuppetLint.configuration.show_ignored @@ -179,9 +181,9 @@ def report(problems) message[:context] = get_context(message) if configuration.with_context - if configuration.json || configuration.sarif - json << message - else + json << message + + if print_stdout format_message(message) print_github_annotation(message) if configuration.github_actions end