summaryrefslogtreecommitdiff
path: root/lib/license/management/report.rb
blob: a3dbf2073367b888569d9682cabf299438c0b800 (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
38
39
40
41
# frozen_string_literal: true

require 'license/management/report/base'
require 'license/management/report/v1'
require 'license/management/report/v1_1'
require 'license/management/report/v2'
require 'license/management/report/v2_1'

module License
  module Management
    module Report
      DEFAULT_VERSION = '2.0'
      VERSIONS = {
        nil => V1,
        '' => V1,
        '1' => V1,
        '1.0' => V1,
        '1.1' => V1_1,
        '2' => V2_1,
        '2.0' => V2,
        '2.1' => V2_1
      }.freeze

      # This method overrides the method defined in `LicenseFinder::JsonReport` to
      # allow us to generate a custom json report.
      def to_s
        JSON.pretty_generate(version_for(report_version).to_h)
      end

      private

      def report_version
        ENV.fetch('LM_REPORT_VERSION', DEFAULT_VERSION)
      end

      def version_for(version)
        VERSIONS.fetch(version.to_s).new(dependencies)
      end
    end
  end
end