1package pipenv 2 3import ( 4 "os" 5 "path/filepath" 6 7 "github.com/aquasecurity/go-dep-parser/pkg/pipenv" 8 9 "golang.org/x/xerrors" 10 11 "github.com/aquasecurity/fanal/analyzer" 12 "github.com/aquasecurity/fanal/analyzer/library" 13 "github.com/aquasecurity/fanal/utils" 14) 15 16func init() { 17 analyzer.RegisterAnalyzer(&pipenvLibraryAnalyzer{}) 18} 19 20var requiredFiles = []string{"Pipfile.lock"} 21 22type pipenvLibraryAnalyzer struct{} 23 24func (a pipenvLibraryAnalyzer) Analyze(content []byte) (analyzer.AnalyzeReturn, error) { 25 ret, err := library.Analyze(content, pipenv.Parse) 26 if err != nil { 27 return analyzer.AnalyzeReturn{}, xerrors.Errorf("unable to parse Pipfile.lock: %w", err) 28 } 29 return ret, nil 30} 31 32func (a pipenvLibraryAnalyzer) Required(filePath string, _ os.FileInfo) bool { 33 fileName := filepath.Base(filePath) 34 return utils.StringInSlice(fileName, requiredFiles) 35} 36 37func (a pipenvLibraryAnalyzer) Name() string { 38 return library.Pipenv 39} 40