File: customer_success.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 (45 lines) | stat: -rw-r--r-- 1,190 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
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