opentofu/internal/command/jsonformat/change/primitive.go
Liam Cervante b8b1a8d430
Add support for unknown/computed values in the structured renderer (#32378)
* 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
2023-01-09 11:55:55 +01:00

49 lines
1.1 KiB
Go

package change
import (
"fmt"
"github.com/hashicorp/terraform/internal/plans"
)
func Primitive(before, after *string) Renderer {
return &primitiveRenderer{
before: before,
after: after,
}
}
type primitiveRenderer struct {
NoWarningsRenderer
before *string
after *string
}
func (renderer primitiveRenderer) Render(result Change, indent int, opts RenderOpts) string {
var beforeValue, afterValue string
if renderer.before != nil {
beforeValue = *renderer.before
} else {
beforeValue = "[dark_gray]null[reset]"
}
if renderer.after != nil {
afterValue = *renderer.after
} else {
afterValue = "[dark_gray]null[reset]"
}
switch result.action {
case plans.Create:
return fmt.Sprintf("%s%s", afterValue, result.forcesReplacement())
case plans.Delete:
return fmt.Sprintf("%s%s%s", beforeValue, result.nullSuffix(opts.overrideNullSuffix), result.forcesReplacement())
case plans.NoOp:
return fmt.Sprintf("%s%s", beforeValue, result.forcesReplacement())
default:
return fmt.Sprintf("%s [yellow]->[reset] %s%s", beforeValue, afterValue, result.forcesReplacement())
}
}