in internal/meta/base_meta.go [714:755]
func (meta *baseMeta) initImportDirs() error {
var importBaseDirs []string
var importModuleDirs []string
modulePaths := []string{}
for i, v := range strings.Split(meta.moduleAddr, ".") {
if i%2 == 1 {
modulePaths = append(modulePaths, v)
}
}
for i := 0; i < meta.parallelism; i++ {
dir, err := os.MkdirTemp("", "aztfexport-")
if err != nil {
return fmt.Errorf("creating import directory: %v", err)
}
// Creating the module hierarchy if module path is specified.
// The hierarchy used here is not necessarily to be the same as is defined. What we need to guarantee here is the module address in TF is as specified.
mdir := dir
for _, moduleName := range modulePaths {
fpath := filepath.Join(mdir, "main.tf")
// #nosec G306
if err := os.WriteFile(fpath, []byte(fmt.Sprintf(`module "%s" {
source = "./%s"
}
`, moduleName, moduleName)), 0644); err != nil {
return fmt.Errorf("creating %s: %v", fpath, err)
}
mdir = filepath.Join(mdir, moduleName)
// #nosec G301
if err := os.Mkdir(mdir, 0750); err != nil {
return fmt.Errorf("creating module dir %s: %v", mdir, err)
}
}
importModuleDirs = append(importModuleDirs, mdir)
importBaseDirs = append(importBaseDirs, dir)
}
meta.importBaseDirs = importBaseDirs
meta.importModuleDirs = importModuleDirs
return nil
}