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  }