github.com/devseccon/trivy@v0.47.1-0.20231123133102-bd902a0bd996/pkg/fanal/analyzer/language/ruby/gemspec/gemspec.go (about) 1 package gemspec 2 3 import ( 4 "context" 5 "os" 6 "path/filepath" 7 "regexp" 8 9 "github.com/aquasecurity/go-dep-parser/pkg/ruby/gemspec" 10 "github.com/devseccon/trivy/pkg/fanal/analyzer" 11 "github.com/devseccon/trivy/pkg/fanal/analyzer/language" 12 "github.com/devseccon/trivy/pkg/fanal/types" 13 ) 14 15 func init() { 16 analyzer.RegisterAnalyzer(&gemspecLibraryAnalyzer{}) 17 } 18 19 const version = 1 20 21 var fileRegex = regexp.MustCompile(`.*/specifications/.+\.gemspec`) 22 23 type gemspecLibraryAnalyzer struct{} 24 25 func (a gemspecLibraryAnalyzer) Analyze(_ context.Context, input analyzer.AnalysisInput) (*analyzer.AnalysisResult, error) { 26 return language.AnalyzePackage(types.GemSpec, input.FilePath, input.Content, 27 gemspec.NewParser(), input.Options.FileChecksum) 28 } 29 30 func (a gemspecLibraryAnalyzer) Required(filePath string, _ os.FileInfo) bool { 31 return fileRegex.MatchString(filepath.ToSlash(filePath)) 32 } 33 34 func (a gemspecLibraryAnalyzer) Type() analyzer.Type { 35 return analyzer.TypeGemSpec 36 } 37 38 func (a gemspecLibraryAnalyzer) Version() int { 39 return version 40 }