diff --git a/pkg/blocks/createfile.go b/pkg/blocks/createfile.go index fbd6b726..aec1a3f0 100755 --- a/pkg/blocks/createfile.go +++ b/pkg/blocks/createfile.go @@ -22,6 +22,7 @@ package blocks import ( "fmt" "os" + "path/filepath" "github.com/facebookincubator/ttpforge/pkg/fileutils" "github.com/facebookincubator/ttpforge/pkg/logging" @@ -94,6 +95,17 @@ func (s *CreateFileStep) Execute(_ TTPExecutionContext) (*ActResult, error) { mode = 0666 } + dir := filepath.Dir(pathToCreate) + exists, err = afero.Exists(fsys, dir) + if err != nil { + return nil, err + } + if !exists { + if err = fsys.MkdirAll(dir, os.ModePerm); err != nil { + return nil, err + } + } + // actually write the file f, err := fsys.OpenFile(pathToCreate, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, os.FileMode(mode)) if err != nil {