34 lines
626 B
Go
34 lines
626 B
Go
package command
|
|
|
|
import (
|
|
"sync"
|
|
|
|
"github.com/hashicorp/terraform/state"
|
|
"github.com/hashicorp/terraform/terraform"
|
|
)
|
|
|
|
// StateHook is a hook that continuously updates the state by calling
|
|
// WriteState on a state.State.
|
|
type StateHook struct {
|
|
terraform.NilHook
|
|
sync.Mutex
|
|
|
|
State state.State
|
|
}
|
|
|
|
func (h *StateHook) PostStateUpdate(
|
|
s *terraform.State) (terraform.HookAction, error) {
|
|
h.Lock()
|
|
defer h.Unlock()
|
|
|
|
if h.State != nil {
|
|
// Write the new state
|
|
if err := h.State.WriteState(s); err != nil {
|
|
return terraform.HookActionHalt, err
|
|
}
|
|
}
|
|
|
|
// Continue forth
|
|
return terraform.HookActionContinue, nil
|
|
}
|