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
}