Welcome to mirror list, hosted at ThFree Co, Russian Federation.

converter.rb « purl_type « sbom « lib - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: bfcfb4141804acd26d032b35ad7de9c931d1bc30 (plain)
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
# 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',
        '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