Rakefile in billomat-0.4.1 vs Rakefile in billomat-1.0.0
- old
+ new
@@ -1,77 +1,23 @@
# frozen_string_literal: true
require 'bundler/gem_tasks'
require 'rspec/core/rake_task'
-require 'rails/code_statistics'
-require 'pp'
+require 'countless/rake_tasks'
RSpec::Core::RakeTask.new(:spec)
task default: :spec
-# Load some railties tasks
-load 'rails/tasks/statistics.rake'
-load 'rails/tasks/annotations.rake'
-
-# Clear the default statistics directory constant
-#
-# rubocop:disable Style/MutableConstant because we define it
-Object.send(:remove_const, :STATS_DIRECTORIES)
-::STATS_DIRECTORIES = []
-# rubocop:enable Style/MutableConstant
-
-# Monkey patch the Rails +CodeStatistics+ class to support configurable
-# patterns per path. This is reuqired to support top-level only file matches.
-class CodeStatistics
- DEFAULT_PATTERN = /^(?!\.).*?\.(rb|js|coffee|rake)$/.freeze
-
- # Pass the possible +pattern+ argument down to the
- # +calculate_directory_statistics+ method call.
- def calculate_statistics
- Hash[@pairs.map do |pair|
- [pair.first, calculate_directory_statistics(*pair[1..-1])]
- end]
- end
-
- # Match the pattern against the individual file name and the relative file
- # path. This allows top-level only matches.
- def calculate_directory_statistics(directory, pattern = DEFAULT_PATTERN)
- stats = CodeStatisticsCalculator.new
-
- Dir.foreach(directory) do |file_name|
- path = "#{directory}/#{file_name}"
-
- if File.directory?(path) && (/^\./ !~ file_name)
- stats.add(calculate_directory_statistics(path, pattern))
- elsif file_name =~ pattern || path =~ pattern
- stats.add_by_file_path(path)
- end
- end
-
- stats
- end
-end
-
# Configure all code statistics directories
-vendors = [
- [:unshift, 'Top-levels', 'lib', %r{lib(/billomat)?/[^/]+\.rb$}],
- [:unshift, 'Top-levels specs', 'spec', %r{spec/[^/]+_spec\.rb$}],
-
- [:unshift, 'Actions', 'lib/billomat/actions'],
-
- [:unshift, 'Models matchers', 'lib/billomat/models'],
- [:unshift, 'Models matchers specs', 'spec/models']
-].reverse
-
-vendors.each do |method, type, dir, pattern|
- ::STATS_DIRECTORIES.send(method, [type, dir, pattern].compact)
- ::CodeStatistics::TEST_TYPES << type if type.include? 'specs'
-end
-
-# Setup annotations
-ENV['SOURCE_ANNOTATION_DIRECTORIES'] = 'spec,doc'
-
-desc 'Enumerate all annotations'
-task :notes do
- SourceAnnotationExtractor.enumerate '@?OPTIMIZE|@?FIXME|@?TODO', tag: true
+Countless.configure do |config|
+ config.stats_base_directories = [
+ { name: 'Top-levels', dir: 'lib',
+ pattern: %r{/lib(/billomat)?/[^/]+\.rb$} },
+ { name: 'Top-levels specs', test: true, dir: 'spec',
+ pattern: %r{/spec(/billomat)?/[^/]+_spec\.rb$} },
+ { name: 'Actions', pattern: 'lib/billomat/actions/**/*.rb' },
+ { name: 'Models matchers', pattern: 'lib/billomat/models/**/*.rb' },
+ { name: 'Models matchers specs', test: true,
+ pattern: 'spec/models/**/*_spec.rb' }
+ ]
end