github.com/hashicorp/packer@v1.14.3/packer/cmd_hook.go (about) 1 // Copyright (c) HashiCorp, Inc. 2 // SPDX-License-Identifier: BUSL-1.1 3 4 package packer 5 6 import ( 7 "context" 8 "log" 9 10 packersdk "github.com/hashicorp/packer-plugin-sdk/packer" 11 ) 12 13 type cmdHook struct { 14 hook packersdk.Hook 15 client *PluginClient 16 } 17 18 func (c *cmdHook) Run(ctx context.Context, name string, ui packersdk.Ui, comm packersdk.Communicator, data interface{}) error { 19 defer func() { 20 r := recover() 21 c.checkExit(r, nil) 22 }() 23 24 return c.hook.Run(ctx, name, ui, comm, data) 25 } 26 27 func (c *cmdHook) checkExit(p interface{}, cb func()) { 28 if c.client.Exited() && cb != nil { 29 cb() 30 } else if p != nil && !Killed { 31 log.Panic(p) 32 } 33 }