mirror of
https://github.com/opentffoundation/opentf.git
synced 2026-06-02 16:02:18 -04:00
* prep for processing the structured run output * undo unwanted change to a json key * Add skeleton functions and API for refactored renderer * goimports * Fix documentation of the RenderOpts struct * Add rendering functionality for primitives to the structured renderer * add test case for override * Add support for parsing and rendering sensitive values in the renderer * Add support for unknown/computed values in the structured renderer * delete missing unit tests * Add support for object attributes in the structured renderer * goimports * Add support for the replace paths data in the structured renderer * Add support for maps in the structured renderer
49 lines
1.6 KiB
Go
49 lines
1.6 KiB
Go
package change
|
|
|
|
import (
|
|
"fmt"
|
|
"reflect"
|
|
)
|
|
|
|
func Sensitive(before, after interface{}, beforeSensitive, afterSensitive bool) Renderer {
|
|
return &sensitiveRenderer{
|
|
before: before,
|
|
after: after,
|
|
beforeSensitive: beforeSensitive,
|
|
afterSensitive: afterSensitive,
|
|
}
|
|
}
|
|
|
|
type sensitiveRenderer struct {
|
|
before interface{}
|
|
after interface{}
|
|
|
|
beforeSensitive bool
|
|
afterSensitive bool
|
|
}
|
|
|
|
func (renderer sensitiveRenderer) Render(change Change, indent int, opts RenderOpts) string {
|
|
return fmt.Sprintf("(sensitive)%s%s", change.nullSuffix(opts.overrideNullSuffix), change.forcesReplacement())
|
|
}
|
|
|
|
func (renderer sensitiveRenderer) Warnings(change Change, indent int) []string {
|
|
if (renderer.beforeSensitive == renderer.afterSensitive) || renderer.before == nil || renderer.after == nil {
|
|
// Only display warnings for sensitive values if they are changing from
|
|
// being sensitive or to being sensitive and if they are not being
|
|
// destroyed or created.
|
|
return []string{}
|
|
}
|
|
|
|
var warning string
|
|
if renderer.beforeSensitive {
|
|
warning = fmt.Sprintf(" # [yellow]Warning[reset]: this attribute value will no longer be marked as sensitive\n%s # after applying this change.", change.indent(indent))
|
|
} else {
|
|
warning = 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.", change.indent(indent))
|
|
}
|
|
|
|
if reflect.DeepEqual(renderer.before, renderer.after) {
|
|
return []string{fmt.Sprintf("%s The value is unchanged.", warning)}
|
|
}
|
|
return []string{warning}
|
|
}
|