File: converter.rb

package info (click to toggle)
gitlab 17.6.5-19
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 629,368 kB
  • sloc: ruby: 1,915,304; javascript: 557,307; sql: 60,639; xml: 6,509; sh: 4,567; makefile: 1,239; python: 406
file content (41 lines) | stat: -rw-r--r-- 1,342 bytes parent folder | download
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
39
40
41
# 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
        'conda' => 'conda',
        'conda-pkg' => 'conda', # this package manager is generated by trivy,
        'conda-environment' => 'conda' # 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