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.
This commit is contained in:
Martin Atkins 2019-11-19 13:57:35 -08:00
parent 79b62ae8ca
commit 7081c26e54
1 changed files with 3 additions and 0 deletions

View File

@ -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