mirror of
https://github.com/opentofu/opentofu.git
synced 2025-01-03 20:57:09 -06:00
20 lines
663 B
Go
20 lines
663 B
Go
|
package terraform
|
||
|
|
||
|
// UpdateStateHook calls the PostStateUpdate hook with the current state.
|
||
|
func UpdateStateHook(ctx EvalContext) error {
|
||
|
// In principle we could grab the lock here just long enough to take a
|
||
|
// deep copy and then pass that to our hooks below, but we'll instead
|
||
|
// hold the hook for the duration to avoid the potential confusing
|
||
|
// situation of us racing to call PostStateUpdate concurrently with
|
||
|
// different state snapshots.
|
||
|
stateSync := ctx.State()
|
||
|
state := stateSync.Lock().DeepCopy()
|
||
|
defer stateSync.Unlock()
|
||
|
|
||
|
// Call the hook
|
||
|
err := ctx.Hook(func(h Hook) (HookAction, error) {
|
||
|
return h.PostStateUpdate(state)
|
||
|
})
|
||
|
return err
|
||
|
}
|