1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
# frozen_string_literal: true
module Sbom
module PurlType
class Converter
PACKAGE_MANAGER_TO_PURL_TYPE_MAP = {
'bundler' => 'gem',
'yarn' => 'npm',
'npm' => 'npm',
'pnpm' => 'npm',
'maven' => 'maven',
'sbt' => 'maven',
'gradle' => 'maven',
'composer' => 'composer',
'conan' => 'conan',
'go' => 'golang',
'gobinary' => 'golang', # this package manager is generated by trivy
'nuget' => 'nuget',
'pip' => 'pypi',
'pipenv' => 'pypi',
'poetry' => 'pypi',
'setuptools' => 'pypi',
'python-pkg' => 'pypi' # this package manager is generated by trivy
}.with_indifferent_access.freeze
def self.purl_type_for_pkg_manager(package_manager)
matches = package_manager.match(TRIVY_PACKAGE_MANAGER_REGEX)
package_manager = matches['trivy-package-manager-type'] if matches
PACKAGE_MANAGER_TO_PURL_TYPE_MAP[package_manager]
end
TRIVY_PACKAGE_MANAGER_REGEX = /\((?<trivy-package-manager-type>.*?)\)/
private_constant :TRIVY_PACKAGE_MANAGER_REGEX
end
end
end
|