2021-09-04 01:27:46 +05:30
|
|
|
# frozen_string_literal: true
|
|
|
|
# rubocop:disable Style/SignalException
|
|
|
|
|
|
|
|
module Tooling
|
|
|
|
module Danger
|
|
|
|
module ProductIntelligence
|
2022-01-26 12:08:38 +05:30
|
|
|
APPROVED_LABEL = 'product intelligence::approved'
|
|
|
|
REVIEW_LABEL = 'product intelligence::review pending'
|
2022-06-21 17:19:12 +05:30
|
|
|
CHANGED_FILES_MESSAGE = <<~MSG
|
2022-08-27 11:52:29 +05:30
|
|
|
For the following files, a review from the [Data team and Product Intelligence team](https://gitlab.com/groups/gitlab-org/analytics-section/product-intelligence/engineers/-/group_members?with_inherited_permissions=exclude) is recommended
|
2022-06-21 17:19:12 +05:30
|
|
|
Please check the ~"product intelligence" [Service Ping guide](https://docs.gitlab.com/ee/development/service_ping/) or the [Snowplow guide](https://docs.gitlab.com/ee/development/snowplow/).
|
|
|
|
|
|
|
|
For MR review guidelines, see the [Service Ping review guidelines](https://docs.gitlab.com/ee/development/service_ping/review_guidelines.html) or the [Snowplow review guidelines](https://docs.gitlab.com/ee/development/snowplow/review_guidelines.html).
|
|
|
|
|
|
|
|
%<changed_files>s
|
|
|
|
|
|
|
|
MSG
|
2022-01-26 12:08:38 +05:30
|
|
|
|
2021-09-04 01:27:46 +05:30
|
|
|
WORKFLOW_LABELS = [
|
2022-01-26 12:08:38 +05:30
|
|
|
APPROVED_LABEL,
|
|
|
|
REVIEW_LABEL
|
2021-09-04 01:27:46 +05:30
|
|
|
].freeze
|
|
|
|
|
2022-06-21 17:19:12 +05:30
|
|
|
def check!
|
|
|
|
# exit if not matching files or if no product intelligence labels
|
|
|
|
product_intelligence_paths_to_review = helper.changes_by_category[:product_intelligence]
|
|
|
|
labels_to_add = missing_labels
|
|
|
|
|
|
|
|
return if product_intelligence_paths_to_review.empty? || skip_review?
|
|
|
|
|
|
|
|
warn format(CHANGED_FILES_MESSAGE, changed_files: helper.markdown_list(product_intelligence_paths_to_review)) unless has_approved_label?
|
|
|
|
|
|
|
|
helper.labels_to_add.concat(labels_to_add) unless labels_to_add.empty?
|
|
|
|
end
|
|
|
|
|
|
|
|
private
|
|
|
|
|
2021-09-04 01:27:46 +05:30
|
|
|
def missing_labels
|
2022-01-26 12:08:38 +05:30
|
|
|
return [] unless helper.ci?
|
2021-09-04 01:27:46 +05:30
|
|
|
|
|
|
|
labels = []
|
|
|
|
labels << 'product intelligence' unless helper.mr_has_labels?('product intelligence')
|
2022-01-26 12:08:38 +05:30
|
|
|
labels << REVIEW_LABEL unless has_workflow_labels?
|
2021-09-04 01:27:46 +05:30
|
|
|
|
|
|
|
labels
|
|
|
|
end
|
|
|
|
|
2022-01-26 12:08:38 +05:30
|
|
|
def has_approved_label?
|
|
|
|
helper.mr_labels.include?(APPROVED_LABEL)
|
|
|
|
end
|
|
|
|
|
|
|
|
def skip_review?
|
|
|
|
helper.mr_has_labels?('growth experiment')
|
|
|
|
end
|
|
|
|
|
2021-12-11 22:18:48 +05:30
|
|
|
def has_workflow_labels?
|
|
|
|
(WORKFLOW_LABELS & helper.mr_labels).any?
|
2021-09-04 01:27:46 +05:30
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|