class RuboCop::RakeTask
Provides a custom rake task.
require 'rubocop/rake_task' ::new
Attributes
fail_on_error[RW]
formatters[RW]
name[RW]
options[RW]
patterns[RW]
requires[RW]
verbose[RW]
Public Class Methods
new(*args) { |*[self, task_args].slice(0, arity)| ... }
click to toggle source
# File lib/rubocop/rake_task.rb, line 20 def initialize(*args, &task_block) setup_ivars(args) desc 'Run RuboCop' unless ::Rake.application.last_description task(name, *args) do |_, task_args| RakeFileUtils.send(:verbose, verbose) do yield(*[self, task_args].slice(0, task_block.arity)) if block_given? run_main_task(verbose) end end setup_subtasks(name, *args, &task_block) end
Public Instance Methods
run_main_task(verbose)
click to toggle source
# File lib/rubocop/rake_task.rb, line 35 def run_main_task(verbose) run_cli(verbose, full_options) end
Private Instance Methods
full_options()
click to toggle source
# File lib/rubocop/rake_task.rb, line 52 def full_options [].tap do |result| result.concat(formatters.map { |f| ['--format', f] }.flatten) result.concat(requires.map { |r| ['--require', r] }.flatten) result.concat(options.flatten) result.concat(patterns) end end
run_cli(verbose, options)
click to toggle source
# File lib/rubocop/rake_task.rb, line 41 def run_cli(verbose, options) # We lazy-load rubocop so that the task doesn't dramatically impact the # load time of your Rakefile. require 'rubocop' cli = CLI.new puts 'Running RuboCop...' if verbose result = cli.run(options) abort('RuboCop failed!') if result != 0 && fail_on_error end
setup_ivars(args)
click to toggle source
# File lib/rubocop/rake_task.rb, line 61 def setup_ivars(args) # More lazy-loading to keep load time down. require 'rubocop/options' @name = args.shift || :rubocop @verbose = true @fail_on_error = true @patterns = [] @requires = [] @options = [] @formatters = [] end
setup_subtasks(name, *args) { |*[self, task_args].slice(0, arity)| ... }
click to toggle source
# File lib/rubocop/rake_task.rb, line 74 def setup_subtasks(name, *args, &task_block) namespace name do desc 'Auto-correct RuboCop offenses' task(:auto_correct, *args) do |_, task_args| yield(*[self, task_args].slice(0, task_block.arity)) if block_given? options = full_options.unshift('--auto-correct') run_cli(verbose, options) end end end