From fb5d1708c53d1534b7aee0b8c543563460ae3fcd Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Thu, 19 Dec 2013 09:28:19 -0800 Subject: [PATCH] post-processor/vagrant: include files --- CHANGELOG.md | 2 ++ post-processor/vagrant/virtualbox.go | 21 +++++++++++++++++---- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fb1af8ac1..a97d80e05 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,8 @@ FEATURES: [GH-715] * "description" field in templates: write a human-readable description of what a template does. This will be shown in `packer inspect`. +* Vagrant post-processor now accepts a list of files to include in the + box. IMPROVEMENTS: diff --git a/post-processor/vagrant/virtualbox.go b/post-processor/vagrant/virtualbox.go index 88bdc16af..2711c9159 100644 --- a/post-processor/vagrant/virtualbox.go +++ b/post-processor/vagrant/virtualbox.go @@ -18,9 +18,10 @@ import ( type VBoxBoxConfig struct { common.PackerConfig `mapstructure:",squash"` - OutputPath string `mapstructure:"output"` - VagrantfileTemplate string `mapstructure:"vagrantfile_template"` - CompressionLevel int `mapstructure:"compression_level"` + Include []string `mapstructure:"include"` + OutputPath string `mapstructure:"output"` + VagrantfileTemplate string `mapstructure:"vagrantfile_template"` + CompressionLevel int `mapstructure:"compression_level"` tpl *packer.ConfigTemplate } @@ -101,6 +102,16 @@ func (p *VBoxBoxPostProcessor) PostProcess(ui packer.Ui, artifact packer.Artifac } defer os.RemoveAll(dir) + // Copy all of the includes files into the temporary directory + for _, src := range p.config.Include { + ui.Message(fmt.Sprintf("Copying from include: %s", src)) + dst := filepath.Join(dir, filepath.Base(src)) + if err := CopyContents(dst, src); err != nil { + err = fmt.Errorf("Error copying include file: %s\n\n%s", src, err) + return nil, false, err + } + } + // Copy all of the original contents into the temporary directory for _, path := range artifact.Files() { @@ -112,7 +123,7 @@ func (p *VBoxBoxPostProcessor) PostProcess(ui packer.Ui, artifact packer.Artifac return nil, false, err } } else { - ui.Message(fmt.Sprintf("Copying: %s", path)) + ui.Message(fmt.Sprintf("Copying from artifact: %s", path)) dstPath := filepath.Join(dir, filepath.Base(path)) if err := CopyContents(dstPath, path); err != nil { return nil, false, err @@ -136,6 +147,8 @@ func (p *VBoxBoxPostProcessor) PostProcess(ui packer.Ui, artifact packer.Artifac vagrantfileContents := defaultVBoxVagrantfile if p.config.VagrantfileTemplate != "" { + ui.Message(fmt.Sprintf( + "Using Vagrantfile template: %s", p.config.VagrantfileTemplate)) f, err := os.Open(p.config.VagrantfileTemplate) if err != nil { return nil, false, err