class RuboCop::Cop::Generator::ConfigurationInjector

A class that injects a require directive into the root RuboCop file. It looks for other directives that require files in the same (cop) namespace and injects the provided one in alpha

Constants

TEMPLATE

Attributes

badge[R]
configuration_file_path[R]
output[R]
version_added[R]

Public Class Methods

new(configuration_file_path:, badge:, version_added:) click to toggle source
# File lib/rubocop/cop/generator/configuration_injector.rb, line 18
def initialize(configuration_file_path:, badge:, version_added:)
  @configuration_file_path = configuration_file_path
  @badge = badge
  @version_added = version_added
  @output = output
end

Public Instance Methods

inject() { || ... } click to toggle source
# File lib/rubocop/cop/generator/configuration_injector.rb, line 25
def inject
  configuration_entries.insert(find_target_line,
                               new_configuration_entry)

  File.write(configuration_file_path, configuration_entries.join)

  yield if block_given?
end

Private Instance Methods

configuration_entries() click to toggle source
# File lib/rubocop/cop/generator/configuration_injector.rb, line 38
def configuration_entries
  @configuration_entries ||= File.readlines(configuration_file_path)
end
cop_name_line?(yaml) click to toggle source
# File lib/rubocop/cop/generator/configuration_injector.rb, line 55
def cop_name_line?(yaml)
  yaml !~ /^[\s#]/
end
find_target_line() click to toggle source
# File lib/rubocop/cop/generator/configuration_injector.rb, line 46
def find_target_line
  configuration_entries.find.with_index do |line, index|
    next unless cop_name_line?(line)

    return index if badge.to_s < line
  end
  configuration_entries.size - 1
end
new_configuration_entry() click to toggle source
# File lib/rubocop/cop/generator/configuration_injector.rb, line 42
def new_configuration_entry
  format(TEMPLATE, badge: badge, version_added: version_added)
end