Sha256: 455f495ee7467b10cc361412e31e1e5d7f7778b678a82c7717a7c4d1469ecb94
Contents?: true
Size: 2 KB
Versions: 3
Compression:
Stored size: 2 KB
Contents
# frozen_string_literal: true require_relative 'base_command' require_relative '../../examiner' require_relative '../../configuration/app_configuration' 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 HEADER = "# Auto generated by Reeks --todo flag\n" EXISTING_FILE_MESSAGE = "\nExisting '#{DEFAULT_CONFIGURATION_FILE_NAME}' detected - aborting.\n".freeze NO_SMELLS_FOUND_MESSAGE = "\nNo smells found - nothing to do, exiting.\n" def execute if smells.empty? puts NO_SMELLS_FOUND_MESSAGE elsif File.exist?(DEFAULT_CONFIGURATION_FILE_NAME) puts EXISTING_FILE_MESSAGE else write_to_file puts "\n'#{DEFAULT_CONFIGURATION_FILE_NAME}' generated! " \ 'You can now use this as a starting point.' end options.success_exit_code end private def smells @smells ||= sources.map do |source| Examiner.new(source, filter_by_smells: smell_names) end.map(&:smells).flatten end def groups @groups ||= begin todos = DetectorRepository.smell_types.map do |smell_class| smells_for_class = grouped_smells[smell_class.smell_type] or next smell_class.todo_configuration_for(smells_for_class) end todos.compact.inject(&:merge) end end def grouped_smells @grouped_smells ||= smells.group_by(&:smell_type) end # :reek:FeatureEnvy def write_to_file File.open(DEFAULT_CONFIGURATION_FILE_NAME, 'w') do |configuration_file| configuration_file.write HEADER configuration_file.write({ DETECTORS_KEY => groups }.to_yaml) end end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
reek-6.4.0 | lib/reek/cli/command/todo_list_command.rb |
reek-6.3.0 | lib/reek/cli/command/todo_list_command.rb |
reek-6.2.0 | lib/reek/cli/command/todo_list_command.rb |