diff --git a/.circleci/config.yml b/.circleci/config.yml index 9fee099d201..5e0062d9a89 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -246,20 +246,13 @@ jobs: - run: 'bundle install' - run: name: Check Ruby - command: | - bundle exec rubocop --parallel --format junit --out "$PWD/test-results/rubocop-results.xml" --format progress + command: "bin/rake lint:rb" - run: name: Check ERB - command: | - # enable recursive globbing with "**" - shopt -s globstar - - # we're only interested in errors - bundle exec erb-format **/*.html.erb > /dev/null + command: "bin/rake lint:erb" - run: name: Check JavaScript - command: | - npx -y eslint "**/*.js" + command: "bin/rake lint:js" - store_test_results: path: test-results diff --git a/.eslintrc.json b/.eslintrc.json index d49769ebf66..18178945e5b 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,15 +1,5 @@ { "extends": "eslint:recommended", - "ignorePatterns": [ - "*tailwind.config.js", - "**/spec", - "**/vendor", - "**/node_modules", - "sandbox", - "coverage", - "core/doc", - "tmp" - ], "parserOptions": { "ecmaVersion": 2019 }, diff --git a/.gitignore b/.gitignore index 9af8c03be0d..3e4993f90ee 100644 --- a/.gitignore +++ b/.gitignore @@ -32,3 +32,4 @@ yarn.lock package-lock.json .env /admin/app/assets/builds +/test-results diff --git a/.rubocop.yml b/.rubocop.yml index 1d351c842af..4dda7c638e7 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -8,12 +8,7 @@ require: AllCops: Exclude: - - 'vendor/**/*' - - '**/vendor/**/*' - - '*/spec/dummy/**/*' - - 'sandbox/**/*' - - '**/templates/**/*' - - 'tmp/**/*' + - '**/{tmp,vendor,spec/dummy,sandbox,templates,pkg}/**/*' TargetRubyVersion: 3.0 NewCops: disable SuggestExtensions: false diff --git a/Gemfile b/Gemfile index 61ba1d2d3e3..a912dc3f9f5 100644 --- a/Gemfile +++ b/Gemfile @@ -60,7 +60,7 @@ group :admin do end group :lint do - gem 'erb-formatter', require: false + gem 'erb-formatter', '~> 0.7', require: false gem 'rubocop', '~> 1', require: false gem 'rubocop-performance', '~> 1.4', require: false gem 'rubocop-rails', '~> 2.9', require: false diff --git a/Rakefile b/Rakefile index 64473d43214..a7dca64a10b 100644 --- a/Rakefile +++ b/Rakefile @@ -3,3 +3,4 @@ import 'tasks/cleaning.rake' import 'tasks/releasing.rake' import 'tasks/testing.rake' +import 'tasks/linting.rake' diff --git a/tasks/linting.rake b/tasks/linting.rake new file mode 100644 index 00000000000..bfab03c4578 --- /dev/null +++ b/tasks/linting.rake @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +namespace :lint do + task :rb do + ci_options = "-f junit -o '#{__dir__}/../test-results/rubocop-results.xml'" if ENV['CI'] + + sh %{bundle exec rubocop -Pf progress #{ci_options} $(git ls-files -co --exclude-standard | grep -E "\\.rb$" | grep -v "/templates/")} + end + + task :erb do + sh 'bundle exec erb-format $(git ls-files -co --exclude-standard | grep -E "\.html.erb$") > /dev/null' + end + + task :js do + sh 'npx -y eslint $(git ls-files -co --exclude-standard | grep -E "\.js$" | grep -vE "/(vendor|config|spec)/")' + end +end + +task lint: %w[lint:rb lint:erb lint:js]