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

pull/3891/head
nouney 10 years ago
parent d310de8cf5
commit 59dac451a5

@ -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))
}

@ -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,13 +64,30 @@ 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) {
var p Provisioner

Loading…
Cancel
Save