1package composer
2
3import (
4	"os"
5	"path/filepath"
6
7	"github.com/aquasecurity/go-dep-parser/pkg/composer"
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(&composerLibraryAnalyzer{})
18}
19
20var (
21	requiredFiles = []string{"composer.lock"}
22)
23
24type composerLibraryAnalyzer struct{}
25
26func (a composerLibraryAnalyzer) Analyze(content []byte) (analyzer.AnalyzeReturn, error) {
27	ret, err := library.Analyze(content, composer.Parse)
28	if err != nil {
29		return analyzer.AnalyzeReturn{}, xerrors.Errorf("error with composer.lock: %w", err)
30	}
31	return ret, nil
32}
33
34func (a composerLibraryAnalyzer) Required(filePath string, _ os.FileInfo) bool {
35	fileName := filepath.Base(filePath)
36	return utils.StringInSlice(fileName, requiredFiles)
37}
38
39func (a composerLibraryAnalyzer) Name() string {
40	return library.Composer
41}
42