diff options
Diffstat (limited to 'tooling/danger/feature_flag.rb')
-rw-r--r-- | tooling/danger/feature_flag.rb | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/tooling/danger/feature_flag.rb b/tooling/danger/feature_flag.rb new file mode 100644 index 00000000000..2e65831ef9f --- /dev/null +++ b/tooling/danger/feature_flag.rb @@ -0,0 +1,44 @@ +# frozen_string_literal: true + +require 'yaml' + +module Tooling + module Danger + module FeatureFlag + # `change_type` can be: + # - :added + # - :modified + # - :deleted + def feature_flag_files(change_type:) + files = git.public_send("#{change_type}_files") # rubocop:disable GitlabSecurity/PublicSend + files.select { |path| path =~ %r{\A(ee/)?config/feature_flags/} }.map { |path| Found.new(path) } + end + + class Found + attr_reader :path + + def initialize(path) + @path = path + end + + def raw + @raw ||= File.read(path) + end + + def group + @group ||= yaml['group'] + end + + def group_match_mr_label?(mr_group_label) + mr_group_label == group + end + + private + + def yaml + @yaml ||= YAML.safe_load(raw) + end + end + end + end +end |