diff options
Diffstat (limited to 'tooling/danger/experiments.rb')
-rw-r--r-- | tooling/danger/experiments.rb | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/tooling/danger/experiments.rb b/tooling/danger/experiments.rb new file mode 100644 index 00000000000..49489419bab --- /dev/null +++ b/tooling/danger/experiments.rb @@ -0,0 +1,34 @@ +# frozen_string_literal: true + +module Tooling + module Danger + module Experiments + EXPERIMENTS_YML_REGEX = %r{\A(ee/)?config/feature_flags/experiment/} + CLASS_FILES_DIR = %w[app/experiments/ ee/app/experiments/].freeze + + def class_files_removed? + (removed_experiments & current_experiments_with_class_files).empty? + end + + def removed_experiments + yml_files_paths = helper.deleted_files + + yml_files_paths.select { |path| path =~ EXPERIMENTS_YML_REGEX }.map { |path| File.basename(path).chomp('.yml') } + end + + private + + def current_experiments_with_class_files + experiment_names = [] + + CLASS_FILES_DIR.each do |directory_path| + experiment_names += Dir.glob("#{directory_path}*.rb").map do |path| + File.basename(path).chomp('_experiment.rb') + end + end + + experiment_names + end + end + end +end |