post-processor/vagrant: include files

This commit is contained in:
Mitchell Hashimoto 2013-12-19 09:28:19 -08:00
parent eaf76618cb
commit fb5d1708c5
2 changed files with 19 additions and 4 deletions

View File

@ -17,6 +17,8 @@ FEATURES:
[GH-715] [GH-715]
* "description" field in templates: write a human-readable description * "description" field in templates: write a human-readable description
of what a template does. This will be shown in `packer inspect`. 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: IMPROVEMENTS:

View File

@ -18,6 +18,7 @@ import (
type VBoxBoxConfig struct { type VBoxBoxConfig struct {
common.PackerConfig `mapstructure:",squash"` common.PackerConfig `mapstructure:",squash"`
Include []string `mapstructure:"include"`
OutputPath string `mapstructure:"output"` OutputPath string `mapstructure:"output"`
VagrantfileTemplate string `mapstructure:"vagrantfile_template"` VagrantfileTemplate string `mapstructure:"vagrantfile_template"`
CompressionLevel int `mapstructure:"compression_level"` CompressionLevel int `mapstructure:"compression_level"`
@ -101,6 +102,16 @@ func (p *VBoxBoxPostProcessor) PostProcess(ui packer.Ui, artifact packer.Artifac
} }
defer os.RemoveAll(dir) 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 // Copy all of the original contents into the temporary directory
for _, path := range artifact.Files() { for _, path := range artifact.Files() {
@ -112,7 +123,7 @@ func (p *VBoxBoxPostProcessor) PostProcess(ui packer.Ui, artifact packer.Artifac
return nil, false, err return nil, false, err
} }
} else { } else {
ui.Message(fmt.Sprintf("Copying: %s", path)) ui.Message(fmt.Sprintf("Copying from artifact: %s", path))
dstPath := filepath.Join(dir, filepath.Base(path)) dstPath := filepath.Join(dir, filepath.Base(path))
if err := CopyContents(dstPath, path); err != nil { if err := CopyContents(dstPath, path); err != nil {
return nil, false, err return nil, false, err
@ -136,6 +147,8 @@ func (p *VBoxBoxPostProcessor) PostProcess(ui packer.Ui, artifact packer.Artifac
vagrantfileContents := defaultVBoxVagrantfile vagrantfileContents := defaultVBoxVagrantfile
if p.config.VagrantfileTemplate != "" { if p.config.VagrantfileTemplate != "" {
ui.Message(fmt.Sprintf(
"Using Vagrantfile template: %s", p.config.VagrantfileTemplate))
f, err := os.Open(p.config.VagrantfileTemplate) f, err := os.Open(p.config.VagrantfileTemplate)
if err != nil { if err != nil {
return nil, false, err return nil, false, err