From 7081c26e548381cd6a94993a4fa588b52c7fa282 Mon Sep 17 00:00:00 2001 From: Martin Atkins Date: Tue, 19 Nov 2019 13:57:35 -0800 Subject: [PATCH] command: Don't show more than two of the same warning Some of our warnings are produced in response to particular configuration constructs which might appear many times across a Terraform configuration. To avoid the warning output dwarfing all of the other output, we'll use ConsolidateWarnings to limit each distinct warning summary to appear at most twice, and annotate the final one in the sequence with an additional paragraph noting that some number of them have been hidden. This is intended as a compromise to ensure that these warnings are still seen and noted but to help ensure that we won't produce so many of them as to distract from other output that appears alongside them. This applies only to warnings relating to specific configuration ranges; errors will continue to be shown individually, and sourceless warnings (which are rare in Terraform today) will likewise remain ungrouped because they are less likely to be repeating the same statement about different instances of the same problem throughout the configuration. --- command/meta.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/command/meta.go b/command/meta.go index 854cc954b..9f553da62 100644 --- a/command/meta.go +++ b/command/meta.go @@ -480,6 +480,9 @@ func (m *Meta) showDiagnostics(vals ...interface{}) { diags = diags.Append(vals...) diags.Sort() + // Since warning messages are generally competing + diags = diags.ConsolidateWarnings() + for _, diag := range diags { // TODO: Actually measure the terminal width and pass it here. // For now, we don't have easy access to the writer that