Skip to content
Snippets Groups Projects

Reviewer roulette via Danger

Merged Nick Thomas requested to merge 56087-danger-roulette into master
All threads resolved!
Compare and Show latest version
2 files
+ 44
19
Compare changes
  • Side-by-side
  • Inline
Files
2
+ 23
10
@@ -3,17 +3,17 @@
require 'net/http'
require 'yaml'
Teammate = Struct.new(:name, :projects, :gitlab, keyword_init: true) do
def self.build(hash)
new(name: hash['name'], projects: hash['projects'], gitlab: hash['gitlab'])
end
class Teammate
attr_reader :name, :projects, :gitlab
def initialize(*args, &blk)
super
def initialize(options = {})
@name = options['name']
@projects = options['projects']
@gitlab = options['gitlab']
end
def in_project?(name)
projects.has_key?(name)
projects&.has_key?(name)
end
# Traintainers also count as reviewers
@@ -74,10 +74,23 @@ def ee?
ENV['CI_PROJECT_NAME'] == 'gitlab-ee' || File.exist?('../../CHANGELOG-EE.md')
end
def project_name
ee? ? 'gitlab-ee' : 'gitlab-ce'
end
def team
Psych.safe_load(Net::HTTP.get(TEAM_DATA_URL), [Date]).map { |hash| Teammate.new(hash) }
end
def project_team
team.select { |member| member.in_project?(project_name) }
end
# @return [Hash<String,Array<String>>]
def changes_by_category
all_changed_files.inject(Hash.new { |h, k| h[k] = [] }) do |hsh, file|
hsh[category_for_file(file)] << file
all_changed_files.inject(Hash.new { |h, k| h[k] = [] }) do |hash, file|
hash[category_for_file(file)] << file
hash
end
end
@@ -97,7 +110,7 @@ def category_for_file(file)
%r{\A/(jest\.config\.js|package\.json|yarn\.lock)\z} => :frontend,
%r{\A(/ee)?/app/(controllers|finders|graphql|helpers|mailers|models|policies|presenters|serializers|services|uploaders|validators|workers)/} => :backend,
%r{\A(/ee)?/(bin|config|generator_templates|lib|rubocop|scripts|spec)/} => :backend,
%r{\A(/ee)?/(bin|config|danger|generator_templates|lib|rubocop|scripts|spec)/} => :backend,
%r{\A(/ee)?/vendor/(cert_manager|Dockerfile|gitignore|ingress|jupyter|project_templates|prometheus|runner)/} => :backend,
%r{\A(/ee)?/vendor/(languages\.yml|licenses\.csv)\z/} => :backend,
%r{\A/(Gemfile|Gemfile.lock)\z} => :backend,
Loading