github.com/hashicorp/packer@v1.14.3/provisioner/shell-local/provisioner.go (about) 1 // Copyright (c) HashiCorp, Inc. 2 // SPDX-License-Identifier: BUSL-1.1 3 4 package shell 5 6 import ( 7 "context" 8 9 "github.com/hashicorp/hcl/v2/hcldec" 10 packersdk "github.com/hashicorp/packer-plugin-sdk/packer" 11 sl "github.com/hashicorp/packer-plugin-sdk/shell-local" 12 ) 13 14 type Provisioner struct { 15 config sl.Config 16 } 17 18 func (p *Provisioner) ConfigSpec() hcldec.ObjectSpec { return p.config.FlatMapstructure().HCL2Spec() } 19 20 func (p *Provisioner) Prepare(raws ...interface{}) error { 21 err := sl.Decode(&p.config, raws...) 22 if err != nil { 23 return err 24 } 25 26 err = sl.Validate(&p.config) 27 if err != nil { 28 return err 29 } 30 31 return nil 32 } 33 34 func (p *Provisioner) Provision(ctx context.Context, ui packersdk.Ui, _ packersdk.Communicator, generatedData map[string]interface{}) error { 35 _, retErr := sl.Run(ctx, ui, &p.config, generatedData) 36 37 return retErr 38 }