github.com/devseccon/trivy@v0.47.1-0.20231123133102-bd902a0bd996/pkg/fanal/analyzer/language/nodejs/pnpm/pnpm.go (about) 1 package pnpm 2 3 import ( 4 "context" 5 "os" 6 "path/filepath" 7 8 "golang.org/x/xerrors" 9 10 "github.com/aquasecurity/go-dep-parser/pkg/nodejs/pnpm" 11 "github.com/devseccon/trivy/pkg/fanal/analyzer" 12 "github.com/devseccon/trivy/pkg/fanal/analyzer/language" 13 "github.com/devseccon/trivy/pkg/fanal/types" 14 "github.com/devseccon/trivy/pkg/fanal/utils" 15 ) 16 17 func init() { 18 analyzer.RegisterAnalyzer(&pnpmLibraryAnalyzer{}) 19 } 20 21 const version = 1 22 23 var requiredFiles = []string{types.PnpmLock} 24 25 type pnpmLibraryAnalyzer struct{} 26 27 func (a pnpmLibraryAnalyzer) Analyze(_ context.Context, input analyzer.AnalysisInput) (*analyzer.AnalysisResult, error) { 28 res, err := language.Analyze(types.Pnpm, input.FilePath, input.Content, pnpm.NewParser()) 29 if err != nil { 30 return nil, xerrors.Errorf("unable to parse %s: %w", input.FilePath, err) 31 } 32 return res, nil 33 } 34 35 func (a pnpmLibraryAnalyzer) Required(filePath string, _ os.FileInfo) bool { 36 fileName := filepath.Base(filePath) 37 return utils.StringInSlice(fileName, requiredFiles) 38 } 39 40 func (a pnpmLibraryAnalyzer) Type() analyzer.Type { 41 return analyzer.TypePnpm 42 } 43 44 func (a pnpmLibraryAnalyzer) Version() int { 45 return version 46 }