Allow post-processors in the core configuration
This commit is contained in:
parent
e2534fe88d
commit
ca7e8dbb74
20
config.go
20
config.go
|
@ -40,9 +40,10 @@ type config struct {
|
|||
PluginMinPort uint
|
||||
PluginMaxPort uint
|
||||
|
||||
Builders map[string]string
|
||||
Commands map[string]string
|
||||
Provisioners map[string]string
|
||||
Builders map[string]string
|
||||
Commands map[string]string
|
||||
PostProcessors map[string]string `json:"post-processors"`
|
||||
Provisioners map[string]string
|
||||
}
|
||||
|
||||
// Decodes configuration in JSON format from the given io.Reader into
|
||||
|
@ -94,6 +95,19 @@ func (c *config) LoadHook(name string) (packer.Hook, error) {
|
|||
return c.pluginClient(name).Hook()
|
||||
}
|
||||
|
||||
// This is a proper packer.PostProcessorFunc that can be used to load
|
||||
// packer.PostProcessor implementations from defined plugins.
|
||||
func (c *config) LoadPostProcessor(name string) (packer.PostProcessor, error) {
|
||||
log.Printf("Loading post-processor: %s", name)
|
||||
bin, ok := c.PostProcessors[name]
|
||||
if !ok {
|
||||
log.Printf("Post-processor not found: %s", name)
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
return c.pluginClient(bin).PostProcessor()
|
||||
}
|
||||
|
||||
// This is a proper packer.ProvisionerFunc that can be used to load
|
||||
// packer.Provisioner implementations from defined plugins.
|
||||
func (c *config) LoadProvisioner(name string) (packer.Provisioner, error) {
|
||||
|
|
|
@ -53,6 +53,7 @@ func main() {
|
|||
envConfig.Components.Builder = config.LoadBuilder
|
||||
envConfig.Components.Command = config.LoadCommand
|
||||
envConfig.Components.Hook = config.LoadHook
|
||||
envConfig.Components.PostProcessor = config.LoadPostProcessor
|
||||
envConfig.Components.Provisioner = config.LoadProvisioner
|
||||
|
||||
env, err := packer.NewEnvironment(envConfig)
|
||||
|
|
|
@ -140,6 +140,18 @@ func (c *Client) Hook() (packer.Hook, error) {
|
|||
return &cmdHook{packrpc.Hook(client), c}, nil
|
||||
}
|
||||
|
||||
// Returns a post-processor implementation that is communicating over
|
||||
// this client. If the client hasn't been started, this will start it.
|
||||
func (c *Client) PostProcessor() (packer.PostProcessor, error) {
|
||||
_, err := c.rpcClient()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// TODO
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
// Returns a provisioner implementation that is communicating over this
|
||||
// client. If the client hasn't been started, this will start it.
|
||||
func (c *Client) Provisioner() (packer.Provisioner, error) {
|
||||
|
|
Loading…
Reference in New Issue