github.com/devseccon/trivy@v0.47.1-0.20231123133102-bd902a0bd996/pkg/fanal/analyzer/os/debian/debian.go (about) 1 package debian 2 3 import ( 4 "bufio" 5 "context" 6 "os" 7 8 "golang.org/x/xerrors" 9 10 "github.com/devseccon/trivy/pkg/fanal/analyzer" 11 fos "github.com/devseccon/trivy/pkg/fanal/analyzer/os" 12 "github.com/devseccon/trivy/pkg/fanal/types" 13 "github.com/devseccon/trivy/pkg/fanal/utils" 14 ) 15 16 func init() { 17 analyzer.RegisterAnalyzer(&debianOSAnalyzer{}) 18 } 19 20 const version = 1 21 22 var requiredFiles = []string{"etc/debian_version"} 23 24 type debianOSAnalyzer struct{} 25 26 func (a debianOSAnalyzer) Analyze(_ context.Context, input analyzer.AnalysisInput) (*analyzer.AnalysisResult, error) { 27 scanner := bufio.NewScanner(input.Content) 28 for scanner.Scan() { 29 line := scanner.Text() 30 return &analyzer.AnalysisResult{ 31 OS: types.OS{ 32 Family: types.Debian, 33 Name: line, 34 }, 35 }, nil 36 } 37 return nil, xerrors.Errorf("debian: %w", fos.AnalyzeOSError) 38 } 39 40 func (a debianOSAnalyzer) Required(filePath string, _ os.FileInfo) bool { 41 return utils.StringInSlice(filePath, requiredFiles) 42 } 43 44 func (a debianOSAnalyzer) Type() analyzer.Type { 45 return analyzer.TypeDebian 46 } 47 48 func (a debianOSAnalyzer) Version() int { 49 return version 50 }