github.com/terramate-io/tf@v0.0.0-20230830114523-fce866b4dfcd/command/jsonformat/computed/renderers/sensitive.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 var _ computed.DiffRenderer = (*sensitiveRenderer)(nil) 14 15 func Sensitive(change computed.Diff, beforeSensitive, afterSensitive bool) computed.DiffRenderer { 16 return &sensitiveRenderer{ 17 inner: change, 18 beforeSensitive: beforeSensitive, 19 afterSensitive: afterSensitive, 20 } 21 } 22 23 type sensitiveRenderer struct { 24 inner computed.Diff 25 26 beforeSensitive bool 27 afterSensitive bool 28 } 29 30 func (renderer sensitiveRenderer) RenderHuman(diff computed.Diff, indent int, opts computed.RenderHumanOpts) string { 31 return fmt.Sprintf("(sensitive value)%s%s", nullSuffix(diff.Action, opts), forcesReplacement(diff.Replace, opts)) 32 } 33 34 func (renderer sensitiveRenderer) 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 var warning string 43 if renderer.beforeSensitive { 44 warning = opts.Colorize.Color(fmt.Sprintf(" # [yellow]Warning[reset]: this attribute value will no longer be marked as sensitive\n%s # after applying this change.", formatIndent(indent))) 45 } else { 46 warning = opts.Colorize.Color(fmt.Sprintf(" # [yellow]Warning[reset]: this attribute value will be marked as sensitive and will not\n%s # display in UI output after applying this change.", formatIndent(indent))) 47 } 48 49 if renderer.inner.Action == plans.NoOp { 50 return []string{fmt.Sprintf("%s The value is unchanged.", warning)} 51 } 52 return []string{warning} 53 }