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

customer_success.rb « danger « tooling - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 22911adee06f9a35d3be4ddb7e5a3b32519ad2f0 (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
# frozen_string_literal: true

module Tooling
  module Danger
    module CustomerSuccess
      CHANGED_SCHEMA_MESSAGE = <<~MSG
        Notification to the Customer Success about changes to files with possible breaking downstream processes, add label `Customer Success::Impact Check`.

        /label ~"Customer Success::Impact Check"

        The following files require a review:
      MSG

      FILE_PATH_REGEX = %r{((ee|jh)/)?config/metrics/.+\.yml}
      CATEGORY_CHANGED = /data_category: operational/i

      def build_message
        return unless impacted?

        CHANGED_SCHEMA_MESSAGE + helper.markdown_list(impacted_files)
      end

      private

      def impacted?
        !helper.has_scoped_label_with_scope?('Customer Success') && impacted_files.any?
      end

      def impacted_files
        @impacted_files ||=
          metric_files.select do |file|
            helper.changed_lines(file).any? { |change| metric_category_changed?(change) }
          end.compact
      end

      def metric_files
        helper.modified_files.grep(FILE_PATH_REGEX)
      end

      def metric_category_changed?(change)
        change =~ CATEGORY_CHANGED
      end
    end
  end
end