mirror of
https://github.com/opentofu/opentofu.git
synced 2024-12-30 10:47:14 -06:00
ffe056bacb
This is part of a general effort to move all of Terraform's non-library package surface under internal in order to reinforce that these are for internal use within Terraform only. If you were previously importing packages under this prefix into an external codebase, you could pin to an earlier release tag as an interim solution until you've make a plan to achieve the same functionality some other way.
41 lines
1022 B
Go
41 lines
1022 B
Go
package views
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/hashicorp/terraform/internal/command/arguments"
|
|
)
|
|
|
|
// The StateLocker view is used to display locking/unlocking status messages
|
|
// if the state lock process takes longer than expected.
|
|
type StateLocker interface {
|
|
Locking()
|
|
Unlocking()
|
|
}
|
|
|
|
// NewStateLocker returns an initialized StateLocker implementation for the given ViewType.
|
|
func NewStateLocker(vt arguments.ViewType, view *View) StateLocker {
|
|
switch vt {
|
|
case arguments.ViewHuman:
|
|
return &StateLockerHuman{view: view}
|
|
default:
|
|
panic(fmt.Sprintf("unknown view type %v", vt))
|
|
}
|
|
}
|
|
|
|
// StateLockerHuman is an implementation of StateLocker which prints status to
|
|
// a terminal.
|
|
type StateLockerHuman struct {
|
|
view *View
|
|
}
|
|
|
|
var _ StateLocker = (*StateLockerHuman)(nil)
|
|
|
|
func (v *StateLockerHuman) Locking() {
|
|
v.view.streams.Println("Acquiring state lock. This may take a few moments...")
|
|
}
|
|
|
|
func (v *StateLockerHuman) Unlocking() {
|
|
v.view.streams.Println("Releasing state lock. This may take a few moments...")
|
|
}
|