packwerk 3.1.0 → 3.2.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/Gemfile.lock +5 -5
- data/USAGE.md +2 -3
- data/lib/packwerk/checker.rb +2 -2
- data/lib/packwerk/commands/check_command.rb +4 -2
- data/lib/packwerk/file_processor.rb +1 -1
- data/lib/packwerk/generators/templates/package.yml +2 -2
- data/lib/packwerk/parsers/ruby.rb +2 -2
- data/lib/packwerk/reference_checking/checkers/dependency_checker.rb +3 -3
- data/lib/packwerk/version.rb +1 -1
- data/packwerk.gemspec +1 -0
- data/sorbet/rbi/gems/{nokogiri@1.13.8.rbi → nokogiri@1.15.3.rbi} +1854 -1031
- data/sorbet/rbi/gems/prism@0.24.0.rbi +29982 -0
- metadata +19 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 98dd65426866ebc6f1421486a1a8573ea539dc143c448cd6632b77c5ca5ef5d8
|
4
|
+
data.tar.gz: 960fe5383ebd4ebadfc05698a64bd2537b1cf9c03525cd1780ff1f27ea5bd468
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d91230970adbcfb9deaedd33a6745531b5245f929da676fb382ae0b661777777e522c14876ba9ace23d2f39dd4f72e528bc0543c1ecaaa463ba293113efab1bd
|
7
|
+
data.tar.gz: d2e1cbb00dc3dcaa1a92548f506124e0f05b4b8fa9f5c5837fa271ffb2e3847277fae8945b13cae0a05223540c386ead8efb7e8108436af2732c9525f9b00b4c
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
packwerk (3.
|
4
|
+
packwerk (3.2.0)
|
5
5
|
activesupport (>= 6.0)
|
6
6
|
ast
|
7
7
|
better_html
|
@@ -9,6 +9,7 @@ PATH
|
|
9
9
|
constant_resolver (>= 0.2.0)
|
10
10
|
parallel
|
11
11
|
parser
|
12
|
+
prism (>= 0.24.0)
|
12
13
|
sorbet-runtime (>= 0.5.9914)
|
13
14
|
zeitwerk (>= 2.6.1)
|
14
15
|
|
@@ -60,14 +61,12 @@ GEM
|
|
60
61
|
method_source (>= 0.6.7)
|
61
62
|
rake (>= 0.9.2.2)
|
62
63
|
method_source (1.0.0)
|
63
|
-
mini_portile2 (2.8.4)
|
64
64
|
minitest (5.16.2)
|
65
65
|
minitest-focus (1.3.1)
|
66
66
|
minitest (>= 4, < 6)
|
67
67
|
mocha (1.14.0)
|
68
68
|
netrc (0.11.0)
|
69
|
-
nokogiri (1.15.3)
|
70
|
-
mini_portile2 (~> 2.8.2)
|
69
|
+
nokogiri (1.15.3-arm64-darwin)
|
71
70
|
racc (~> 1.4)
|
72
71
|
nokogiri (1.15.3-x86_64-darwin)
|
73
72
|
racc (~> 1.4)
|
@@ -77,6 +76,7 @@ GEM
|
|
77
76
|
parser (3.2.2.0)
|
78
77
|
ast (~> 2.4.1)
|
79
78
|
prettier_print (0.1.0)
|
79
|
+
prism (0.24.0)
|
80
80
|
pry (0.14.1)
|
81
81
|
coderay (~> 1.1)
|
82
82
|
method_source (~> 1.0)
|
@@ -179,7 +179,7 @@ GEM
|
|
179
179
|
zeitwerk (2.6.4)
|
180
180
|
|
181
181
|
PLATFORMS
|
182
|
-
|
182
|
+
arm64-darwin-21
|
183
183
|
x86_64-darwin
|
184
184
|
x86_64-darwin-20
|
185
185
|
x86_64-linux
|
data/USAGE.md
CHANGED
@@ -20,7 +20,6 @@
|
|
20
20
|
* [Understanding how to respond to new violations](#understanding-how-to-respond-to-new-violations)
|
21
21
|
* [Recording existing violations](#recording-existing-violations)
|
22
22
|
* [Understanding the package todo file](#understanding-the-package-todo-file)
|
23
|
-
* [Understanding the list of deprecated references](#understanding-the-list-of-deprecated-references)
|
24
23
|
* [Loading extensions](#loading-extensions)
|
25
24
|
|
26
25
|
## What problem does Packwerk solve?
|
@@ -42,7 +41,7 @@ A package is a folder containing autoloaded code. To decide whether code belongs
|
|
42
41
|
|
43
42
|
Package principles help to guide the organization of classes in a large system. These principles can also be applied to packages in large and complex codebases.
|
44
43
|
|
45
|
-
|
44
|
+
They are well described in Robert Martin's [Design Principles and Design Patterns](https://drive.google.com/file/d/0BwhCYaYDn8EgODUxZTJhOWEtMTZlMi00OWRiLTg0ZmEtZWQ5ODRlY2RmNDlk/view) (right after the SOLID principles).
|
46
45
|
|
47
46
|
## Getting started
|
48
47
|
|
@@ -165,7 +164,7 @@ It will be a dependency violation when `components/shop_identity` tries to refer
|
|
165
164
|
|
166
165
|
#### Using strict mode
|
167
166
|
|
168
|
-
|
167
|
+
You can turn on `strict` mode to prevent new violations from being added to the package's `package_todo.yml`. To use this, simply change `enforce_dependencies: true` to `enforce_dependencies: strict` in your `package.yml`.
|
169
168
|
|
170
169
|
Then, when you run `bin/packwerk check`, new violations will cause the following error to be displayed:
|
171
170
|
```
|
data/lib/packwerk/checker.rb
CHANGED
@@ -51,8 +51,8 @@ module Packwerk
|
|
51
51
|
sig { abstract.returns(String) }
|
52
52
|
def violation_type; end
|
53
53
|
|
54
|
-
sig { abstract.params(
|
55
|
-
def strict_mode_violation?(
|
54
|
+
sig { abstract.params(offense: ReferenceOffense).returns(T::Boolean) }
|
55
|
+
def strict_mode_violation?(offense); end
|
56
56
|
|
57
57
|
sig { abstract.params(reference: Reference).returns(T::Boolean) }
|
58
58
|
def invalid_reference?(reference); end
|
@@ -31,17 +31,19 @@ module Packwerk
|
|
31
31
|
end
|
32
32
|
offense_collection.add_offenses(all_offenses)
|
33
33
|
|
34
|
+
unlisted_strict_mode_violations = offense_collection.unlisted_strict_mode_violations
|
35
|
+
|
34
36
|
messages = [
|
35
37
|
offenses_formatter.show_offenses(offense_collection.outstanding_offenses),
|
36
38
|
offenses_formatter.show_stale_violations(offense_collection, @files_for_processing.files),
|
37
|
-
offenses_formatter.show_strict_mode_violations(
|
39
|
+
offenses_formatter.show_strict_mode_violations(unlisted_strict_mode_violations),
|
38
40
|
]
|
39
41
|
|
40
42
|
out.puts(messages.select(&:present?).join("\n") + "\n")
|
41
43
|
|
42
44
|
offense_collection.outstanding_offenses.empty? &&
|
43
45
|
!offense_collection.stale_violations?(@files_for_processing.files) &&
|
44
|
-
|
46
|
+
unlisted_strict_mode_violations.empty?
|
45
47
|
end
|
46
48
|
|
47
49
|
private
|
@@ -59,7 +59,7 @@ module Packwerk
|
|
59
59
|
For now, you can add this file to `packwerk.yml` `exclude` list.
|
60
60
|
Please file an issue and include this error message and stacktrace:
|
61
61
|
|
62
|
-
#{e.message} #{e.backtrace}"
|
62
|
+
#{e.message} #{e.backtrace&.join("\n")}"
|
63
63
|
MSG
|
64
64
|
|
65
65
|
offense = Parsers::ParseResult.new(file: relative_file, message: message)
|
@@ -2,8 +2,8 @@
|
|
2
2
|
# Please validate the configuration using `packwerk validate` (for Rails applications) or running the auto generated
|
3
3
|
# test case (for non-Rails projects). You can then use `packwerk check` to check your code.
|
4
4
|
|
5
|
-
#
|
6
|
-
enforce_dependencies:
|
5
|
+
# Change to `true` to turn on dependency checks for this package
|
6
|
+
enforce_dependencies: false
|
7
7
|
|
8
8
|
# A list of this package's dependencies
|
9
9
|
# Note that packages in this list require their own `package.yml` file
|
@@ -2,7 +2,7 @@
|
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
4
|
require "parser"
|
5
|
-
require "
|
5
|
+
require "prism"
|
6
6
|
|
7
7
|
module Packwerk
|
8
8
|
module Parsers
|
@@ -11,7 +11,7 @@ module Packwerk
|
|
11
11
|
|
12
12
|
include ParserInterface
|
13
13
|
|
14
|
-
class RaiseExceptionsParser < Parser
|
14
|
+
class RaiseExceptionsParser < Prism::Translation::Parser
|
15
15
|
extend T::Sig
|
16
16
|
|
17
17
|
sig { params(builder: T.untyped).void }
|
@@ -47,9 +47,9 @@ module Packwerk
|
|
47
47
|
EOS
|
48
48
|
end
|
49
49
|
|
50
|
-
sig { override.params(
|
51
|
-
def strict_mode_violation?(
|
52
|
-
referencing_package =
|
50
|
+
sig { override.params(offense: ReferenceOffense).returns(T::Boolean) }
|
51
|
+
def strict_mode_violation?(offense)
|
52
|
+
referencing_package = offense.reference.package
|
53
53
|
referencing_package.config["enforce_dependencies"] == "strict"
|
54
54
|
end
|
55
55
|
|
data/lib/packwerk/version.rb
CHANGED
data/packwerk.gemspec
CHANGED
@@ -50,6 +50,7 @@ Gem::Specification.new do |spec|
|
|
50
50
|
# For Ruby parsing
|
51
51
|
spec.add_dependency("ast")
|
52
52
|
spec.add_dependency("parser")
|
53
|
+
spec.add_dependency("prism", ">= 0.24.0") # 0.24.0 fixes a performance issue with the parser translator
|
53
54
|
|
54
55
|
# For ERB parsing
|
55
56
|
spec.add_dependency("better_html")
|