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
|
||
|
}
|