2023-05-02 11:33:06 -04:00
// Copyright IBM Corp. 2014, 2026
2023-08-10 18:43:27 -04:00
// SPDX-License-Identifier: BUSL-1.1
2023-05-02 11:33:06 -04:00
2023-01-10 11:24:48 -05:00
package renderers
2023-01-09 05:40:47 -05:00
import (
"fmt"
2023-01-09 14:38:25 -05:00
2023-01-10 11:24:48 -05:00
"github.com/hashicorp/terraform/internal/command/jsonformat/computed"
2023-01-09 14:38:25 -05:00
"github.com/hashicorp/terraform/internal/plans"
2023-01-09 05:40:47 -05:00
)
2023-01-10 11:24:48 -05:00
var _ computed . DiffRenderer = ( * sensitiveRenderer ) ( nil )
func Sensitive ( change computed . Diff , beforeSensitive , afterSensitive bool ) computed . DiffRenderer {
2023-01-09 05:55:55 -05:00
return & sensitiveRenderer {
2023-01-10 11:24:48 -05:00
inner : change ,
2023-01-09 05:40:47 -05:00
beforeSensitive : beforeSensitive ,
afterSensitive : afterSensitive ,
}
}
type sensitiveRenderer struct {
2023-01-10 11:24:48 -05:00
inner computed . Diff
2023-01-09 05:40:47 -05:00
beforeSensitive bool
afterSensitive bool
}
2023-01-10 11:24:48 -05:00
func ( renderer sensitiveRenderer ) RenderHuman ( diff computed . Diff , indent int , opts computed . RenderHumanOpts ) string {
2023-01-12 11:59:07 -05:00
return fmt . Sprintf ( "(sensitive value)%s%s" , nullSuffix ( diff . Action , opts ) , forcesReplacement ( diff . Replace , opts ) )
2023-01-09 05:40:47 -05:00
}
2023-01-12 10:47:06 -05:00
func ( renderer sensitiveRenderer ) WarningsHuman ( diff computed . Diff , indent int , opts computed . RenderHumanOpts ) [ ] string {
2023-01-10 11:24:48 -05:00
if ( renderer . beforeSensitive == renderer . afterSensitive ) || renderer . inner . Action == plans . Create || renderer . inner . Action == plans . Delete {
2023-01-09 05:40:47 -05:00
// Only display warnings for sensitive values if they are changing from
2023-01-09 06:41:24 -05:00
// being sensitive or to being sensitive and if they are not being
2023-01-09 05:40:47 -05:00
// destroyed or created.
return [ ] string { }
}
var warning string
if renderer . beforeSensitive {
2023-01-12 10:47:06 -05:00
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 ) ) )
2023-01-09 05:40:47 -05:00
} else {
2023-01-12 10:47:06 -05:00
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 ) ) )
2023-01-09 05:40:47 -05:00
}
2023-01-10 11:24:48 -05:00
if renderer . inner . Action == plans . NoOp {
2023-01-09 05:40:47 -05:00
return [ ] string { fmt . Sprintf ( "%s The value is unchanged." , warning ) }
}
return [ ] string { warning }
}