github.com/hashicorp/packer@v1.14.3/packer/maps.go (about)

     1  // Copyright (c) HashiCorp, Inc.
     2  // SPDX-License-Identifier: BUSL-1.1
     3  
     4  package packer
     5  
     6  import (
     7  	"fmt"
     8  
     9  	packersdk "github.com/hashicorp/packer-plugin-sdk/packer"
    10  )
    11  
    12  type MapOfProvisioner map[string]func() (packersdk.Provisioner, error)
    13  
    14  func (mop MapOfProvisioner) Has(provisioner string) bool {
    15  	_, res := mop[provisioner]
    16  	return res
    17  }
    18  
    19  func (mop MapOfProvisioner) Set(provisioner string, starter func() (packersdk.Provisioner, error)) {
    20  	mop[provisioner] = starter
    21  }
    22  
    23  func (mop MapOfProvisioner) Start(provisioner string) (packersdk.Provisioner, error) {
    24  	p, found := mop[provisioner]
    25  	if !found {
    26  		return nil, fmt.Errorf("Unknown provisioner %s", provisioner)
    27  	}
    28  	return p()
    29  }
    30  
    31  func (mop MapOfProvisioner) List() []string {
    32  	res := []string{}
    33  	for k := range mop {
    34  		res = append(res, k)
    35  	}
    36  	return res
    37  }
    38  
    39  type MapOfPostProcessor map[string]func() (packersdk.PostProcessor, error)
    40  
    41  func (mopp MapOfPostProcessor) Has(postProcessor string) bool {
    42  	_, res := mopp[postProcessor]
    43  	return res
    44  }
    45  
    46  func (mopp MapOfPostProcessor) Set(postProcessor string, starter func() (packersdk.PostProcessor, error)) {
    47  	mopp[postProcessor] = starter
    48  }
    49  
    50  func (mopp MapOfPostProcessor) Start(postProcessor string) (packersdk.PostProcessor, error) {
    51  	p, found := mopp[postProcessor]
    52  	if !found {
    53  		return nil, fmt.Errorf("Unknown post-processor %s", postProcessor)
    54  	}
    55  	return p()
    56  }
    57  
    58  func (mopp MapOfPostProcessor) List() []string {
    59  	res := []string{}
    60  	for k := range mopp {
    61  		res = append(res, k)
    62  	}
    63  	return res
    64  }
    65  
    66  type MapOfBuilder map[string]func() (packersdk.Builder, error)
    67  
    68  func (mob MapOfBuilder) Has(builder string) bool {
    69  	_, res := mob[builder]
    70  	return res
    71  }
    72  
    73  func (mob MapOfBuilder) Set(builder string, starter func() (packersdk.Builder, error)) {
    74  	mob[builder] = starter
    75  }
    76  
    77  func (mob MapOfBuilder) Start(builder string) (packersdk.Builder, error) {
    78  	d, found := mob[builder]
    79  	if !found {
    80  		return nil, fmt.Errorf("Unknown builder %s", builder)
    81  	}
    82  	return d()
    83  }
    84  
    85  func (mob MapOfBuilder) List() []string {
    86  	res := []string{}
    87  	for k := range mob {
    88  		res = append(res, k)
    89  	}
    90  	return res
    91  }
    92  
    93  type MapOfDatasource map[string]func() (packersdk.Datasource, error)
    94  
    95  func (mod MapOfDatasource) Has(dataSource string) bool {
    96  	_, res := mod[dataSource]
    97  	return res
    98  }
    99  
   100  func (mod MapOfDatasource) Set(dataSource string, starter func() (packersdk.Datasource, error)) {
   101  	mod[dataSource] = starter
   102  }
   103  
   104  func (mod MapOfDatasource) Start(dataSource string) (packersdk.Datasource, error) {
   105  	d, found := mod[dataSource]
   106  	if !found {
   107  		return nil, fmt.Errorf("Unknown data source %s", dataSource)
   108  	}
   109  	return d()
   110  }
   111  
   112  func (mod MapOfDatasource) List() []string {
   113  	res := []string{}
   114  	for k := range mod {
   115  		res = append(res, k)
   116  	}
   117  	return res
   118  }