in mmv1/provider/terraform.go [375:415]
func (t Terraform) CopyFileList(outputFolder string, files map[string]string, generateCode bool) {
for target, source := range files {
targetFile := filepath.Join(outputFolder, target)
targetDir := filepath.Dir(targetFile)
if err := os.MkdirAll(targetDir, os.ModePerm); err != nil {
log.Println(fmt.Errorf("error creating output directory %v: %v", targetDir, err))
}
// If we've modified a file since starting an MM run, it's a reasonable
// assumption that it was this run that modified it.
if info, err := os.Stat(targetFile); !errors.Is(err, os.ErrNotExist) && t.StartTime.Before(info.ModTime()) {
log.Fatalf("%s was already modified during this run at %s", targetFile, info.ModTime().String())
}
sourceByte, err := os.ReadFile(source)
if err != nil {
log.Fatalf("Cannot read source file %s while copying: %s", source, err)
}
var permission fs.FileMode
if strings.HasSuffix(targetDir, "scripts") {
permission = 0755
} else {
permission = 0644
}
err = os.WriteFile(targetFile, sourceByte, permission)
if err != nil {
log.Fatalf("Cannot write target file %s while copying: %s", target, err)
}
// Replace import path based on version (beta/alpha)
if filepath.Ext(target) == ".go" || (filepath.Ext(target) == ".mod" && generateCode) {
t.replaceImportPath(outputFolder, target)
}
if filepath.Ext(target) == ".go" {
t.addHashicorpCopyRightHeader(outputFolder, target)
}
}
}