post-processor/vagrant: process output path properly
This commit is contained in:
parent
153057a01d
commit
fcb24f6896
|
@ -9,6 +9,10 @@ IMPROVEMENTS:
|
||||||
* builder/digitalocean: API requests will use HTTP proxy if specified
|
* builder/digitalocean: API requests will use HTTP proxy if specified
|
||||||
by environmental variables.
|
by environmental variables.
|
||||||
|
|
||||||
|
BUG FIXES:
|
||||||
|
|
||||||
|
* post-processor/vagrant: `output_path` templates now work again.
|
||||||
|
|
||||||
## 0.3.2 (August 18, 2013)
|
## 0.3.2 (August 18, 2013)
|
||||||
|
|
||||||
FEATURES:
|
FEATURES:
|
||||||
|
|
|
@ -43,20 +43,8 @@ func (p *AWSBoxPostProcessor) Configure(raws ...interface{}) error {
|
||||||
// Accumulate any errors
|
// Accumulate any errors
|
||||||
errs := common.CheckUnusedConfig(md)
|
errs := common.CheckUnusedConfig(md)
|
||||||
|
|
||||||
templates := map[string]*string{
|
|
||||||
"output": &p.config.OutputPath,
|
|
||||||
}
|
|
||||||
|
|
||||||
for n, ptr := range templates {
|
|
||||||
var err error
|
|
||||||
*ptr, err = p.config.tpl.Process(*ptr, nil)
|
|
||||||
if err != nil {
|
|
||||||
errs = packer.MultiErrorAppend(
|
|
||||||
errs, fmt.Errorf("Error processing %s: %s", n, err))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
validates := map[string]*string{
|
validates := map[string]*string{
|
||||||
|
"output": &p.config.OutputPath,
|
||||||
"vagrantfile_template": &p.config.VagrantfileTemplate,
|
"vagrantfile_template": &p.config.VagrantfileTemplate,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -90,8 +78,11 @@ func (p *AWSBoxPostProcessor) PostProcess(ui packer.Ui, artifact packer.Artifact
|
||||||
}
|
}
|
||||||
|
|
||||||
// Compile the output path
|
// Compile the output path
|
||||||
outputPath, err := ProcessOutputPath(p.config.OutputPath,
|
outputPath, err := p.config.tpl.Process(p.config.OutputPath, &OutputPathTemplate{
|
||||||
p.config.PackerBuildName, "aws", artifact)
|
ArtifactId: artifact.Id(),
|
||||||
|
BuildName: p.config.PackerBuildName,
|
||||||
|
Provider: "aws",
|
||||||
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, false, err
|
return nil, false, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,15 +2,12 @@ package vagrant
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"archive/tar"
|
"archive/tar"
|
||||||
"bytes"
|
|
||||||
"compress/gzip"
|
"compress/gzip"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"github.com/mitchellh/packer/packer"
|
|
||||||
"io"
|
"io"
|
||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"text/template"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// OutputPathTemplate is the structure that is availalable within the
|
// OutputPathTemplate is the structure that is availalable within the
|
||||||
|
@ -108,26 +105,6 @@ func DirToBox(dst, dir string) error {
|
||||||
return filepath.Walk(dir, tarWalk)
|
return filepath.Walk(dir, tarWalk)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ProcessOutputPath takes an output path template and executes it,
|
|
||||||
// replacing variables with their respective values.
|
|
||||||
func ProcessOutputPath(path string, buildName string, provider string, artifact packer.Artifact) (string, error) {
|
|
||||||
var buf bytes.Buffer
|
|
||||||
|
|
||||||
tplData := &OutputPathTemplate{
|
|
||||||
ArtifactId: artifact.Id(),
|
|
||||||
BuildName: buildName,
|
|
||||||
Provider: provider,
|
|
||||||
}
|
|
||||||
|
|
||||||
t, err := template.New("output").Parse(path)
|
|
||||||
if err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
|
|
||||||
err = t.Execute(&buf, tplData)
|
|
||||||
return buf.String(), err
|
|
||||||
}
|
|
||||||
|
|
||||||
// WriteMetadata writes the "metadata.json" file for a Vagrant box.
|
// WriteMetadata writes the "metadata.json" file for a Vagrant box.
|
||||||
func WriteMetadata(dir string, contents interface{}) error {
|
func WriteMetadata(dir string, contents interface{}) error {
|
||||||
f, err := os.Create(filepath.Join(dir, "metadata.json"))
|
f, err := os.Create(filepath.Join(dir, "metadata.json"))
|
||||||
|
|
|
@ -45,20 +45,8 @@ func (p *VBoxBoxPostProcessor) Configure(raws ...interface{}) error {
|
||||||
// Accumulate any errors
|
// Accumulate any errors
|
||||||
errs := common.CheckUnusedConfig(md)
|
errs := common.CheckUnusedConfig(md)
|
||||||
|
|
||||||
templates := map[string]*string{
|
|
||||||
"output": &p.config.OutputPath,
|
|
||||||
}
|
|
||||||
|
|
||||||
for n, ptr := range templates {
|
|
||||||
var err error
|
|
||||||
*ptr, err = p.config.tpl.Process(*ptr, nil)
|
|
||||||
if err != nil {
|
|
||||||
errs = packer.MultiErrorAppend(
|
|
||||||
errs, fmt.Errorf("Error processing %s: %s", n, err))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
validates := map[string]*string{
|
validates := map[string]*string{
|
||||||
|
"output": &p.config.OutputPath,
|
||||||
"vagrantfile_template": &p.config.VagrantfileTemplate,
|
"vagrantfile_template": &p.config.VagrantfileTemplate,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -85,8 +73,11 @@ func (p *VBoxBoxPostProcessor) PostProcess(ui packer.Ui, artifact packer.Artifac
|
||||||
}
|
}
|
||||||
|
|
||||||
// Compile the output path
|
// Compile the output path
|
||||||
outputPath, err := ProcessOutputPath(p.config.OutputPath,
|
outputPath, err := p.config.tpl.Process(p.config.OutputPath, &OutputPathTemplate{
|
||||||
p.config.PackerBuildName, "virtualbox", artifact)
|
ArtifactId: artifact.Id(),
|
||||||
|
BuildName: p.config.PackerBuildName,
|
||||||
|
Provider: "virtualbox",
|
||||||
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, false, err
|
return nil, false, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,20 +37,8 @@ func (p *VMwareBoxPostProcessor) Configure(raws ...interface{}) error {
|
||||||
// Accumulate any errors
|
// Accumulate any errors
|
||||||
errs := common.CheckUnusedConfig(md)
|
errs := common.CheckUnusedConfig(md)
|
||||||
|
|
||||||
templates := map[string]*string{
|
|
||||||
"output": &p.config.OutputPath,
|
|
||||||
}
|
|
||||||
|
|
||||||
for n, ptr := range templates {
|
|
||||||
var err error
|
|
||||||
*ptr, err = p.config.tpl.Process(*ptr, nil)
|
|
||||||
if err != nil {
|
|
||||||
errs = packer.MultiErrorAppend(
|
|
||||||
errs, fmt.Errorf("Error processing %s: %s", n, err))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
validates := map[string]*string{
|
validates := map[string]*string{
|
||||||
|
"output": &p.config.OutputPath,
|
||||||
"vagrantfile_template": &p.config.VagrantfileTemplate,
|
"vagrantfile_template": &p.config.VagrantfileTemplate,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -70,8 +58,11 @@ func (p *VMwareBoxPostProcessor) Configure(raws ...interface{}) error {
|
||||||
|
|
||||||
func (p *VMwareBoxPostProcessor) PostProcess(ui packer.Ui, artifact packer.Artifact) (packer.Artifact, bool, error) {
|
func (p *VMwareBoxPostProcessor) PostProcess(ui packer.Ui, artifact packer.Artifact) (packer.Artifact, bool, error) {
|
||||||
// Compile the output path
|
// Compile the output path
|
||||||
outputPath, err := ProcessOutputPath(p.config.OutputPath,
|
outputPath, err := p.config.tpl.Process(p.config.OutputPath, &OutputPathTemplate{
|
||||||
p.config.PackerBuildName, "vmware", artifact)
|
ArtifactId: artifact.Id(),
|
||||||
|
BuildName: p.config.PackerBuildName,
|
||||||
|
Provider: "vmware",
|
||||||
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, false, err
|
return nil, false, err
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue