rubocop-packs 0.0.16 → 0.0.18
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +5 -5
- data/config/default.yml +3 -3
- data/lib/rubocop/cop/packs/class_methods_as_public_apis.rb +1 -1
- data/lib/rubocop/cop/packs/{require_documented_public_apis.rb → documented_public_apis.rb} +1 -1
- data/lib/rubocop/cop/packs/{namespace_convention → root_namespace_is_pack_name}/desired_zeitwerk_api.rb +1 -1
- data/lib/rubocop/cop/packs/{namespace_convention.rb → root_namespace_is_pack_name.rb} +2 -2
- data/lib/rubocop/cop/packs/{typed_public_api.rb → typed_public_apis.rb} +1 -1
- data/lib/rubocop/packs.rb +25 -0
- data/lib/rubocop-packs.rb +3 -3
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ad176fde4b980a18810e2563daf9c097bf4569d83a713e7d0efab4a7118e32c8
|
4
|
+
data.tar.gz: cd71dc7323afd1bf9c4dea9818cc6e177cacce44e94337c0746c6db01bb69a1b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b19478228beb486ac967de7479048a6f01ffd0ba2cb608ce9a5e6c5ad6966f2431fb5df38636cdc079e7e89e8e574ddd126f5be28d307209430b9e3389596ec5
|
7
|
+
data.tar.gz: a5b7ea366640f39b2631b02d2d8fe59997c1449e57e6b9c3f7da7a58acc4fe471627c9bdf55734ef085e4b6de5bd562979833793e121a4532c3c52fee29d0b18
|
data/README.md
CHANGED
@@ -36,7 +36,7 @@ All cops are located under [`lib/rubocop/cop/packs`](lib/rubocop/cop/packs), and
|
|
36
36
|
In your `.rubocop.yml`, you may treat the Packs cops just like any other cop. For example:
|
37
37
|
|
38
38
|
```yaml
|
39
|
-
Packs/
|
39
|
+
Packs/RootNamespaceIsPackName:
|
40
40
|
Exclude:
|
41
41
|
- lib/example.rb
|
42
42
|
```
|
@@ -52,9 +52,9 @@ To add a per-pack `.rubocop.yml`, you just need to create a `packs/your_pack/.ru
|
|
52
52
|
inherit_from: '../../.rubocop.yml'
|
53
53
|
```
|
54
54
|
|
55
|
-
Note though that inherited paths are relative to your pack-level `.rubocop.yml`. To avoid that, you can rename your `.rubocop.yml` to `.
|
55
|
+
Note though that inherited paths are relative to your pack-level `.rubocop.yml`. To avoid that, you can rename your `.rubocop.yml` to `.base_rubocop.yml`, set `.rubocop.yml` to:
|
56
56
|
```
|
57
|
-
inherit_from: '.
|
57
|
+
inherit_from: '.base_rubocop.yml'
|
58
58
|
```
|
59
59
|
And then similarly change the `inherit_from` in `packs/your_pack/.rubocop.yml`.
|
60
60
|
|
@@ -70,8 +70,8 @@ To use per-pack `.rubocop.yml` and `.rubocop_todo.yml` files, you need to config
|
|
70
70
|
```ruby
|
71
71
|
# config/rubocop_packs.rb
|
72
72
|
RuboCop::Packs.configure do |config|
|
73
|
-
config.permitted_pack_level_cops = ['Packs/
|
74
|
-
config.required_pack_level_cops = ['Packs/
|
73
|
+
config.permitted_pack_level_cops = ['Packs/RootNamespaceIsPackName']
|
74
|
+
config.required_pack_level_cops = ['Packs/RootNamespaceIsPackName']
|
75
75
|
end
|
76
76
|
```
|
77
77
|
|
data/config/default.yml
CHANGED
@@ -8,13 +8,13 @@ Packs/ClassMethodsAsPublicApis:
|
|
8
8
|
- Struct
|
9
9
|
- OpenStruct
|
10
10
|
|
11
|
-
Packs/
|
11
|
+
Packs/RootNamespaceIsPackName:
|
12
12
|
Enabled: true
|
13
13
|
|
14
|
-
Packs/
|
14
|
+
Packs/TypedPublicApis:
|
15
15
|
Enabled: true
|
16
16
|
|
17
|
-
Packs/
|
17
|
+
Packs/DocumentedPublicApis:
|
18
18
|
Enabled: true
|
19
19
|
|
20
20
|
PackwerkLite/Privacy:
|
@@ -21,7 +21,7 @@ module RuboCop
|
|
21
21
|
# def bar; end
|
22
22
|
# end
|
23
23
|
#
|
24
|
-
class
|
24
|
+
class DocumentedPublicApis < Style::DocumentationMethod
|
25
25
|
# This cop does two things:
|
26
26
|
# 1) It only activates for things in the public folder
|
27
27
|
# 2) It allows `Style/DocumentationMethod` to work with sigs as expected.
|
@@ -3,7 +3,7 @@
|
|
3
3
|
module RuboCop
|
4
4
|
module Cop
|
5
5
|
module Packs
|
6
|
-
class
|
6
|
+
class RootNamespaceIsPackName < Base
|
7
7
|
#
|
8
8
|
# This is a private class that represents API that we would prefer to be available somehow in Zeitwerk.
|
9
9
|
# However, the boundaries between systems (packwerk/zeitwerk, rubocop/zeitwerk) are poor in this class, so
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
# For String#camelize
|
4
4
|
require 'active_support/core_ext/string/inflections'
|
5
|
-
require 'rubocop/cop/packs/
|
5
|
+
require 'rubocop/cop/packs/root_namespace_is_pack_name/desired_zeitwerk_api'
|
6
6
|
|
7
7
|
module RuboCop
|
8
8
|
module Cop
|
@@ -23,7 +23,7 @@ module RuboCop
|
|
23
23
|
# # packs/foo/app/services/foo/blah/bar.rb
|
24
24
|
# class Foo::Blah::Bar; end
|
25
25
|
#
|
26
|
-
class
|
26
|
+
class RootNamespaceIsPackName < Base
|
27
27
|
extend T::Sig
|
28
28
|
|
29
29
|
include RangeHelp
|
@@ -19,7 +19,7 @@ module RuboCop
|
|
19
19
|
# # typed: strict
|
20
20
|
# module Foo; end
|
21
21
|
#
|
22
|
-
class
|
22
|
+
class TypedPublicApis < Sorbet::StrictSigil
|
23
23
|
#
|
24
24
|
# This inherits from `Sorbet::StrictSigil` and doesn't change any behavior of it.
|
25
25
|
# The only reason we do this is so that configuration for this cop can live under a different cop namespace.
|
data/lib/rubocop/packs.rb
CHANGED
@@ -64,6 +64,31 @@ module RuboCop
|
|
64
64
|
end
|
65
65
|
end
|
66
66
|
|
67
|
+
#
|
68
|
+
# Ideally, this is API that is available to us via `rubocop` itself.
|
69
|
+
# That is: the ability to preserve the location of `.rubocop_todo.yml` files and associate
|
70
|
+
# exclusions with the closest ancestor `.rubocop_todo.yml`
|
71
|
+
#
|
72
|
+
sig { params(packs: T::Array[ParsePackwerk::Package]).void }
|
73
|
+
def self.set_default_rubocop_yml(packs:)
|
74
|
+
packs.each do |pack|
|
75
|
+
rubocop_yml = Pathname.new(pack.directory.join('.rubocop.yml'))
|
76
|
+
rubocop_yml_hash = {}
|
77
|
+
rubocop_yml_hash['inherit_from'] = '../../.base_rubocop.yml'
|
78
|
+
config.required_pack_level_cops.each do |cop|
|
79
|
+
rubocop_yml_hash[cop] = { 'Enabled' => true }
|
80
|
+
end
|
81
|
+
|
82
|
+
formatted_yml = YAML.dump(rubocop_yml_hash).
|
83
|
+
# Remove the `---` header at the top of the file
|
84
|
+
gsub("---\n", '').
|
85
|
+
# Find lines of the form \nCopDepartment/CopName: and add a new line before it.
|
86
|
+
gsub(%r{^(\w+/\w+:)}, "\n\\1")
|
87
|
+
|
88
|
+
rubocop_yml.write(formatted_yml)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
67
92
|
sig { params(root_pathname: String).returns(String) }
|
68
93
|
# It would be great if rubocop (upstream) could take in a glob for `inherit_from`, which
|
69
94
|
# would allow us to delete this method and this additional complexity.
|
data/lib/rubocop-packs.rb
CHANGED
@@ -8,9 +8,9 @@ require_relative 'rubocop/packs'
|
|
8
8
|
require_relative 'rubocop/packs/inject'
|
9
9
|
require_relative 'rubocop/packwerk_lite'
|
10
10
|
|
11
|
-
require 'rubocop/cop/packs/
|
12
|
-
require 'rubocop/cop/packs/
|
11
|
+
require 'rubocop/cop/packs/root_namespace_is_pack_name'
|
12
|
+
require 'rubocop/cop/packs/typed_public_apis'
|
13
13
|
require 'rubocop/cop/packs/class_methods_as_public_apis'
|
14
|
-
require 'rubocop/cop/packs/
|
14
|
+
require 'rubocop/cop/packs/documented_public_apis'
|
15
15
|
|
16
16
|
RuboCop::Packs::Inject.defaults!
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubocop-packs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.18
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gusto Engineers
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-11-
|
11
|
+
date: 2022-11-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -190,10 +190,10 @@ files:
|
|
190
190
|
- config/pack_config.yml
|
191
191
|
- lib/rubocop-packs.rb
|
192
192
|
- lib/rubocop/cop/packs/class_methods_as_public_apis.rb
|
193
|
-
- lib/rubocop/cop/packs/
|
194
|
-
- lib/rubocop/cop/packs/
|
195
|
-
- lib/rubocop/cop/packs/
|
196
|
-
- lib/rubocop/cop/packs/
|
193
|
+
- lib/rubocop/cop/packs/documented_public_apis.rb
|
194
|
+
- lib/rubocop/cop/packs/root_namespace_is_pack_name.rb
|
195
|
+
- lib/rubocop/cop/packs/root_namespace_is_pack_name/desired_zeitwerk_api.rb
|
196
|
+
- lib/rubocop/cop/packs/typed_public_apis.rb
|
197
197
|
- lib/rubocop/cop/packwerk_lite/constant_resolver.rb
|
198
198
|
- lib/rubocop/cop/packwerk_lite/dependency_checker.rb
|
199
199
|
- lib/rubocop/cop/packwerk_lite/privacy_checker.rb
|