tfmodules

package
v1.7.0-alpha Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 29, 2026 License: Apache-2.0 Imports: 21 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DetectModuleSourceType

func DetectModuleSourceType(source string) (sourceType, registryScope string)

func GetProviderFromResourceType

func GetProviderFromResourceType(resourceType string) (string, error)

GetProviderFromResourceType extracts the provider name from a Terraform resource type. For example: "aws_s3_bucket" → "aws", "azurerm_network_interface" → "azurerm"

func IsUnresolved added in v1.7.2

func IsUnresolved(err error) bool

func LoadTFFilesFromDir added in v1.9.0

func LoadTFFilesFromDir(dir string) (model.FileMetadatas, error)

LoadTFFilesFromDir returns FileMetadata for top-level .tf files in dir only (Terraform module = one directory).

func LooksLikeLocalModuleSource

func LooksLikeLocalModuleSource(source string) bool

LooksLikeLocalModuleSource uses heuristics to determine if the resolved source string is likely local

func ParseAllModuleVariables

func ParseAllModuleVariables(
	ctx context.Context, modules map[string]ParsedModule, rootDir string, resolver RemoteResolver,
) ([]ParsedModule, []UnresolvedModule)

ParseAllModuleVariables resolves modules to disk and fills AttributesData. With a non-nil resolver, failed remote resolves are returned as UnresolvedModule.

func ParseTerraformModules

func ParseTerraformModules(ctx context.Context, files model.FileMetadatas, numWorkers int) (map[string]ParsedModule, error)

ParseTerraformModules parses HCL content and extracts module source/version. numWorkers: 0 means auto-detect (GOMAXPROCS).

func ParseTerraformModulesFromFiles added in v1.9.0

func ParseTerraformModulesFromFiles(
	ctx context.Context, files model.FileMetadatas, allowedFiles map[string]bool, numWorkers ...int,
) (map[string]ParsedModule, error)

ParseTerraformModulesFromFiles resolves locals/variables from all files, but extracts module blocks only from allowed files. numWorkers: 0 means auto-detect.

Types

type ListModuleEntry added in v1.7.2

type ListModuleEntry struct {
	Name          string `json:"name"`
	Source        string `json:"source"`
	Version       string `json:"version,omitempty"`
	SourceType    string `json:"source_type"`
	RegistryScope string `json:"registry_scope,omitempty"`
	FileName      string `json:"file_name"`
	DefLine       int    `json:"def_line"`
}

ListModuleEntry is the JSON shape emitted by `datadog-iac-scanner list-modules`. Field names are stable integration contracts for hosted scan orchestration.

func ListModuleEntries added in v1.7.2

func ListModuleEntries(modules map[string]ParsedModule, includeLocal bool) []ListModuleEntry

ListModuleEntries converts parsed modules to list-modules JSON rows.

type ModuleAttributesInfo

type ModuleAttributesInfo struct {
	Resources []string          `json:"resources"`
	Inputs    map[string]string `json:"inputs"`
}

type ModuleParseResult

type ModuleParseResult struct {
	Module           ParsedModule
	Error            error
	Unresolved       bool
	UnresolvedReason string
}

type ParsedModule

type ParsedModule struct {
	Name           string
	AbsSource      string
	Source         string
	Version        string
	IsLocal        bool
	SourceType     string // local, git, registry, etc.
	RegistryScope  string // public, private, or "" (non-registry)
	AttributesData map[string]ModuleAttributesInfo
	FileName       string
	DefLine        int
}

type RemoteResolver added in v1.8.0

type RemoteResolver interface {
	Resolve(ctx context.Context, mod *ParsedModule) (localPath string, err error)
}

type UnresolvedError added in v1.7.2

type UnresolvedError struct {
	Reason string
}

func (*UnresolvedError) Error added in v1.7.2

func (e *UnresolvedError) Error() string

type UnresolvedModule

type UnresolvedModule struct {
	Module ParsedModule
	Reason string
}

Directories

Path Synopsis
* Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
* Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL