github.com/devseccon/trivy@v0.47.1-0.20231123133102-bd902a0bd996/pkg/fanal/analyzer/language/ruby/bundler/bundler.go (about) 1 package bundler 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/ruby/bundler" 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 ) 15 16 func init() { 17 analyzer.RegisterAnalyzer(&bundlerLibraryAnalyzer{}) 18 } 19 20 const version = 1 21 22 type bundlerLibraryAnalyzer struct{} 23 24 func (a bundlerLibraryAnalyzer) Analyze(_ context.Context, input analyzer.AnalysisInput) (*analyzer.AnalysisResult, error) { 25 res, err := language.Analyze(types.Bundler, input.FilePath, input.Content, bundler.NewParser()) 26 if err != nil { 27 return nil, xerrors.Errorf("unable to parse Gemfile.lock: %w", err) 28 } 29 return res, nil 30 } 31 32 func (a bundlerLibraryAnalyzer) Required(filePath string, _ os.FileInfo) bool { 33 fileName := filepath.Base(filePath) 34 return fileName == types.GemfileLock 35 } 36 37 func (a bundlerLibraryAnalyzer) Type() analyzer.Type { 38 return analyzer.TypeBundler 39 } 40 41 func (a bundlerLibraryAnalyzer) Version() int { 42 return version 43 }