package shell import ( "context" sl "github.com/hashicorp/packer/common/shell-local" "github.com/hashicorp/packer/packer" ) type Provisioner struct { config sl.Config } func (p *Provisioner) Prepare(raws ...interface{}) error { err := sl.Decode(&p.config, raws...) if err != nil { return err } err = sl.Validate(&p.config) if err != nil { return err } return nil } func (p *Provisioner) Provision(ctx context.Context, ui packer.Ui, _ packer.Communicator) error { _, retErr := sl.Run(ctx, ui, &p.config) if retErr != nil { return retErr } return nil } func (p *Provisioner) Cancel() { // Just do nothing. When the process ends, so will our provisioner }