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  }