mirror of https://github.com/hashicorp/packer
Fixing post-processors requires some smart parsing of the template. Let's turn that logic into a helper and use it everywhere.pull/6674/head
parent
cc5c2fb100
commit
42910a5f8c
@ -0,0 +1,25 @@
|
||||
package fix
|
||||
|
||||
// PP is a convenient way to interact with the post-processors within a fixer
|
||||
type PP struct {
|
||||
PostProcessors []interface{} `mapstructure:"post-processors"`
|
||||
}
|
||||
|
||||
// postProcessors converts the variable structure of the template to a list
|
||||
func (pp *PP) postProcessors() []map[string]interface{} {
|
||||
pps := make([]map[string]interface{}, 0, len(pp.PostProcessors))
|
||||
for _, rawPP := range pp.PostProcessors {
|
||||
switch pp := rawPP.(type) {
|
||||
case string:
|
||||
case map[string]interface{}:
|
||||
pps = append(pps, pp)
|
||||
case []interface{}:
|
||||
for _, innerRawPP := range pp {
|
||||
if innerPP, ok := innerRawPP.(map[string]interface{}); ok {
|
||||
pps = append(pps, innerPP)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return pps
|
||||
}
|
||||
Loading…
Reference in new issue