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  }