rubocop-katalyst 1.0.4 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.erb-lint.yml +27 -0
- data/CHANGELOG.md +10 -1
- data/README.md +18 -1
- data/config/rubocop-rspec.yml +15 -0
- data/lib/rubocop/katalyst/erb_lint_task.rb +65 -0
- data/lib/rubocop/katalyst/prettier_task.rb +80 -0
- data/lib/rubocop/katalyst/rake_task.rb +22 -0
- data/lib/rubocop/katalyst/version.rb +1 -1
- data/lib/tasks/erb_lint.rake +38 -0
- data/package.json +10 -0
- metadata +9 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 878afbb9d22a62f802f3e4379fd9a715be12dccaf4e0b3349142c67279c597a2
|
4
|
+
data.tar.gz: 5f280bcdb95e544029a7bebb381d41988ac939beca5b74c12bf4f4383be7ec32
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 420954d6e572772b3045b2c0ffdd4515e69cf3afb4e60956cc036cd1375cf4ba6c42ed03b70bd4c6f2ce4326b21bbe23dbc546e87472d44baad9bbe54b68310b
|
7
|
+
data.tar.gz: 0102a86810a38372d0d28b2fcc22c377da73349ec18f2e7545bb3d86abab2ca10dd8d484ef635cfbbd597dc8f5d57a8efd4cf3b62b25faa722747c39776a5e84
|
data/.erb-lint.yml
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
---
|
2
|
+
EnableDefaultLinters: true
|
3
|
+
exclude:
|
4
|
+
- "node_modules/**/*"
|
5
|
+
- "vendor/**/*"
|
6
|
+
linters:
|
7
|
+
ErbSafety:
|
8
|
+
enabled: true
|
9
|
+
Rubocop:
|
10
|
+
enabled: true
|
11
|
+
rubocop_config:
|
12
|
+
inherit_from:
|
13
|
+
- .rubocop.yml
|
14
|
+
Layout/InitialIndentation:
|
15
|
+
Enabled: false
|
16
|
+
Layout/LineLength:
|
17
|
+
Enabled: false
|
18
|
+
Layout/TrailingEmptyLines:
|
19
|
+
Enabled: false
|
20
|
+
Lint/UselessAssignment:
|
21
|
+
Enabled: false
|
22
|
+
Naming/FileName:
|
23
|
+
Enabled: false
|
24
|
+
Rails/OutputSafety:
|
25
|
+
Enabled: false
|
26
|
+
Style/FrozenStringLiteralComment:
|
27
|
+
Enabled: false
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
## [1.1.0] - 2023-05-19
|
2
|
+
|
3
|
+
- Add erb_lint rake task and config (optional dependency)
|
4
|
+
- Add prettier rake task and config (assumes yarn)
|
5
|
+
|
6
|
+
## [1.0.5] - 2023-03-16
|
7
|
+
|
8
|
+
- Add extra prefixes for spec contexts
|
9
|
+
- Allow repeated examples in policy specs
|
10
|
+
|
1
11
|
## [1.0.2] - 2022-09-02
|
2
12
|
|
3
13
|
- ignore multiple expectations in features and system specs
|
@@ -22,4 +32,3 @@
|
|
22
32
|
- Initial release
|
23
33
|
- Disable new cops by default
|
24
34
|
- Enforce styles within the project
|
25
|
-
|
data/README.md
CHANGED
@@ -9,7 +9,8 @@ Cops are broken down by department; a file corresponding to each department can
|
|
9
9
|
Add this line to your application's Gemfile:
|
10
10
|
|
11
11
|
```ruby
|
12
|
-
gem
|
12
|
+
gem "rubocop-katalyst", require: false
|
13
|
+
gem "erb_lint", require: false # optional dependency
|
13
14
|
```
|
14
15
|
|
15
16
|
And then execute:
|
@@ -29,6 +30,22 @@ require:
|
|
29
30
|
- rubocop-katalyst
|
30
31
|
```
|
31
32
|
|
33
|
+
You can integrate this gem with Rake by adding the following to your `Rakefile`:
|
34
|
+
|
35
|
+
```ruby
|
36
|
+
require "rubocop/katalyst/rake_task"
|
37
|
+
RuboCop::Katalyst::RakeTask.new
|
38
|
+
|
39
|
+
require "rubocop/katalyst/erb_lint_task"
|
40
|
+
RuboCop::Katalyst::ErbLintTask.new
|
41
|
+
|
42
|
+
require "rubocop/katalyst/prettier_task"
|
43
|
+
RuboCop::Katalyst::PrettierTask.new
|
44
|
+
|
45
|
+
desc "Run lint before running RSpec"
|
46
|
+
task spec: :lint
|
47
|
+
```
|
48
|
+
|
32
49
|
That's it. You're all set to use Katalyst's base code styles. Override what you need in your `.rubocop.yml` file as the project demands.
|
33
50
|
|
34
51
|
The gem is designed for use with Rails, so if you're using this in a non-Rails environment, you can disable the Rails cops in your configuration file with:
|
data/config/rubocop-rspec.yml
CHANGED
@@ -1,6 +1,17 @@
|
|
1
1
|
# RuboCop RSpec extension configuration overrides
|
2
2
|
# https://github.com/rubocop/rubocop-rspec
|
3
3
|
|
4
|
+
RSpec/ContextWording:
|
5
|
+
Description: >-
|
6
|
+
Checks that context docstring starts with an allowed prefix.
|
7
|
+
Prefixes:
|
8
|
+
- after
|
9
|
+
- as
|
10
|
+
- "on"
|
11
|
+
- when
|
12
|
+
- with
|
13
|
+
- without
|
14
|
+
|
4
15
|
RSpec/ExampleLength:
|
5
16
|
Exclude:
|
6
17
|
- spec/features/**/*
|
@@ -10,3 +21,7 @@ RSpec/MultipleExpectations:
|
|
10
21
|
Exclude:
|
11
22
|
- spec/features/**/*
|
12
23
|
- spec/system/**/*
|
24
|
+
|
25
|
+
RSpec/RepeatedExample:
|
26
|
+
Exclude:
|
27
|
+
- spec/policies/**/*
|
@@ -0,0 +1,65 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "rake"
|
4
|
+
require "rake/tasklib"
|
5
|
+
|
6
|
+
module RuboCop
|
7
|
+
module Katalyst
|
8
|
+
# Provides a custom rake task.
|
9
|
+
#
|
10
|
+
# require 'rubocop/katalyst/erb_lint_task'
|
11
|
+
# RuboCop::Katalyst::ErbLintTask.new
|
12
|
+
class ErbLintTask < ::Rake::TaskLib
|
13
|
+
attr_accessor :verbose
|
14
|
+
|
15
|
+
def initialize(verbose: true)
|
16
|
+
super()
|
17
|
+
|
18
|
+
@verbose = verbose
|
19
|
+
|
20
|
+
desc "Run ErbLint" unless ::Rake.application.last_description
|
21
|
+
task(erb_lint: "erb_lint:lint")
|
22
|
+
|
23
|
+
setup_subtasks
|
24
|
+
|
25
|
+
task(lint: :erb_lint)
|
26
|
+
task(autocorrect: "erb_lint:autocorrect")
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
def run_cli(verbose, *options)
|
32
|
+
require "erb_lint/cli"
|
33
|
+
|
34
|
+
cli = ERBLint::CLI.new
|
35
|
+
puts "Running ERBLint" if verbose
|
36
|
+
result = cli.run(["--config", config.to_path, *options])
|
37
|
+
abort("ERBLint failed!") unless result
|
38
|
+
end
|
39
|
+
|
40
|
+
def setup_subtasks
|
41
|
+
namespace :erb_lint do
|
42
|
+
desc "Run erb_lint linter"
|
43
|
+
task :lint do
|
44
|
+
run_cli(verbose, "--lint-all")
|
45
|
+
end
|
46
|
+
|
47
|
+
desc "Run erb_lint autocorrect"
|
48
|
+
task :autocorrect do
|
49
|
+
run_cli(verbose, "--lint-all", "-a")
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def config
|
55
|
+
config = Pathname.new(".erb-lint.yml")
|
56
|
+
config = default_config unless config.exist?
|
57
|
+
config
|
58
|
+
end
|
59
|
+
|
60
|
+
def default_config
|
61
|
+
Pathname.new(__dir__).join("../../.erb-lint.yml")
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "rake"
|
4
|
+
require "rake/tasklib"
|
5
|
+
|
6
|
+
module RuboCop
|
7
|
+
module Katalyst
|
8
|
+
# Provides a custom rake task.
|
9
|
+
#
|
10
|
+
# require 'rubocop/katalyst/prettier_task'
|
11
|
+
# RuboCop::Katalyst::PrettierTask.new
|
12
|
+
class PrettierTask < ::Rake::TaskLib
|
13
|
+
attr_accessor :verbose
|
14
|
+
|
15
|
+
def initialize(verbose: true)
|
16
|
+
super()
|
17
|
+
|
18
|
+
@verbose = verbose
|
19
|
+
|
20
|
+
desc "Run Prettier" unless ::Rake.application.last_description
|
21
|
+
task(prettier: "prettier:lint")
|
22
|
+
|
23
|
+
task(lint: :prettier)
|
24
|
+
task(autocorrect: "prettier:autocorrect")
|
25
|
+
|
26
|
+
setup_subtasks
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
def yarn(*options)
|
32
|
+
sh("yarn", *options)
|
33
|
+
end
|
34
|
+
|
35
|
+
def installed?
|
36
|
+
config.exist?
|
37
|
+
end
|
38
|
+
|
39
|
+
def config
|
40
|
+
::Rails.application.root.join(".prettierrc.json")
|
41
|
+
end
|
42
|
+
|
43
|
+
def install_prettier
|
44
|
+
yarn("add", "--dev", "prettier")
|
45
|
+
config.open("w") do |f|
|
46
|
+
f.write <<~JSON
|
47
|
+
{}
|
48
|
+
JSON
|
49
|
+
end
|
50
|
+
yarn("install")
|
51
|
+
end
|
52
|
+
|
53
|
+
def setup_subtasks
|
54
|
+
namespace :prettier do
|
55
|
+
desc "Install npm packages with yarn"
|
56
|
+
task install: :environment do
|
57
|
+
install_prettier unless installed?
|
58
|
+
end
|
59
|
+
|
60
|
+
desc "Lint JS/SCSS files using prettier"
|
61
|
+
task lint: :install do
|
62
|
+
yarn("run", "prettier", "--check", *paths)
|
63
|
+
end
|
64
|
+
|
65
|
+
desc "Autocorrect JS/SCSS files using prettier"
|
66
|
+
task autocorrect: :install do
|
67
|
+
yarn("run", "prettier", "--write", *paths)
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def paths
|
73
|
+
%w[
|
74
|
+
app/assets/javascripts
|
75
|
+
app/assets/stylesheets
|
76
|
+
]
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "rubocop/rake_task"
|
4
|
+
|
5
|
+
module RuboCop
|
6
|
+
module Katalyst
|
7
|
+
# Provides a custom rake task.
|
8
|
+
#
|
9
|
+
# require "rubocop/katalyst/rake_task"
|
10
|
+
# RuboCop::Katalyst::RakeTask.new
|
11
|
+
class RakeTask < ::RuboCop::RakeTask
|
12
|
+
attr_accessor :verbose
|
13
|
+
|
14
|
+
def initialize(name = :rubocop, *args, &task_block)
|
15
|
+
super
|
16
|
+
|
17
|
+
task(lint: :rubocop)
|
18
|
+
task(autocorrect: "rubocop:autocorrect")
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
begin
|
4
|
+
require "erb_lint"
|
5
|
+
rescue LoadError
|
6
|
+
return
|
7
|
+
end
|
8
|
+
|
9
|
+
def erb_lint_config
|
10
|
+
local = Rails.application.root.join(".erb-lint.yml")
|
11
|
+
if local.exist?
|
12
|
+
local.to_path
|
13
|
+
else
|
14
|
+
Pathname.new(__dir__).join("../../.erb-lint.yml").to_path
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
namespace :erb_lint do
|
19
|
+
desc "Require erb_lint"
|
20
|
+
task :require do
|
21
|
+
require "erb_lint/cli"
|
22
|
+
rescue LoadError
|
23
|
+
nil
|
24
|
+
end
|
25
|
+
|
26
|
+
desc "Run erb_lint linter"
|
27
|
+
task lint: :require do
|
28
|
+
ERBLint::CLI.new.run(["--config", erb_lint_config, "--lint-all"])
|
29
|
+
end
|
30
|
+
|
31
|
+
desc "Run erb_lint autocorrect"
|
32
|
+
task autocorrect: :require do
|
33
|
+
ERBLint::CLI.new.run(["--config", erb_lint_config, "--lint-all", "-a"])
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
desc "Run erb_lint linter"
|
38
|
+
task erb_lint: "erb_lint:lint"
|
data/package.json
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
{
|
2
|
+
"private": true,
|
3
|
+
"scripts": {
|
4
|
+
"lint": "prettier --check *.json app/assets/javascripts app/assets/stylesheets",
|
5
|
+
"autocorrect": "prettier --write *.json app/assets/javascripts app/assets/stylesheets"
|
6
|
+
},
|
7
|
+
"devDependencies": {
|
8
|
+
"prettier": "2.7.1"
|
9
|
+
}
|
10
|
+
}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubocop-katalyst
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Katalyst Interactive
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-05-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rubocop
|
@@ -87,6 +87,7 @@ executables: []
|
|
87
87
|
extensions: []
|
88
88
|
extra_rdoc_files: []
|
89
89
|
files:
|
90
|
+
- ".erb-lint.yml"
|
90
91
|
- CHANGELOG.md
|
91
92
|
- LICENSE.txt
|
92
93
|
- README.md
|
@@ -106,8 +107,13 @@ files:
|
|
106
107
|
- lib/rubocop-katalyst.rb
|
107
108
|
- lib/rubocop/cop/katalyst_cops.rb
|
108
109
|
- lib/rubocop/katalyst.rb
|
110
|
+
- lib/rubocop/katalyst/erb_lint_task.rb
|
109
111
|
- lib/rubocop/katalyst/inject.rb
|
112
|
+
- lib/rubocop/katalyst/prettier_task.rb
|
113
|
+
- lib/rubocop/katalyst/rake_task.rb
|
110
114
|
- lib/rubocop/katalyst/version.rb
|
115
|
+
- lib/tasks/erb_lint.rake
|
116
|
+
- package.json
|
111
117
|
homepage: https://github.com/katalyst/rubocop-katalyst
|
112
118
|
licenses:
|
113
119
|
- MIT
|
@@ -132,7 +138,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
132
138
|
- !ruby/object:Gem::Version
|
133
139
|
version: '0'
|
134
140
|
requirements: []
|
135
|
-
rubygems_version: 3.
|
141
|
+
rubygems_version: 3.4.12
|
136
142
|
signing_key:
|
137
143
|
specification_version: 4
|
138
144
|
summary: Code standards for Katalyst
|