Sha256: c26839cddcaaca7ed3d9d37e2f7dbdb464a97b5a3415d140d3718e3f22890c0d

Contents?: true

Size: 1.67 KB

Versions: 5

Compression:

Stored size: 1.67 KB

Contents

# frozen_string_literal: true

module RuboCop
  module Cop
    class Generator
      # 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
      class ConfigurationInjector
        TEMPLATE = <<-YAML.strip_indent
                     %<badge>s:
                       Description: 'TODO: Write a description of the cop.'
                       Enabled: true
                       VersionAdded: '%<version_added>s'

        YAML

        def initialize(configuration_file_path:, badge:, version_added:)
          @configuration_file_path = configuration_file_path
          @badge = badge
          @version_added = version_added
          @output = output
        end

        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

        attr_reader :configuration_file_path, :badge, :version_added, :output

        def configuration_entries
          @configuration_entries ||= File.readlines(configuration_file_path)
        end

        def new_configuration_entry
          format(TEMPLATE, badge: badge, version_added: version_added)
        end

        def find_target_line
          configuration_entries.find.with_index do |line, index|
            next if comment?(line)

            break index if badge.to_s < line
          end
        end

        def comment?(yaml)
          yaml =~ /^[\s#]/
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
rubocop-0.63.1 lib/rubocop/cop/generator/configuration_injector.rb
rubocop-0.63.0 lib/rubocop/cop/generator/configuration_injector.rb
rubocop-0.62.0 lib/rubocop/cop/generator/configuration_injector.rb
rubocop-0.61.1 lib/rubocop/cop/generator/configuration_injector.rb
rubocop-0.61.0 lib/rubocop/cop/generator/configuration_injector.rb