Files
trivy/pkg/iac/scanners/terraform/parser/module_retrieval.go
Nikita Pivkin bfdf5cfc30 refactor(misconf): use slog (#7295)
Signed-off-by: nikpivkin <nikita.pivkin@smartforce.io>
2024-08-23 04:27:17 +00:00

36 lines
1.1 KiB
Go

package parser
import (
"context"
"fmt"
"io/fs"
"github.com/aquasecurity/trivy/pkg/iac/scanners/terraform/parser/resolvers"
"github.com/aquasecurity/trivy/pkg/log"
)
type ModuleResolver interface {
Resolve(context.Context, fs.FS, resolvers.Options) (filesystem fs.FS, prefix string, downloadPath string, applies bool, err error)
}
var defaultResolvers = []ModuleResolver{
resolvers.Local,
resolvers.Cache,
resolvers.Remote,
resolvers.Registry,
}
func resolveModule(ctx context.Context, current fs.FS, opt resolvers.Options) (filesystem fs.FS, sourcePrefix, downloadPath string, err error) {
opt.Logger.Debug("Resolving module",
log.String("name", opt.Name), log.String("source", opt.Source))
for _, resolver := range defaultResolvers {
if filesystem, prefix, path, applies, err := resolver.Resolve(ctx, current, opt); err != nil {
return nil, "", "", err
} else if applies {
opt.Logger.Debug("Module resolved", log.FilePath(path))
return filesystem, prefix, path, nil
}
}
return nil, "", "", fmt.Errorf("failed to resolve module '%s' with source: %s", opt.Name, opt.Source)
}