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

event.rb « cli « internal_events « scripts - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: d98aa8a6bd156a1c12921997370d168a0a35f5a5 (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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# frozen_string_literal: true

module InternalEventsCli
  NEW_EVENT_FIELDS = [
    :description,
    :category,
    :action,
    :label_description,
    :property_description,
    :value_description,
    :value_type,
    :extra_properties,
    :identifiers,
    :product_section,
    :product_stage,
    :product_group,
    :milestone,
    :introduced_by_url,
    :distributions,
    :tiers
  ].freeze

  EVENT_DEFAULTS = {
    product_section: nil,
    product_stage: nil,
    product_group: nil,
    introduced_by_url: 'TODO',
    category: 'InternalEventTracking'
  }.freeze

  Event = Struct.new(*NEW_EVENT_FIELDS, keyword_init: true) do
    def formatted_output
      EVENT_DEFAULTS
        .merge(to_h.compact)
        .slice(*NEW_EVENT_FIELDS)
        .transform_keys(&:to_s)
        .to_yaml(line_width: 150)
    end

    def file_path
      File.join(
        *[
          ('ee' unless distributions.include?('ce')),
          'config',
          'events',
          "#{action}.yml"
        ].compact
      )
    end

    def bulk_assign(key_value_pairs)
      key_value_pairs.each { |key, value| self[key] = value }
    end
  end
end