packwerk 3.1.0 → 3.2.1
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/lib/packwerk/checker.rb +5 -5
- 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/offenses_formatter.rb +3 -3
- data/lib/packwerk/package_todo.rb +1 -4
- data/lib/packwerk/parsers/factory.rb +3 -3
- data/lib/packwerk/parsers/ruby.rb +9 -2
- data/lib/packwerk/reference_checking/checkers/dependency_checker.rb +3 -3
- data/lib/packwerk/reference_offense.rb +1 -1
- data/lib/packwerk/validator.rb +3 -3
- data/lib/packwerk/version.rb +1 -1
- data/sorbet/rbi/gems/actionpack@7.0.3.1.rbi +3280 -3450
- data/sorbet/rbi/gems/actionview@7.0.3.1.rbi +2322 -1782
- data/sorbet/rbi/gems/activesupport@7.0.3.1.rbi +2654 -3268
- data/sorbet/rbi/gems/ast@2.4.2.rbi +535 -6
- data/sorbet/rbi/gems/better_html@2.0.1.rbi +529 -0
- data/sorbet/rbi/gems/builder@3.2.4.rbi +4 -4
- data/sorbet/rbi/gems/byebug@11.1.3.rbi +32 -4
- data/sorbet/rbi/gems/concurrent-ruby@1.1.10.rbi +1750 -1840
- data/sorbet/rbi/gems/constant_resolver@0.2.0.rbi +15 -15
- data/sorbet/rbi/gems/crass@1.0.6.rbi +489 -5
- data/sorbet/rbi/gems/erubi@1.11.0.rbi +24 -21
- data/sorbet/rbi/gems/i18n@1.12.0.rbi +395 -395
- data/sorbet/rbi/gems/json@2.6.2.rbi +70 -77
- data/sorbet/rbi/gems/language_server-protocol@3.16.0.3.rbi +1 -1
- data/sorbet/rbi/gems/loofah@2.18.0.rbi +134 -134
- data/sorbet/rbi/gems/m@1.6.0.rbi +60 -60
- data/sorbet/rbi/gems/method_source@1.1.0.rbi +303 -0
- data/sorbet/rbi/gems/minitest-focus@1.3.1.rbi +22 -28
- data/sorbet/rbi/gems/minitest@5.16.2.rbi +384 -396
- data/sorbet/rbi/gems/mocha@1.14.0.rbi +589 -589
- data/sorbet/rbi/gems/netrc@0.11.0.rbi +37 -32
- data/sorbet/rbi/gems/{nokogiri@1.13.8.rbi → nokogiri@1.15.3.rbi} +1869 -1030
- data/sorbet/rbi/gems/{parallel@1.22.1.rbi → parallel@1.24.0.rbi} +85 -82
- data/sorbet/rbi/gems/{parser@3.2.2.0.rbi → parser@3.3.1.0.rbi} +1679 -1609
- data/sorbet/rbi/gems/prettier_print@0.1.0.rbi +1 -1
- data/sorbet/rbi/gems/prism@0.27.0.rbi +36983 -0
- data/sorbet/rbi/gems/{racc@1.6.0.rbi → racc@1.7.1.rbi} +42 -33
- data/sorbet/rbi/gems/rack-test@2.0.2.rbi +148 -338
- data/sorbet/rbi/gems/rack@2.2.4.rbi +1079 -1130
- data/sorbet/rbi/gems/rails-dom-testing@2.0.3.rbi +354 -22
- data/sorbet/rbi/gems/rails-html-sanitizer@1.4.3.rbi +113 -259
- data/sorbet/rbi/gems/railties@7.0.3.1.rbi +642 -638
- data/sorbet/rbi/gems/rainbow@3.1.1.rbi +109 -99
- data/sorbet/rbi/gems/rake@13.0.6.rbi +714 -599
- data/sorbet/rbi/gems/{rbi@0.0.15.rbi → rbi@0.1.12.rbi} +865 -801
- data/sorbet/rbi/gems/regexp_parser@2.5.0.rbi +853 -870
- data/sorbet/rbi/gems/rexml@3.2.5.rbi +480 -477
- data/sorbet/rbi/gems/rubocop-ast@1.21.0.rbi +1621 -1622
- data/sorbet/rbi/gems/rubocop-performance@1.14.3.rbi +507 -526
- data/sorbet/rbi/gems/rubocop-shopify@2.9.0.rbi +1 -1
- data/sorbet/rbi/gems/rubocop-sorbet@0.6.11.rbi +186 -203
- data/sorbet/rbi/gems/rubocop@1.34.1.rbi +8126 -8367
- data/sorbet/rbi/gems/{ruby-lsp@0.2.1.rbi → ruby-lsp@0.2.3.rbi} +2 -2
- data/sorbet/rbi/gems/ruby-progressbar@1.11.0.rbi +1235 -4
- data/sorbet/rbi/gems/smart_properties@1.17.0.rbi +90 -90
- data/sorbet/rbi/gems/spoom@1.3.2.rbi +4420 -0
- data/sorbet/rbi/gems/spring@4.0.0.rbi +104 -104
- data/sorbet/rbi/gems/syntax_tree@3.3.0.rbi +1 -1
- data/sorbet/rbi/gems/{tapioca@0.9.2.rbi → tapioca@0.13.3.rbi} +1596 -1253
- data/sorbet/rbi/gems/{thor@1.2.1.rbi → thor@1.3.1.rbi} +1047 -652
- data/sorbet/rbi/gems/tzinfo@2.0.5.rbi +531 -513
- data/sorbet/rbi/gems/unicode-display_width@2.2.0.rbi +13 -13
- data/sorbet/rbi/gems/{yard-sorbet@0.6.1.rbi → yard-sorbet@0.8.1.rbi} +132 -92
- data/sorbet/rbi/gems/{yard@0.9.28.rbi → yard@0.9.36.rbi} +3158 -3067
- data/sorbet/rbi/gems/zeitwerk@2.6.4.rbi +149 -145
- metadata +31 -74
- data/.github/ISSUE_TEMPLATE/bug_report.md +0 -27
- data/.github/pull_request_template.md +0 -28
- data/.github/workflows/ci.yml +0 -93
- data/.github/workflows/cla.yml +0 -22
- data/.gitignore +0 -13
- data/.rubocop.yml +0 -75
- data/.ruby-version +0 -1
- data/CODEOWNERS +0 -1
- data/CODE_OF_CONDUCT.md +0 -76
- data/CONTRIBUTING.md +0 -17
- data/Gemfile +0 -27
- data/Gemfile.lock +0 -206
- data/RESOLVING_VIOLATIONS.md +0 -76
- data/Rakefile +0 -22
- data/TROUBLESHOOT.md +0 -44
- data/UPGRADING.md +0 -66
- data/USAGE.md +0 -365
- data/bin/console +0 -15
- data/bin/m +0 -29
- data/bin/rake +0 -29
- data/bin/rubocop +0 -29
- data/bin/setup +0 -8
- data/bin/srb +0 -29
- data/bin/tapioca +0 -29
- data/dev.yml +0 -32
- data/docs/cohesion.png +0 -0
- data/gemfiles/Gemfile-rails-6-0 +0 -22
- data/gemfiles/Gemfile-rails-6-1 +0 -22
- data/packwerk.gemspec +0 -58
- data/shipit.rubygems.yml +0 -5
- data/sorbet/rbi/gems/actioncable@7.0.3.1.rbi +0 -2754
- data/sorbet/rbi/gems/actionmailbox@7.0.3.1.rbi +0 -1496
- data/sorbet/rbi/gems/actionmailer@7.0.3.1.rbi +0 -2362
- data/sorbet/rbi/gems/actiontext@7.0.3.1.rbi +0 -1569
- data/sorbet/rbi/gems/activejob@7.0.3.1.rbi +0 -2553
- data/sorbet/rbi/gems/activemodel@7.0.3.1.rbi +0 -5999
- data/sorbet/rbi/gems/activerecord@7.0.3.1.rbi +0 -37832
- data/sorbet/rbi/gems/activestorage@7.0.3.1.rbi +0 -2321
- data/sorbet/rbi/gems/better_html@1.0.16.rbi +0 -317
- data/sorbet/rbi/gems/coderay@1.1.3.rbi +0 -8
- data/sorbet/rbi/gems/diff-lcs@1.5.0.rbi +0 -1079
- data/sorbet/rbi/gems/digest@3.1.0.rbi +0 -189
- data/sorbet/rbi/gems/globalid@1.0.0.rbi +0 -572
- data/sorbet/rbi/gems/mail@2.7.1.rbi +0 -2490
- data/sorbet/rbi/gems/marcel@1.0.2.rbi +0 -220
- data/sorbet/rbi/gems/method_source@1.0.0.rbi +0 -76
- data/sorbet/rbi/gems/mini_mime@1.1.2.rbi +0 -170
- data/sorbet/rbi/gems/net-imap@0.2.3.rbi +0 -2147
- data/sorbet/rbi/gems/net-pop@0.1.1.rbi +0 -926
- data/sorbet/rbi/gems/net-protocol@0.1.3.rbi +0 -11
- data/sorbet/rbi/gems/net-smtp@0.3.1.rbi +0 -1108
- data/sorbet/rbi/gems/nio4r@2.5.8.rbi +0 -292
- data/sorbet/rbi/gems/pry@0.14.1.rbi +0 -8
- data/sorbet/rbi/gems/rails@7.0.3.1.rbi +0 -8
- data/sorbet/rbi/gems/spoom@1.1.11.rbi +0 -2181
- data/sorbet/rbi/gems/strscan@3.0.4.rbi +0 -8
- data/sorbet/rbi/gems/timeout@0.3.0.rbi +0 -142
- data/sorbet/rbi/gems/unparser@0.6.5.rbi +0 -4529
- data/sorbet/rbi/gems/webrick@1.7.0.rbi +0 -2582
- data/sorbet/rbi/gems/websocket-driver@0.7.5.rbi +0 -993
- data/sorbet/rbi/gems/websocket-extensions@0.1.5.rbi +0 -71
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f8766d43b92fcc7bedad92604cde48e11433afdf474b21515f363b595c7fae23
|
|
4
|
+
data.tar.gz: 0d386a1d690b6c07d41a6d63b0907f38d57fffd87d2ab370ee580cbcd0826a17
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a64ccf65829b48691341b0abc09013213bd266ca9d2ec7a37fa1735856ae6b707d904ad75012c91bcd5a6d3ec4991ed6d7f1545140232d34f6d27452f5ac5a27
|
|
7
|
+
data.tar.gz: f231695cf34fc0fb109d70efcff6874d5268b70c4af80688813734448f5c3d1ee3a705dbe3ece0bbb156733585f581f941917ed43f1666bb58f9617932858e18
|
data/lib/packwerk/checker.rb
CHANGED
|
@@ -11,7 +11,7 @@ module Packwerk
|
|
|
11
11
|
class << self
|
|
12
12
|
extend T::Sig
|
|
13
13
|
|
|
14
|
-
sig { params(base: Class).void }
|
|
14
|
+
sig { params(base: T::Class[T.anything]).void }
|
|
15
15
|
def included(base)
|
|
16
16
|
checkers << base
|
|
17
17
|
end
|
|
@@ -34,9 +34,9 @@ module Packwerk
|
|
|
34
34
|
require("packwerk/reference_checking/checkers/dependency_checker")
|
|
35
35
|
end
|
|
36
36
|
|
|
37
|
-
sig { returns(T::Array[Class]) }
|
|
37
|
+
sig { returns(T::Array[T::Class[T.anything]]) }
|
|
38
38
|
def checkers
|
|
39
|
-
@checkers ||= T.let([], T.nilable(T::Array[Class]))
|
|
39
|
+
@checkers ||= T.let([], T.nilable(T::Array[T::Class[T.anything]]))
|
|
40
40
|
end
|
|
41
41
|
|
|
42
42
|
sig { params(name: String).returns(Checker) }
|
|
@@ -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
|
|
@@ -20,7 +20,7 @@ module Packwerk
|
|
|
20
20
|
class << self
|
|
21
21
|
extend T::Sig
|
|
22
22
|
|
|
23
|
-
sig { params(base: Class).void }
|
|
23
|
+
sig { params(base: T::Class[T.anything]).void }
|
|
24
24
|
def included(base)
|
|
25
25
|
offenses_formatters << base
|
|
26
26
|
end
|
|
@@ -43,9 +43,9 @@ module Packwerk
|
|
|
43
43
|
require("packwerk/formatters/default_offenses_formatter")
|
|
44
44
|
end
|
|
45
45
|
|
|
46
|
-
sig { returns(T::Array[Class]) }
|
|
46
|
+
sig { returns(T::Array[T::Class[T.anything]]) }
|
|
47
47
|
def offenses_formatters
|
|
48
|
-
@offenses_formatters ||= T.let([], T.nilable(T::Array[Class]))
|
|
48
|
+
@offenses_formatters ||= T.let([], T.nilable(T::Array[T::Class[T.anything]]))
|
|
49
49
|
end
|
|
50
50
|
|
|
51
51
|
sig { params(name: String).returns(OffensesFormatter) }
|
|
@@ -113,10 +113,7 @@ module Packwerk
|
|
|
113
113
|
sig { params(package: String, violations: Entry).returns(T::Boolean) }
|
|
114
114
|
def stale_violation_for_package?(package, violations:)
|
|
115
115
|
violations.any? do |constant_name, entries_for_constant|
|
|
116
|
-
new_entries_violation_types =
|
|
117
|
-
new_entries.dig(package, constant_name, "violations"),
|
|
118
|
-
T.nilable(T::Array[String]),
|
|
119
|
-
)
|
|
116
|
+
new_entries_violation_types = new_entries.dig(package, constant_name, "violations")
|
|
120
117
|
# If there are no NEW entries that match the old entries `for_files`,
|
|
121
118
|
# new_entries is from the list of violations we get when we check this file.
|
|
122
119
|
# If this list is empty, we also must have stale violations.
|
|
@@ -24,7 +24,7 @@ module Packwerk
|
|
|
24
24
|
def initialize
|
|
25
25
|
@ruby_parser = T.let(nil, T.nilable(ParserInterface))
|
|
26
26
|
@erb_parser = T.let(nil, T.nilable(ParserInterface))
|
|
27
|
-
@erb_parser_class = T.let(nil, T.nilable(Class))
|
|
27
|
+
@erb_parser_class = T.let(nil, T.nilable(T::Class[T.anything]))
|
|
28
28
|
end
|
|
29
29
|
|
|
30
30
|
sig { params(path: String).returns(T.nilable(ParserInterface)) }
|
|
@@ -37,12 +37,12 @@ module Packwerk
|
|
|
37
37
|
end
|
|
38
38
|
end
|
|
39
39
|
|
|
40
|
-
sig { returns(Class) }
|
|
40
|
+
sig { returns(T::Class[T.anything]) }
|
|
41
41
|
def erb_parser_class
|
|
42
42
|
@erb_parser_class ||= Erb
|
|
43
43
|
end
|
|
44
44
|
|
|
45
|
-
sig { params(klass: T.nilable(Class)).void }
|
|
45
|
+
sig { params(klass: T.nilable(T::Class[T.anything])).void }
|
|
46
46
|
def erb_parser_class=(klass)
|
|
47
47
|
@erb_parser_class = klass
|
|
48
48
|
@erb_parser = nil
|
|
@@ -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 }
|
|
@@ -19,6 +19,13 @@ module Packwerk
|
|
|
19
19
|
super(builder)
|
|
20
20
|
super.diagnostics.all_errors_are_fatal = true
|
|
21
21
|
end
|
|
22
|
+
|
|
23
|
+
private
|
|
24
|
+
|
|
25
|
+
sig { params(error: Prism::ParseError).returns(T::Boolean) }
|
|
26
|
+
def valid_error?(error)
|
|
27
|
+
error.type != :invalid_yield
|
|
28
|
+
end
|
|
22
29
|
end
|
|
23
30
|
|
|
24
31
|
class TolerateInvalidUtf8Builder < Parser::Builders::Default
|
|
@@ -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
|
|
|
@@ -23,7 +23,7 @@ module Packwerk
|
|
|
23
23
|
.void
|
|
24
24
|
end
|
|
25
25
|
def initialize(reference:, violation_type:, message:, location: nil)
|
|
26
|
-
super(file: reference.relative_path, message: message, location: location)
|
|
26
|
+
super(file: T.must(reference.relative_path), message: message, location: location)
|
|
27
27
|
@reference = reference
|
|
28
28
|
@violation_type = violation_type
|
|
29
29
|
end
|
data/lib/packwerk/validator.rb
CHANGED
|
@@ -18,7 +18,7 @@ module Packwerk
|
|
|
18
18
|
class << self
|
|
19
19
|
extend T::Sig
|
|
20
20
|
|
|
21
|
-
sig { params(base: Class).void }
|
|
21
|
+
sig { params(base: T::Class[T.anything]).void }
|
|
22
22
|
def included(base)
|
|
23
23
|
validators << base
|
|
24
24
|
end
|
|
@@ -36,9 +36,9 @@ module Packwerk
|
|
|
36
36
|
require("packwerk/validators/dependency_validator")
|
|
37
37
|
end
|
|
38
38
|
|
|
39
|
-
sig { returns(T::Array[Class]) }
|
|
39
|
+
sig { returns(T::Array[T::Class[T.anything]]) }
|
|
40
40
|
def validators
|
|
41
|
-
@validators ||= T.let([], T.nilable(T::Array[Class]))
|
|
41
|
+
@validators ||= T.let([], T.nilable(T::Array[T::Class[T.anything]]))
|
|
42
42
|
end
|
|
43
43
|
end
|
|
44
44
|
|
data/lib/packwerk/version.rb
CHANGED