From 3992f4472b845b37658800792830a16e7b5e8fbf Mon Sep 17 00:00:00 2001 From: Petr Hosek Date: Fri, 17 Oct 2014 10:57:24 +0100 Subject: [PATCH] Extract Vagrant provider processing logic This change extracts the provider processing logic to a separate method which can be invoked from a subtype, providing a custom provider. --- post-processor/vagrant/post-processor.go | 32 +++++++++++++----------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/post-processor/vagrant/post-processor.go b/post-processor/vagrant/post-processor.go index 8fb486edb..76e4b9e8f 100644 --- a/post-processor/vagrant/post-processor.go +++ b/post-processor/vagrant/post-processor.go @@ -64,20 +64,7 @@ func (p *PostProcessor) Configure(raws ...interface{}) error { return nil } -func (p *PostProcessor) PostProcess(ui packer.Ui, artifact packer.Artifact) (packer.Artifact, bool, error) { - - name, ok := builtins[artifact.BuilderId()] - if !ok { - return nil, false, fmt.Errorf( - "Unknown artifact type, can't build box: %s", artifact.BuilderId()) - } - - provider := providerForName(name) - if provider == nil { - // This shouldn't happen since we hard code all of these ourselves - panic(fmt.Sprintf("bad provider name: %s", name)) - } - +func (p *PostProcessor) PostProcessProvider(name string, provider Provider, ui packer.Ui, artifact packer.Artifact) (packer.Artifact, bool, error) { config := p.configs[""] if specificConfig, ok := p.configs[name]; ok { config = specificConfig @@ -158,6 +145,23 @@ func (p *PostProcessor) PostProcess(ui packer.Ui, artifact packer.Artifact) (pac return NewArtifact(name, outputPath), provider.KeepInputArtifact(), nil } +func (p *PostProcessor) PostProcess(ui packer.Ui, artifact packer.Artifact) (packer.Artifact, bool, error) { + + name, ok := builtins[artifact.BuilderId()] + if !ok { + return nil, false, fmt.Errorf( + "Unknown artifact type, can't build box: %s", artifact.BuilderId()) + } + + provider := providerForName(name) + if provider == nil { + // This shouldn't happen since we hard code all of these ourselves + panic(fmt.Sprintf("bad provider name: %s", name)) + } + + return p.PostProcessProvider(name, provider, ui, artifact) +} + func (p *PostProcessor) configureSingle(config *Config, raws ...interface{}) error { md, err := common.DecodeConfig(config, raws...) if err != nil {