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  }