github.com/aquasecurity/trivy-iac@v0.8.1-0.20240127024015-3d8e412cf0ab/pkg/scanners/terraform/parser/load_module_metadata.go (about) 1 package parser 2 3 import ( 4 "encoding/json" 5 "io/fs" 6 "path/filepath" 7 ) 8 9 type modulesMetadata struct { 10 Modules []struct { 11 Key string `json:"Key"` 12 Source string `json:"Source"` 13 Version string `json:"Version"` 14 Dir string `json:"Dir"` 15 } `json:"Modules"` 16 } 17 18 func loadModuleMetadata(target fs.FS, fullPath string) (*modulesMetadata, string, error) { 19 metadataPath := filepath.Join(fullPath, ".terraform/modules/modules.json") 20 21 f, err := target.Open(metadataPath) 22 if err != nil { 23 return nil, metadataPath, err 24 } 25 defer func() { _ = f.Close() }() 26 27 var metadata modulesMetadata 28 if err := json.NewDecoder(f).Decode(&metadata); err != nil { 29 return nil, metadataPath, err 30 } 31 32 return &metadata, metadataPath, nil 33 }