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 }