package plugin import ( "github.com/mitchellh/packer/packer" "log" ) type cmdCommand struct { command packer.Command client *Client } func (c *cmdCommand) Help() (result string) { defer func() { r := recover() c.checkExit(r, func() { result = "" }) }() result = c.command.Help() return } func (c *cmdCommand) Run(e packer.Environment, args []string) (exitCode int) { defer func() { r := recover() c.checkExit(r, func() { exitCode = 1 }) }() exitCode = c.command.Run(e, args) return } func (c *cmdCommand) Synopsis() (result string) { defer func() { r := recover() c.checkExit(r, func() { result = "" }) }() result = c.command.Synopsis() return } func (c *cmdCommand) checkExit(p interface{}, cb func()) { if c.client.Exited() { cb() } else if p != nil { log.Panic(p) } }