func()

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
}