mirror of
https://github.com/hashicorp/terraform.git
synced 2026-03-21 18:10:30 -04:00
85 lines
1.6 KiB
Go
85 lines
1.6 KiB
Go
// Copyright IBM Corp. 2014, 2026
|
|
// SPDX-License-Identifier: BUSL-1.1
|
|
|
|
package views
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/hashicorp/terraform/internal/command/arguments"
|
|
"github.com/hashicorp/terraform/internal/terraform"
|
|
"github.com/hashicorp/terraform/internal/tfdiags"
|
|
)
|
|
|
|
// Query renders outputs for query executions.
|
|
type Query interface {
|
|
Operation() Operation
|
|
Hooks() []terraform.Hook
|
|
|
|
Diagnostics(diags tfdiags.Diagnostics)
|
|
HelpPrompt()
|
|
}
|
|
|
|
func NewQuery(vt arguments.ViewType, view *View) Query {
|
|
switch vt {
|
|
case arguments.ViewJSON:
|
|
return &QueryJSON{
|
|
view: NewJSONView(view),
|
|
}
|
|
case arguments.ViewHuman:
|
|
return &QueryHuman{
|
|
view: view,
|
|
inAutomation: view.RunningInAutomation(),
|
|
}
|
|
default:
|
|
panic(fmt.Sprintf("unknown view type %v", vt))
|
|
}
|
|
}
|
|
|
|
type QueryHuman struct {
|
|
view *View
|
|
|
|
inAutomation bool
|
|
}
|
|
|
|
var _ Query = (*QueryHuman)(nil)
|
|
|
|
func (v *QueryHuman) Operation() Operation {
|
|
return NewQueryOperation(arguments.ViewHuman, v.inAutomation, v.view)
|
|
}
|
|
|
|
func (v *QueryHuman) Hooks() []terraform.Hook {
|
|
return []terraform.Hook{
|
|
NewUiHook(v.view),
|
|
}
|
|
}
|
|
|
|
func (v *QueryHuman) Diagnostics(diags tfdiags.Diagnostics) {
|
|
v.view.Diagnostics(diags)
|
|
}
|
|
func (v *QueryHuman) HelpPrompt() {
|
|
v.view.HelpPrompt("query")
|
|
}
|
|
|
|
type QueryJSON struct {
|
|
view *JSONView
|
|
}
|
|
|
|
var _ Query = (*QueryJSON)(nil)
|
|
|
|
func (v *QueryJSON) Operation() Operation {
|
|
return &QueryOperationJSON{view: v.view}
|
|
}
|
|
|
|
func (v *QueryJSON) Hooks() []terraform.Hook {
|
|
return []terraform.Hook{
|
|
newJSONHook(v.view),
|
|
}
|
|
}
|
|
|
|
func (v *QueryJSON) Diagnostics(diags tfdiags.Diagnostics) {
|
|
v.view.Diagnostics(diags)
|
|
}
|
|
|
|
func (v *QueryJSON) HelpPrompt() {
|
|
}
|