go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/providers-sdk/v1/upstream/mvd/sort.go (about)

     1  // Copyright (c) Mondoo, Inc.
     2  // SPDX-License-Identifier: BUSL-1.1
     3  
     4  package mvd
     5  
     6  import (
     7  	"strings"
     8  )
     9  
    10  type BySeverity []*Advisory
    11  
    12  func (s BySeverity) Len() int {
    13  	return len(s)
    14  }
    15  
    16  func (s BySeverity) Swap(i, j int) {
    17  	s[i], s[j] = s[j], s[i]
    18  }
    19  
    20  func (s BySeverity) Less(i, j int) bool {
    21  	return s[i].Score < s[j].Score
    22  }
    23  
    24  type ByPkgSeverity []*Package
    25  
    26  func (s ByPkgSeverity) Len() int {
    27  	return len(s)
    28  }
    29  
    30  func (s ByPkgSeverity) Swap(i, j int) {
    31  	s[i], s[j] = s[j], s[i]
    32  }
    33  
    34  // sort first by score, then by reverse name
    35  func (s ByPkgSeverity) Less(i, j int) bool {
    36  	if s[i].Score == s[j].Score {
    37  		return strings.ToLower(s[i].Name) > strings.ToLower(s[j].Name)
    38  	}
    39  
    40  	return s[i].Score < s[j].Score
    41  }
    42  
    43  func FilterByAffected(pkgs []*Package) []*Package {
    44  	filtered := []*Package{}
    45  	for i := range pkgs {
    46  		if pkgs[i].Affected == true {
    47  			filtered = append(filtered, pkgs[i])
    48  		}
    49  	}
    50  	return filtered
    51  }