# frozen_string_literal: true require 'digest/md5' MESSAGE = < err warn("Reviewer roulette failed to load team data: #{err.message}") [] end project = helper.project_name unknown = changes.fetch(:unknown, []) spin_per_category = categories.each_with_object({}) do |category, memo| memo[category] = spin_for_category(team, project, category, canonical_branch_name) end rows = spin_per_category.map do |category, spin| reviewer = spin.reviewer maintainer = spin.maintainer case category when :test if reviewer.nil? # Fetch an already picked backend reviewer, or pick one otherwise reviewer = spin_per_category[:backend]&.reviewer || spin_for_category(team, project, :backend, canonical_branch_name).reviewer end when :engineering_productivity if maintainer.nil? # Fetch an already picked backend maintainer, or pick one otherwise maintainer = spin_per_category[:backend]&.maintainer || spin_for_category(team, project, :backend, canonical_branch_name).maintainer end end markdown_row_for_category(category, reviewer, maintainer) end markdown(MESSAGE) markdown(CATEGORY_TABLE_HEADER + rows.join("\n")) unless rows.empty? markdown(UNKNOWN_FILES_MESSAGE + helper.markdown_list(unknown)) unless unknown.empty? end