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
|
PluginMinPort uint
|
||||||
PluginMaxPort uint
|
PluginMaxPort uint
|
||||||
|
|
||||||
Builders map[string]string
|
Builders map[string]string
|
||||||
Commands map[string]string
|
Commands map[string]string
|
||||||
Provisioners 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
|
// 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()
|
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
|
// This is a proper packer.ProvisionerFunc that can be used to load
|
||||||
// packer.Provisioner implementations from defined plugins.
|
// packer.Provisioner implementations from defined plugins.
|
||||||
func (c *config) LoadProvisioner(name string) (packer.Provisioner, error) {
|
func (c *config) LoadProvisioner(name string) (packer.Provisioner, error) {
|
||||||
|
|
|
@ -53,6 +53,7 @@ func main() {
|
||||||
envConfig.Components.Builder = config.LoadBuilder
|
envConfig.Components.Builder = config.LoadBuilder
|
||||||
envConfig.Components.Command = config.LoadCommand
|
envConfig.Components.Command = config.LoadCommand
|
||||||
envConfig.Components.Hook = config.LoadHook
|
envConfig.Components.Hook = config.LoadHook
|
||||||
|
envConfig.Components.PostProcessor = config.LoadPostProcessor
|
||||||
envConfig.Components.Provisioner = config.LoadProvisioner
|
envConfig.Components.Provisioner = config.LoadProvisioner
|
||||||
|
|
||||||
env, err := packer.NewEnvironment(envConfig)
|
env, err := packer.NewEnvironment(envConfig)
|
||||||
|
|
|
@ -140,6 +140,18 @@ func (c *Client) Hook() (packer.Hook, error) {
|
||||||
return &cmdHook{packrpc.Hook(client), c}, nil
|
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
|
// Returns a provisioner implementation that is communicating over this
|
||||||
// client. If the client hasn't been started, this will start it.
|
// client. If the client hasn't been started, this will start it.
|
||||||
func (c *Client) Provisioner() (packer.Provisioner, error) {
|
func (c *Client) Provisioner() (packer.Provisioner, error) {
|
||||||
|
|
Loading…
Reference in New Issue