blob: e58e8a6d8b7e6079fa464d2e264d510f6033d3be [file] [edit]
// Copyright (c) The OpenTofu Authors
// SPDX-License-Identifier: MPL-2.0
// Copyright (c) 2023 HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0
package views
import (
"github.com/opentofu/opentofu/internal/tfdiags"
)
type Graph interface {
Diagnostics(diags tfdiags.Diagnostics)
ErrorUnsupportedLocalOp()
Output(graphStr string)
// Backend returns the non-command view that contains methods to provide
// progress output for the backend operations.
Backend() Backend
}
// NewGraph returns an initialized Graph implementation for the given ViewType.
func NewGraph(view *View) Graph {
return &GraphHuman{view: view}
}
type GraphHuman struct {
view *View
}
var _ Graph = (*GraphHuman)(nil)
func (v *GraphHuman) Diagnostics(diags tfdiags.Diagnostics) {
v.view.Diagnostics(diags)
}
func (v *GraphHuman) ErrorUnsupportedLocalOp() {
v.Diagnostics(tfdiags.Diagnostics{diagUnsupportedLocalOp})
}
func (v *GraphHuman) Output(graphStr string) {
_, _ = v.view.streams.Println(graphStr)
}
func (v *GraphHuman) Backend() Backend {
return &BackendHuman{
view: v.view,
}
}