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