diff options
Diffstat (limited to 'rubocop/cop/background_migration/feature_category.rb')
-rw-r--r-- | rubocop/cop/background_migration/feature_category.rb | 29 |
1 files changed, 9 insertions, 20 deletions
diff --git a/rubocop/cop/background_migration/feature_category.rb b/rubocop/cop/background_migration/feature_category.rb index f6b68e03736..7a96271224d 100644 --- a/rubocop/cop/background_migration/feature_category.rb +++ b/rubocop/cop/background_migration/feature_category.rb @@ -2,6 +2,7 @@ require_relative '../../migration_helpers' require_relative '../../code_reuse_helpers' +require_relative '../../feature_categories' module RuboCop module Cop @@ -10,32 +11,20 @@ module RuboCop class FeatureCategory < RuboCop::Cop::Base include MigrationHelpers - FEATURE_CATEGORIES_FILE_PATH = File.expand_path("../../../config/feature_categories.yml", __dir__) - MSG = "'feature_category' should be defined to better assign the ownership for batched migration jobs. " \ "For more details refer: " \ "https://docs.gitlab.com/ee/development/feature_categorization/#batched-background-migrations" - INVALID_FEATURE_CATEGORY_MSG = "'feature_category' is invalid. " \ - "List of valid ones can be found in #{FEATURE_CATEGORIES_FILE_PATH}".freeze + INVALID_FEATURE_CATEGORY_MSG = + "'feature_category' is invalid. " \ + "List of valid ones can be found in #{FeatureCategories::CONFIG_PATH}".freeze RESTRICT_ON_SEND = [:feature_category].freeze - class << self - attr_accessor :available_feature_categories - end - def_node_search :feature_category?, <<~PATTERN (:send nil? :feature_category ...) PATTERN - def on_new_investigation - super - - # Defined only once per rubocop whole run instead of each file. - fetch_available_feature_categories unless self.class.available_feature_categories.present? - end - def on_class(node) return unless in_background_migration?(node) && node.parent_class&.short_name == :BatchedMigrationJob @@ -48,15 +37,15 @@ module RuboCop add_offense(node, message: INVALID_FEATURE_CATEGORY_MSG) unless valid_feature_category?(node) end + def external_dependency_checksum + FeatureCategories.config_checksum + end + private def valid_feature_category?(node) feature_category = node.descendants.first.value - self.class.available_feature_categories.include?(feature_category.to_s) - end - - def fetch_available_feature_categories - self.class.available_feature_categories = YAML.load_file(FEATURE_CATEGORIES_FILE_PATH).to_set + FeatureCategories.available.include?(feature_category.to_s) end end end |