# 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