Sha256: adf9c9070bdc8897b9647e0f66de76e207e0796bf611385b517b570f0b20e3e9

Contents?: true

Size: 1.41 KB

Versions: 15

Compression:

Stored size: 1.41 KB

Contents

# frozen_string_literal: true
require_relative 'base_command'
require_relative '../../examiner'

module Reek
  module CLI
    module Command
      #
      # A command to collect smells from a set of sources and writes a configuration
      # file that can serve as a todo list.
      #
      class TodoListCommand < BaseCommand
        FILE_NAME = '.todo.reek'.freeze

        def execute
          smells = scan_for_smells
          if smells.empty?
            puts "\n'.todo.reek' not generated because "\
                    'there were no smells found!'
          else
            File.write FILE_NAME, groups_for(smells).to_yaml
            puts "\n'.todo.reek' generated! You can now use "\
                    'this as a starting point for your configuration.'
          end
          options.success_exit_code
        end

        private

        def scan_for_smells
          sources.map do |source|
            Examiner.new(source,
                         filter_by_smells: smell_names,
                         configuration: configuration)
          end.map(&:smells).flatten
        end

        def groups_for(smells)
          @groups ||=
            begin
              todos = smells.group_by(&:smell_class).map do |smell_class, smells_for_class|
                smell_class.todo_configuration_for(smells_for_class)
              end
              todos.inject(&:merge)
            end
        end
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
reek-4.4.2 lib/reek/cli/command/todo_list_command.rb
reek-4.4.1 lib/reek/cli/command/todo_list_command.rb
reek-4.4.0 lib/reek/cli/command/todo_list_command.rb
reek-4.3.0 lib/reek/cli/command/todo_list_command.rb
reek-4.2.5 lib/reek/cli/command/todo_list_command.rb
reek-4.2.4 lib/reek/cli/command/todo_list_command.rb
reek-4.2.3 lib/reek/cli/command/todo_list_command.rb
reek-4.2.2 lib/reek/cli/command/todo_list_command.rb
reek-4.2.1 lib/reek/cli/command/todo_list_command.rb
reek-4.2.0 lib/reek/cli/command/todo_list_command.rb
reek-4.1.1 lib/reek/cli/command/todo_list_command.rb
reek-4.1.0 lib/reek/cli/command/todo_list_command.rb
reek-4.0.5 lib/reek/cli/command/todo_list_command.rb
reek-4.0.4 lib/reek/cli/command/todo_list_command.rb
reek-4.0.3 lib/reek/cli/command/todo_list_command.rb