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  }