lib/leftovers.rb in leftovers-0.3.0 vs lib/leftovers.rb in leftovers-0.4.0

- old
+ new

@@ -1,24 +1,40 @@ # frozen_string_literal: true -require_relative './leftovers/core_ext' -require_relative './leftovers/backports' -require_relative './leftovers/collector' -require_relative './leftovers/merged_config' -require_relative './leftovers/reporter' - module Leftovers # rubocop:disable Metrics/ModuleLength - class Error < StandardError; end - class ConfigError < Error; end + class Error < ::StandardError; end module_function + autoload(:AST, "#{__dir__}/leftovers/ast") + autoload(:Backports, "#{__dir__}/leftovers/backports") + autoload(:CLI, "#{__dir__}/leftovers/cli") + autoload(:Collector, "#{__dir__}/leftovers/collector") + autoload(:ConfigValidator, "#{__dir__}/leftovers/config_validator") + autoload(:Config, "#{__dir__}/leftovers/config") + autoload(:DefinitionSet, "#{__dir__}/leftovers/definition_set") + autoload(:Definition, "#{__dir__}/leftovers/definition") + autoload(:ERB, "#{__dir__}/leftovers/erb") + autoload(:FileCollector, "#{__dir__}/leftovers/file_collector") + autoload(:FileList, "#{__dir__}/leftovers/file_list") + autoload(:File, "#{__dir__}/leftovers/file") + autoload(:Haml, "#{__dir__}/leftovers/haml") + autoload(:MatcherBuilders, "#{__dir__}/leftovers/matcher_builders") + autoload(:Matchers, "#{__dir__}/leftovers/matchers") + autoload(:MergedConfig, "#{__dir__}/leftovers/merged_config") + autoload(:Parser, "#{__dir__}/leftovers/parser") + autoload(:ProcessorBuilders, "#{__dir__}/leftovers/processor_builders") + autoload(:RakeTask, "#{__dir__}/leftovers/rake_task") + autoload(:Reporter, "#{__dir__}/leftovers/reporter") + autoload(:DynamicProcessors, "#{__dir__}/leftovers/dynamic_processors") + autoload(:ValueProcessors, "#{__dir__}/leftovers/value_processors") + autoload(:VERSION, "#{__dir__}/leftovers/version") + class << self - attr_accessor :parallel + attr_accessor :parallel, :progress alias_method :parallel?, :parallel - attr_accessor :progress alias_method :progress?, :progress end def stdout @stdout ||= $stdout @@ -27,38 +43,36 @@ def stderr @stderr ||= $stderr end def config - @config ||= Leftovers::MergedConfig.new + @config ||= Leftovers::MergedConfig.new(load_defaults: true) end def collector @collector ||= Leftovers::Collector.new end def reporter @reporter ||= Leftovers::Reporter.new end - def leftovers # rubocop:disable Metrics/MethodLength + def leftovers @leftovers ||= begin collector.collect - collector.definitions.reject do |definition| - definition.skipped? || definition.in_collection? - end + collector.definitions.reject(&:in_collection?) end end - def run(stdout: StringIO.new, stderr: StringIO.new) # rubocop:disable Metrics/MethodLength, Metrics/AbcSize + def run(stdout: StringIO.new, stderr: StringIO.new) # rubocop:disable Metrics/MethodLength, Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity @stdout = stdout @stderr = stderr return 0 if leftovers.empty? only_test = [] none = [] - leftovers.sort.each do |definition| + leftovers.sort_by(&:location_s).each do |definition| if !definition.test? && definition.in_test_collection? only_test << definition else none << definition end @@ -75,11 +89,11 @@ end 1 end - def reset # rubocop:disable Metrics/MethodLength, Metrics/PerceivedComplexity, Metrics/CyclomaticComplexity + def reset # rubocop:disable Metrics/PerceivedComplexity, Metrics/CyclomaticComplexity remove_instance_variable(:@config) if defined?(@config) remove_instance_variable(:@collector) if defined?(@collector) remove_instance_variable(:@reporter) if defined?(@reporter) remove_instance_variable(:@leftovers) if defined?(@leftovers) remove_instance_variable(:@try_require) if defined?(@try_require) @@ -91,10 +105,15 @@ def warn(message) stderr.puts("\e[2K#{message}") end + def error(message) + warn(message) + exit 1 + end + def puts(message) stdout.puts("\e[2K#{message}") end def print(message) @@ -124,25 +143,18 @@ true end rescue LoadError false end + warn message if !@try_require[requirable] && message @try_require[requirable] end def each_or_self(value, &block) case value when nil then nil when Array then value.each(&block) else yield(value) - end - end - - def array_wrap(value) - case value - when nil then [].freeze - when Array then value - else [value] end end end