github.com/khulnasoft-lab/defsec@v1.0.5-0.20230827010352-5e9f46893d95/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 }