github.com/phobos182/packer@v0.2.3-0.20130819023704-c84d2aeffc68/packer/plugin/hook.go (about) 1 package plugin 2 3 import ( 4 "github.com/mitchellh/packer/packer" 5 "log" 6 ) 7 8 type cmdHook struct { 9 hook packer.Hook 10 client *Client 11 } 12 13 func (c *cmdHook) Run(name string, ui packer.Ui, comm packer.Communicator, data interface{}) error { 14 defer func() { 15 r := recover() 16 c.checkExit(r, nil) 17 }() 18 19 return c.hook.Run(name, ui, comm, data) 20 } 21 22 func (c *cmdHook) checkExit(p interface{}, cb func()) { 23 if c.client.Exited() { 24 cb() 25 } else if p != nil { 26 log.Panic(p) 27 } 28 }