|
|
|
|
@ -118,88 +118,6 @@ func (c *PluginConfig) Discover() error {
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (c *PluginConfig) discoverExternalComponents(path string) error {
|
|
|
|
|
var err error
|
|
|
|
|
log.Printf("[TRACE] discovering plugins in %s", path)
|
|
|
|
|
|
|
|
|
|
if !filepath.IsAbs(path) {
|
|
|
|
|
path, err = filepath.Abs(path)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
var externallyUsed []string
|
|
|
|
|
|
|
|
|
|
pluginPaths, err := c.discoverSingle(filepath.Join(path, "packer-builder-*"))
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
for pluginName, pluginPath := range pluginPaths {
|
|
|
|
|
newPath := pluginPath // this needs to be stored in a new variable for the func below
|
|
|
|
|
c.Builders.Set(pluginName, func() (packersdk.Builder, error) {
|
|
|
|
|
return c.Client(newPath).Builder()
|
|
|
|
|
})
|
|
|
|
|
externallyUsed = append(externallyUsed, pluginName)
|
|
|
|
|
}
|
|
|
|
|
if len(externallyUsed) > 0 {
|
|
|
|
|
sort.Strings(externallyUsed)
|
|
|
|
|
log.Printf("[INFO] using external builders: %v", externallyUsed)
|
|
|
|
|
externallyUsed = nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pluginPaths, err = c.discoverSingle(filepath.Join(path, "packer-post-processor-*"))
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
for pluginName, pluginPath := range pluginPaths {
|
|
|
|
|
newPath := pluginPath // this needs to be stored in a new variable for the func below
|
|
|
|
|
c.PostProcessors.Set(pluginName, func() (packersdk.PostProcessor, error) {
|
|
|
|
|
return c.Client(newPath).PostProcessor()
|
|
|
|
|
})
|
|
|
|
|
externallyUsed = append(externallyUsed, pluginName)
|
|
|
|
|
}
|
|
|
|
|
if len(externallyUsed) > 0 {
|
|
|
|
|
sort.Strings(externallyUsed)
|
|
|
|
|
log.Printf("using external post-processors %v", externallyUsed)
|
|
|
|
|
externallyUsed = nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pluginPaths, err = c.discoverSingle(filepath.Join(path, "packer-provisioner-*"))
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
for pluginName, pluginPath := range pluginPaths {
|
|
|
|
|
newPath := pluginPath // this needs to be stored in a new variable for the func below
|
|
|
|
|
c.Provisioners.Set(pluginName, func() (packersdk.Provisioner, error) {
|
|
|
|
|
return c.Client(newPath).Provisioner()
|
|
|
|
|
})
|
|
|
|
|
externallyUsed = append(externallyUsed, pluginName)
|
|
|
|
|
}
|
|
|
|
|
if len(externallyUsed) > 0 {
|
|
|
|
|
sort.Strings(externallyUsed)
|
|
|
|
|
log.Printf("using external provisioners %v", externallyUsed)
|
|
|
|
|
externallyUsed = nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pluginPaths, err = c.discoverSingle(filepath.Join(path, "packer-datasource-*"))
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
for pluginName, pluginPath := range pluginPaths {
|
|
|
|
|
newPath := pluginPath // this needs to be stored in a new variable for the func below
|
|
|
|
|
c.DataSources.Set(pluginName, func() (packersdk.Datasource, error) {
|
|
|
|
|
return c.Client(newPath).Datasource()
|
|
|
|
|
})
|
|
|
|
|
externallyUsed = append(externallyUsed, pluginName)
|
|
|
|
|
}
|
|
|
|
|
if len(externallyUsed) > 0 {
|
|
|
|
|
sort.Strings(externallyUsed)
|
|
|
|
|
log.Printf("using external datasource %v", externallyUsed)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (c *PluginConfig) discoverLegacyMonoComponents(path string) error {
|
|
|
|
|
var err error
|
|
|
|
|
log.Printf("[TRACE] discovering plugins in %s", path)
|
|
|
|
|
|