func ModuleRefs()

in pkg/mptf_config.go [184:214]


func ModuleRefs(tfDir string) ([]*TerraformModuleRef, error) {
	moduleManifest := filepath.Join(tfDir, ".terraform", "modules", "modules.json")
	exist, err := afero.Exists(filesystem.Fs, moduleManifest)
	if err != nil {
		return nil, fmt.Errorf("cannot check `modules.json` at %s: %+v", moduleManifest, err)
	}
	if !exist {
		mod, err := NewTerraformRootModuleRef(tfDir)
		if err != nil {
			return nil, err
		}
		return []*TerraformModuleRef{mod}, nil
	}
	var modules = struct {
		Modules []*TerraformModuleRef `json:"Modules"`
	}{}
	manifestJson, err := afero.ReadFile(filesystem.Fs, moduleManifest)
	if err != nil {
		return nil, fmt.Errorf("cannot read `modules.json` at %s: %+v", moduleManifest, err)
	}
	if err = json.Unmarshal(manifestJson, &modules); err != nil {
		return nil, fmt.Errorf("cannot unmarshal `modules.json` at %s: %+v", moduleManifest, err)
	}
	for i, m := range modules.Modules {
		if err := m.Load(); err != nil {
			return nil, fmt.Errorf("cannot load info for %s: %+v", m.Dir, err)
		}
		modules.Modules[i] = m
	}
	return modules.Modules, nil
}