provisioner/file: add "generated" key to allow files created on-the-fly.

This commit is contained in:
nouney 2016-09-15 22:15:56 +02:00
parent d310de8cf5
commit 59dac451a5
2 changed files with 28 additions and 2 deletions

View File

@ -26,6 +26,9 @@ type Config struct {
// Direction
Direction string
// False if the sources have to exist.
Generated bool
ctx interpolate.Context
}
@ -61,7 +64,7 @@ func (p *Provisioner) Prepare(raws ...interface{}) error {
if p.config.Direction == "upload" {
for _, src := range p.config.Sources {
if _, err := os.Stat(src); err != nil {
if _, err := os.Stat(src); p.config.Generated == false && err != nil {
errs = packer.MultiErrorAppend(errs,
fmt.Errorf("Bad source '%s': %s", src, err))
}

View File

@ -45,6 +45,12 @@ func TestProvisionerPrepare_InvalidSource(t *testing.T) {
if err == nil {
t.Fatalf("should require existing file")
}
config["generated"] = false
err = p.Prepare(config)
if err == nil {
t.Fatalf("should required existing file")
}
}
func TestProvisionerPrepare_ValidSource(t *testing.T) {
@ -58,11 +64,28 @@ func TestProvisionerPrepare_ValidSource(t *testing.T) {
config := testConfig()
config["source"] = tf.Name()
err = p.Prepare(config)
if err != nil {
t.Fatalf("should allow valid file: %s", err)
}
config["generated"] = false
err = p.Prepare(config)
if err != nil {
t.Fatalf("should allow valid file: %s", err)
}
}
func TestProvisionerPrepare_GeneratedSource(t *testing.T) {
var p Provisioner
config := testConfig()
config["source"] = "/this/should/not/exist"
config["generated"] = true
err := p.Prepare(config)
if err != nil {
t.Fatalf("should allow non-existing file: %s", err)
}
}
func TestProvisionerPrepare_EmptyDestination(t *testing.T) {