Skip to content

Commit

Permalink
[Fix rubocop#3904] Build config & sync cop descriptions
Browse files Browse the repository at this point in the history
  • Loading branch information
garettarrowood committed Feb 19, 2019
1 parent 2e52af0 commit 365e242
Show file tree
Hide file tree
Showing 10 changed files with 2,213 additions and 2,021 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Expand Up @@ -123,6 +123,7 @@
### Changes

* [#595](https://github.com/rubocop-hq/rubocop/issues/595): Exclude files ignored by `git`. ([@AlexWayfer][])
* [#3904](https://github.com/rubocop-hq/rubocop/issues/3904): Deduplicate descriptions by copying cop descriptions into config. ([@garettarrowood][])
* [#6429](https://github.com/rubocop-hq/rubocop/issues/6429): Fix autocorrect in Rails/Validation to not wrap hash options with braces in an extra set of braces. ([@bquorning][])
* [#6533](https://github.com/rubocop-hq/rubocop/issues/6533): Improved warning message for unrecognized cop parameters to include Supported parameters. ([@MagedMilad][])

Expand Down
25 changes: 24 additions & 1 deletion Rakefile
Expand Up @@ -33,9 +33,12 @@ RuboCop::RakeTask.new(:internal_investigation).tap do |task|
end

task default: %i[
documentation_syntax_check generate_cops_documentation
build_config
documentation_syntax_check
generate_cops_documentation
spec ascii_spec
internal_investigation
confirm_config
]

require 'yard'
Expand Down Expand Up @@ -119,3 +122,23 @@ task documentation_syntax_check: :yard_for_generate_documentation do
end
abort unless ok
end

desc 'Build config/default.yml'
task :build_config do
sh('bin/build_config')
end

desc 'Confirm config/default.yml is up to date'
task confirm_config: :build_config do
# Do not print diff and yield whether exit code was zero
sh('git diff --quiet config') do |outcome, _|
return if outcome

# Output diff before raising error
sh('GIT_PAGER=cat git diff config')

warn 'The config/default.yml is out of sync. ' \
'Run `rake build_config` and commit the results.'
exit!
end
end
24 changes: 24 additions & 0 deletions bin/build_config
@@ -0,0 +1,24 @@
#!/usr/bin/env ruby
# frozen_string_literal: true

$LOAD_PATH.unshift(File.join(__dir__, '..', 'lib'))

require 'yard'

require 'rubocop'
require 'rubocop/description_extractor'
require 'rubocop/config_formatter'

departments =
"{,#{RuboCop::Cop::Cop.registry.departments.map(&:downcase).join(',')}}"

glob = File.join(__dir__, '..', 'lib', 'rubocop', 'cop', departments, '*.rb')
YARD.parse(Dir[glob], [])

descriptions = RuboCop::DescriptionExtractor.new(YARD::Registry.all).to_h
current_config = YAML.load_file('config/default.yml')

File.write(
'config/default.yml',
RuboCop::ConfigFormatter.new(current_config, descriptions).dump
)

0 comments on commit 365e242

Please sign in to comment.