github.com/ByteTerrace/packer@v1.3.2/packer/plugin/post_processor.go (about) 1 package plugin 2 3 import ( 4 "log" 5 6 "github.com/hashicorp/packer/packer" 7 ) 8 9 type cmdPostProcessor struct { 10 p packer.PostProcessor 11 client *Client 12 } 13 14 func (c *cmdPostProcessor) Configure(config ...interface{}) error { 15 defer func() { 16 r := recover() 17 c.checkExit(r, nil) 18 }() 19 20 return c.p.Configure(config...) 21 } 22 23 func (c *cmdPostProcessor) PostProcess(ui packer.Ui, a packer.Artifact) (packer.Artifact, bool, error) { 24 defer func() { 25 r := recover() 26 c.checkExit(r, nil) 27 }() 28 29 return c.p.PostProcess(ui, a) 30 } 31 32 func (c *cmdPostProcessor) checkExit(p interface{}, cb func()) { 33 if c.client.Exited() && cb != nil { 34 cb() 35 } else if p != nil && !Killed { 36 log.Panic(p) 37 } 38 }