active_model_serializers/lib/tasks/rubocop.rake
2017-05-15 10:12:34 -05:00

55 lines
1.6 KiB
Ruby

# frozen_string_literal: true
begin
require "rubocop"
require "rubocop/rake_task"
rescue LoadError # rubocop:disable Lint/HandleExceptions
else
require "rbconfig"
# https://github.com/bundler/bundler/blob/1b3eb2465a/lib/bundler/constants.rb#L2
windows_platforms = /(msdos|mswin|djgpp|mingw)/
if RbConfig::CONFIG["host_os"] =~ windows_platforms
desc "No-op rubocop on Windows-- unsupported platform"
task :rubocop do
puts "Skipping rubocop on Windows"
end
elsif defined?(::Rubinius)
desc "No-op rubocop to avoid rbx segfault"
task :rubocop do
puts "Skipping rubocop on rbx due to segfault"
puts "https://github.com/rubinius/rubinius/issues/3499"
end
else
Rake::Task[:rubocop].clear if Rake::Task.task_defined?(:rubocop)
patterns = [
"Gemfile",
"Rakefile",
"lib/**/*.{rb,rake}",
"config/**/*.rb",
"app/**/*.rb",
"test/**/*.rb"
]
desc "Execute rubocop"
RuboCop::RakeTask.new(:rubocop) do |task|
task.options = ["--rails", "--display-cop-names", "--display-style-guide"]
task.formatters = ["progress"]
task.patterns = patterns
task.fail_on_error = true
end
namespace :rubocop do
desc "Auto-gen rubocop config"
task :auto_gen_config do
options = ["--auto-gen-config"].concat patterns
require "benchmark"
result = 0
cli = RuboCop::CLI.new
time = Benchmark.realtime do
result = cli.run(options)
end
puts "Finished in #{time} seconds" if cli.options[:debug]
abort("RuboCop failed!") if result.nonzero?
end
end
end
end