rubocop-packs 0.0.35 → 0.0.36
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/README.md +1 -1
- data/config/default.yml +0 -8
- data/lib/rubocop/packs/private.rb +2 -0
- data/lib/rubocop/packs.rb +3 -48
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0d8ba7aa60a4c1be7d8958da1e4653ec7fc1c6435885ed66bbc5e7c47850043e
|
4
|
+
data.tar.gz: b7b3a20d9ddfeefc92464b8695d834b4a9fa740ff7683faab48fbe2ff2e437b3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 53cc68843262c7688c051446ad996d4962e6e1ca0215b9d600d6633e2c8043f2daf6fe24b4315ce7979f01a824332fe25076d862818af5ea01853ed989ee7e45
|
7
|
+
data.tar.gz: '09a74c8fd5f4e14aa53a8376af093f9ce414b1689e6ac21a22dd3c894a967fbc5a5c8368a50e4e6ced576e8c014f8394e31365f039abc6df8e1ea676573d0e6d'
|
data/README.md
CHANGED
@@ -41,7 +41,7 @@ Packs/RootNamespaceIsPackName:
|
|
41
41
|
- lib/example.rb
|
42
42
|
```
|
43
43
|
|
44
|
-
## Pack-Level
|
44
|
+
## Pack-Level `.rubocop.yml` and `.rubocop_todo.yml` files
|
45
45
|
See [ADVANCED_USAGE.md](ADVANCED_USAGE.md)
|
46
46
|
|
47
47
|
## Contributing
|
data/config/default.yml
CHANGED
@@ -27,11 +27,3 @@ PackwerkLite/Privacy:
|
|
27
27
|
PackwerkLite/Dependency:
|
28
28
|
# It is recommended to use packwerk
|
29
29
|
Enabled: false
|
30
|
-
|
31
|
-
# We do this inherit *after* setting the defaults so that pack-specific rubocops can override the defaults
|
32
|
-
# Relevant documentation:
|
33
|
-
# - Inheriting config from a gem:
|
34
|
-
# - https://docs.rubocop.org/rubocop/configuration.html#inheriting-configuration-from-a-dependency-gem
|
35
|
-
# - ERB in a .rubocop.yml file
|
36
|
-
# - https://docs.rubocop.org/rubocop/configuration.html#pre-processing
|
37
|
-
<%= RuboCop::Packs.pack_based_rubocop_config %>
|
data/lib/rubocop/packs.rb
CHANGED
@@ -7,13 +7,8 @@ module RuboCop
|
|
7
7
|
module Packs
|
8
8
|
extend T::Sig
|
9
9
|
|
10
|
-
|
11
|
-
|
12
|
-
# `.rubocop_todo.yml`. However, this introduces a number of path relativity issues (https://docs.rubocop.org/rubocop/configuration.html#path-relativity)
|
13
|
-
# that make this approach not possible. Therefore, for pack level rubocops, we name them in a way that mirrors packwerk `package_todo.yml` files
|
14
|
-
# for consistency and to ensure that thes are not read by rubocop except via the ERB templating mechanism.
|
15
|
-
PACK_LEVEL_RUBOCOP_YML = 'package_rubocop.yml'
|
16
|
-
PACK_LEVEL_RUBOCOP_TODO_YML = 'package_rubocop_todo.yml'
|
10
|
+
PACK_LEVEL_RUBOCOP_YML = '.rubocop.yml'
|
11
|
+
PACK_LEVEL_RUBOCOP_TODO_YML = '.rubocop_todo.yml'
|
17
12
|
|
18
13
|
PROJECT_ROOT = T.let(Pathname.new(__dir__).parent.parent.expand_path.freeze, Pathname)
|
19
14
|
CONFIG_DEFAULT = T.let(PROJECT_ROOT.join('config', 'default.yml').freeze, Pathname)
|
@@ -58,7 +53,7 @@ module RuboCop
|
|
58
53
|
offenses_for_pack.group_by(&:filepath).each do |filepath, offenses_by_filepath|
|
59
54
|
offenses_by_filepath.map(&:cop_name).uniq.each do |cop_name|
|
60
55
|
rubocop_todo[cop_name] ||= { 'Exclude' => [] }
|
61
|
-
rubocop_todo[cop_name]['Exclude'] << filepath
|
56
|
+
rubocop_todo[cop_name]['Exclude'] << Pathname.new(filepath).relative_path_from(pack.relative_path).to_s
|
62
57
|
end
|
63
58
|
end
|
64
59
|
|
@@ -92,46 +87,6 @@ module RuboCop
|
|
92
87
|
end
|
93
88
|
end
|
94
89
|
|
95
|
-
sig { params(root_pathname: String).returns(String) }
|
96
|
-
# It would be great if rubocop (upstream) could take in a glob for `inherit_from`, which
|
97
|
-
# would allow us to delete this method and this additional complexity.
|
98
|
-
def self.pack_based_rubocop_config(root_pathname: Bundler.root)
|
99
|
-
rubocop_config = {}
|
100
|
-
# We do this because when the ERB is evaluated Dir.pwd is at the directory containing the YML.
|
101
|
-
# Ideally rubocop wouldn't change the PWD before invoking this method.
|
102
|
-
Dir.chdir(root_pathname) do
|
103
|
-
::Packs.all.each do |package|
|
104
|
-
rubocop_todo = package.relative_path.join(PACK_LEVEL_RUBOCOP_TODO_YML)
|
105
|
-
if rubocop_todo.exist?
|
106
|
-
loaded_rubocop_todo = YAML.load_file(rubocop_todo)
|
107
|
-
loaded_rubocop_todo.each do |cop_name, key_config|
|
108
|
-
rubocop_config[cop_name] ||= {}
|
109
|
-
rubocop_config[cop_name]['Exclude'] ||= []
|
110
|
-
rubocop_config[cop_name]['Exclude'] += key_config['Exclude']
|
111
|
-
end
|
112
|
-
end
|
113
|
-
|
114
|
-
pack_rubocop = package.relative_path.join(PACK_LEVEL_RUBOCOP_YML)
|
115
|
-
next unless pack_rubocop.exist?
|
116
|
-
|
117
|
-
loaded_pack_rubocop = YAML.load_file(pack_rubocop)
|
118
|
-
loaded_pack_rubocop.each do |cop_name, key_config|
|
119
|
-
rubocop_config[cop_name] ||= {}
|
120
|
-
|
121
|
-
if key_config['Enabled']
|
122
|
-
rubocop_config[cop_name]['Include'] ||= []
|
123
|
-
rubocop_config[cop_name]['Include'] << package.relative_path.join('**/*').to_s
|
124
|
-
else
|
125
|
-
rubocop_config[cop_name]['Exclude'] ||= []
|
126
|
-
rubocop_config[cop_name]['Exclude'] << package.relative_path.join('**/*').to_s
|
127
|
-
end
|
128
|
-
end
|
129
|
-
end
|
130
|
-
end
|
131
|
-
|
132
|
-
YAML.dump(rubocop_config)
|
133
|
-
end
|
134
|
-
|
135
90
|
sig { void }
|
136
91
|
def self.bust_cache!
|
137
92
|
config.bust_cache!
|
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.36
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gusto Engineers
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-03-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|