mirror of
https://github.com/opentffoundation/opentf.git
synced 2025-12-21 10:47:34 -05:00
Signed-off-by: siddharthasonker95 <158144589+siddharthasonker95@users.noreply.github.com>
61 lines
2.2 KiB
Go
61 lines
2.2 KiB
Go
// Copyright (c) The OpenTofu Authors
|
|
// SPDX-License-Identifier: MPL-2.0
|
|
// Copyright (c) 2023 HashiCorp, Inc.
|
|
// SPDX-License-Identifier: MPL-2.0
|
|
|
|
package renderers
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/opentofu/opentofu/internal/command/jsonformat/computed"
|
|
"github.com/opentofu/opentofu/internal/plans"
|
|
)
|
|
|
|
var _ computed.DiffRenderer = (*sensitiveRenderer)(nil)
|
|
|
|
func Sensitive(change computed.Diff, beforeSensitive, afterSensitive bool) computed.DiffRenderer {
|
|
return &sensitiveRenderer{
|
|
inner: change,
|
|
beforeSensitive: beforeSensitive,
|
|
afterSensitive: afterSensitive,
|
|
}
|
|
}
|
|
|
|
type sensitiveRenderer struct {
|
|
inner computed.Diff
|
|
|
|
beforeSensitive bool
|
|
afterSensitive bool
|
|
}
|
|
|
|
func (renderer sensitiveRenderer) RenderHuman(diff computed.Diff, indent int, opts computed.RenderHumanOpts) string {
|
|
// If the -show-sensitive argument is set, then invoke RenderHuman with the inner computed.Diff to display sensitive values.
|
|
if opts.ShowSensitive {
|
|
return renderer.inner.RenderHuman(indent, opts)
|
|
}
|
|
|
|
return fmt.Sprintf("(sensitive value)%s%s", nullSuffix(diff.Action, opts), forcesReplacement(diff.Replace, opts))
|
|
}
|
|
|
|
func (renderer sensitiveRenderer) WarningsHuman(diff computed.Diff, indent int, opts computed.RenderHumanOpts) []string {
|
|
if (renderer.beforeSensitive == renderer.afterSensitive) || renderer.inner.Action == plans.Create || renderer.inner.Action == plans.Delete {
|
|
// 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 = 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)))
|
|
} else {
|
|
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)))
|
|
}
|
|
|
|
if renderer.inner.Action == plans.NoOp {
|
|
return []string{fmt.Sprintf("%s The value is unchanged.", warning)}
|
|
}
|
|
return []string{warning}
|
|
}
|