# frozen_string_literal: true require 'digest/md5' MESSAGE = < 10 "\n
\n\n#{list}\n\n
" else list end end changes = helper.changes_by_category # Ignore any files that are known but uncategorized. Prompt for any unknown files changes.delete(:none) categories = changes.keys - [:unknown] # Single codebase MRs are reviewed using a slightly different process, so we # disable the review roulette for such MRs. # CSS Clean up MRs are reviewed using a slightly different process, so we # disable the review roulette for such MRs. if changes.any? && !gitlab.mr_labels.include?('single codebase') && !gitlab.mr_labels.include?('CSS cleanup') # Strip leading and trailing CE/EE markers canonical_branch_name = gitlab .mr_json['source_branch'] .gsub(/^[ce]e-/, '') .gsub(/-[ce]e$/, '') team = begin helper.project_team rescue => err warn("Reviewer roulette failed to load team data: #{err.message}") [] end # Exclude the MR author from the team for selection purposes team.delete_if { |teammate| teammate.username == gitlab.mr_author } project = helper.project_name unknown = changes.fetch(:unknown, []) rows = categories.map { |category| spin_for_category(team, project, category, canonical_branch_name) } markdown(MESSAGE) markdown(CATEGORY_TABLE_HEADER + rows.join("\n")) unless rows.empty? markdown(UNKNOWN_FILES_MESSAGE + build_list(unknown)) unless unknown.empty? end