* --- updated-dependencies: - dependency-name: github.com/aquasecurity/trivy dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> * chore(deps): go mod tidy * chore(deps): follow type name change --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Shunichi Shinohara <shino.shun@gmail.com>
52 lines
1.3 KiB
Go
52 lines
1.3 KiB
Go
package scanner
|
|
|
|
import (
|
|
ftypes "github.com/aquasecurity/trivy/pkg/fanal/types"
|
|
"github.com/aquasecurity/trivy/pkg/purl"
|
|
"github.com/aquasecurity/trivy/pkg/types"
|
|
"github.com/samber/lo"
|
|
|
|
"github.com/future-architect/vuls/logging"
|
|
"github.com/future-architect/vuls/models"
|
|
)
|
|
|
|
func convertLibWithScanner(apps []ftypes.Application) ([]models.LibraryScanner, error) {
|
|
for i := range apps {
|
|
apps[i].Packages = lo.Filter(apps[i].Packages, func(lib ftypes.Package, index int) bool {
|
|
return !lib.Dev
|
|
})
|
|
}
|
|
|
|
scanners := make([]models.LibraryScanner, 0, len(apps))
|
|
for _, app := range apps {
|
|
libs := make([]models.Library, 0, len(app.Packages))
|
|
for _, lib := range app.Packages {
|
|
libs = append(libs, models.Library{
|
|
Name: lib.Name,
|
|
Version: lib.Version,
|
|
PURL: newPURL(app.Type, types.Metadata{}, lib),
|
|
FilePath: lib.FilePath,
|
|
Digest: string(lib.Digest),
|
|
})
|
|
}
|
|
scanners = append(scanners, models.LibraryScanner{
|
|
Type: app.Type,
|
|
LockfilePath: app.FilePath,
|
|
Libs: libs,
|
|
})
|
|
}
|
|
return scanners, nil
|
|
}
|
|
|
|
func newPURL(pkgType ftypes.TargetType, metadata types.Metadata, pkg ftypes.Package) string {
|
|
p, err := purl.New(pkgType, metadata, pkg)
|
|
if err != nil {
|
|
logging.Log.Errorf("Failed to create PackageURL: %+v", err)
|
|
return ""
|
|
}
|
|
if p == nil {
|
|
return ""
|
|
}
|
|
return p.Unwrap().ToString()
|
|
}
|