github.com/terramate-io/tf@v0.0.0-20230830114523-fce866b4dfcd/command/jsonformat/computed/renderers/sensitive_block.go (about) 1 // Copyright (c) HashiCorp, Inc. 2 // SPDX-License-Identifier: MPL-2.0 3 4 package renderers 5 6 import ( 7 "fmt" 8 9 "github.com/terramate-io/tf/command/jsonformat/computed" 10 "github.com/terramate-io/tf/plans" 11 ) 12 13 func SensitiveBlock(diff computed.Diff, beforeSensitive, afterSensitive bool) computed.DiffRenderer { 14 return &sensitiveBlockRenderer{ 15 inner: diff, 16 beforeSensitive: beforeSensitive, 17 afterSensitive: afterSensitive, 18 } 19 } 20 21 type sensitiveBlockRenderer struct { 22 inner computed.Diff 23 24 afterSensitive bool 25 beforeSensitive bool 26 } 27 28 func (renderer sensitiveBlockRenderer) RenderHuman(diff computed.Diff, indent int, opts computed.RenderHumanOpts) string { 29 cachedLinePrefix := fmt.Sprintf("%s%s", formatIndent(indent), writeDiffActionSymbol(plans.NoOp, opts)) 30 return fmt.Sprintf("{%s\n%s # At least one attribute in this block is (or was) sensitive,\n%s # so its contents will not be displayed.\n%s}", 31 forcesReplacement(diff.Replace, opts), cachedLinePrefix, cachedLinePrefix, cachedLinePrefix) 32 } 33 34 func (renderer sensitiveBlockRenderer) WarningsHuman(diff computed.Diff, indent int, opts computed.RenderHumanOpts) []string { 35 if (renderer.beforeSensitive == renderer.afterSensitive) || renderer.inner.Action == plans.Create || renderer.inner.Action == plans.Delete { 36 // Only display warnings for sensitive values if they are changing from 37 // being sensitive or to being sensitive and if they are not being 38 // destroyed or created. 39 return []string{} 40 } 41 42 if renderer.beforeSensitive { 43 return []string{opts.Colorize.Color(fmt.Sprintf(" # [yellow]Warning[reset]: this block will no longer be marked as sensitive\n%s # after applying this change.", formatIndent(indent)))} 44 } else { 45 return []string{opts.Colorize.Color(fmt.Sprintf(" # [yellow]Warning[reset]: this block will be marked as sensitive and will not\n%s # display in UI output after applying this change.", formatIndent(indent)))} 46 } 47 }