packwerk 1.0.2 → 1.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.
Files changed (120) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +14 -5
  3. data/.ruby-version +1 -1
  4. data/Gemfile +1 -1
  5. data/Gemfile.lock +129 -111
  6. data/README.md +8 -1
  7. data/USAGE.md +39 -17
  8. data/dev.yml +1 -1
  9. data/exe/packwerk +1 -1
  10. data/gemfiles/Gemfile-rails-6-0 +22 -0
  11. data/lib/packwerk.rb +73 -34
  12. data/lib/packwerk/application_load_paths.rb +3 -2
  13. data/lib/packwerk/application_validator.rb +85 -69
  14. data/lib/packwerk/association_inspector.rb +23 -11
  15. data/lib/packwerk/checker.rb +4 -7
  16. data/lib/packwerk/cli.rb +36 -93
  17. data/lib/packwerk/configuration.rb +10 -2
  18. data/lib/packwerk/const_node_inspector.rb +13 -14
  19. data/lib/packwerk/constant_discovery.rb +2 -0
  20. data/lib/packwerk/constant_name_inspector.rb +0 -1
  21. data/lib/packwerk/dependency_checker.rb +12 -17
  22. data/lib/packwerk/deprecated_references.rb +25 -8
  23. data/lib/packwerk/file_processor.rb +0 -4
  24. data/lib/packwerk/formatters/offenses_formatter.rb +43 -0
  25. data/lib/packwerk/formatters/progress_formatter.rb +9 -4
  26. data/lib/packwerk/generators/configuration_file.rb +0 -1
  27. data/lib/packwerk/inflector.rb +0 -2
  28. data/lib/packwerk/node.rb +9 -2
  29. data/lib/packwerk/node_processor.rb +15 -32
  30. data/lib/packwerk/node_processor_factory.rb +0 -5
  31. data/lib/packwerk/node_visitor.rb +1 -4
  32. data/lib/packwerk/offense.rb +2 -8
  33. data/lib/packwerk/offense_collection.rb +84 -0
  34. data/lib/packwerk/offenses_formatter.rb +15 -0
  35. data/lib/packwerk/output_style.rb +20 -0
  36. data/lib/packwerk/output_styles/coloured.rb +29 -0
  37. data/lib/packwerk/output_styles/plain.rb +26 -0
  38. data/lib/packwerk/package.rb +8 -0
  39. data/lib/packwerk/package_set.rb +8 -5
  40. data/lib/packwerk/parse_run.rb +104 -0
  41. data/lib/packwerk/parsed_constant_definitions.rb +2 -4
  42. data/lib/packwerk/parsers.rb +0 -2
  43. data/lib/packwerk/parsers/erb.rb +4 -2
  44. data/lib/packwerk/parsers/factory.rb +10 -3
  45. data/lib/packwerk/privacy_checker.rb +22 -17
  46. data/lib/packwerk/reference_extractor.rb +0 -8
  47. data/lib/packwerk/reference_offense.rb +49 -0
  48. data/lib/packwerk/result.rb +9 -0
  49. data/lib/packwerk/run_context.rb +4 -20
  50. data/lib/packwerk/sanity_checker.rb +1 -3
  51. data/lib/packwerk/spring_command.rb +1 -1
  52. data/lib/packwerk/version.rb +1 -1
  53. data/lib/packwerk/violation_type.rb +0 -2
  54. data/library.yml +1 -1
  55. data/packwerk.gemspec +1 -0
  56. data/service.yml +1 -4
  57. data/shipit.rubygems.yml +5 -1
  58. data/sorbet/rbi/gems/{actioncable@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → actioncable@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +56 -36
  59. data/sorbet/rbi/gems/{actionmailbox@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → actionmailbox@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +25 -28
  60. data/sorbet/rbi/gems/{actionmailer@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → actionmailer@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +43 -24
  61. data/sorbet/rbi/gems/{actionpack@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → actionpack@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +382 -284
  62. data/sorbet/rbi/gems/{actiontext@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → actiontext@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +76 -40
  63. data/sorbet/rbi/gems/{actionview@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → actionview@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +206 -195
  64. data/sorbet/rbi/gems/{activejob@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → activejob@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +64 -75
  65. data/sorbet/rbi/gems/{activemodel@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → activemodel@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +103 -56
  66. data/sorbet/rbi/gems/{activerecord@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → activerecord@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +1250 -898
  67. data/sorbet/rbi/gems/{activestorage@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → activestorage@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +92 -120
  68. data/sorbet/rbi/gems/{activesupport@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → activesupport@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +292 -193
  69. data/sorbet/rbi/gems/{ast@2.4.1.rbi → ast@2.4.2.rbi} +2 -1
  70. data/sorbet/rbi/gems/{better_html@1.0.15.rbi → better_html@1.0.16.rbi} +2 -2
  71. data/sorbet/rbi/gems/{concurrent-ruby@1.1.6.rbi → concurrent-ruby@1.1.8.rbi} +12 -9
  72. data/sorbet/rbi/gems/{erubi@1.9.0.rbi → erubi@1.10.0.rbi} +3 -1
  73. data/sorbet/rbi/gems/{i18n@1.8.2.rbi → i18n@1.8.10.rbi} +19 -52
  74. data/sorbet/rbi/gems/{loofah@2.5.0.rbi → loofah@2.9.0.rbi} +3 -1
  75. data/sorbet/rbi/gems/marcel@1.0.0.rbi +70 -0
  76. data/sorbet/rbi/gems/{mini_mime@1.0.2.rbi → mini_mime@1.0.3.rbi} +6 -6
  77. data/sorbet/rbi/gems/{mini_portile2@2.4.0.rbi → minitest-focus@1.2.1.rbi} +2 -2
  78. data/sorbet/rbi/gems/{minitest@5.14.0.rbi → minitest@5.14.4.rbi} +31 -29
  79. data/sorbet/rbi/gems/{mocha@1.11.2.rbi → mocha@1.12.0.rbi} +25 -36
  80. data/sorbet/rbi/gems/{nio4r@2.5.2.rbi → nio4r@2.5.7.rbi} +21 -20
  81. data/sorbet/rbi/gems/{nokogiri@1.10.9.rbi → nokogiri@1.11.2.rbi} +193 -154
  82. data/sorbet/rbi/gems/parallel@1.20.1.rbi +117 -0
  83. data/sorbet/rbi/gems/parlour@6.0.0.rbi +1272 -0
  84. data/sorbet/rbi/gems/{parser@2.7.1.4.rbi → parser@3.0.0.0.rbi} +287 -174
  85. data/sorbet/rbi/gems/{pry@0.13.1.rbi → pry@0.14.0.rbi} +1 -1
  86. data/sorbet/rbi/gems/racc@1.5.2.rbi +57 -0
  87. data/sorbet/rbi/gems/{rack@2.2.2.rbi → rack@2.2.3.rbi} +23 -35
  88. data/sorbet/rbi/gems/{rails@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → rails@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +1 -1
  89. data/sorbet/rbi/gems/{railties@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → railties@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +132 -121
  90. data/sorbet/rbi/gems/{rake@13.0.1.rbi → rake@13.0.3.rbi} +16 -20
  91. data/sorbet/rbi/gems/{parallel@1.19.1.rbi → regexp_parser@2.1.1.rbi} +2 -2
  92. data/sorbet/rbi/gems/rubocop-ast@1.4.1.rbi +8 -0
  93. data/sorbet/rbi/gems/{rubocop-performance@1.5.2.rbi → rubocop-performance@1.10.2.rbi} +1 -1
  94. data/sorbet/rbi/gems/{rubocop-shopify@1.0.2.rbi → rubocop-shopify@2.0.1.rbi} +1 -1
  95. data/sorbet/rbi/gems/{rubocop-sorbet@0.3.7.rbi → rubocop-sorbet@0.6.1.rbi} +1 -1
  96. data/sorbet/rbi/gems/{rubocop@0.82.0.rbi → rubocop@1.12.0.rbi} +1 -1
  97. data/sorbet/rbi/gems/{ruby-progressbar@1.10.1.rbi → ruby-progressbar@1.11.0.rbi} +1 -1
  98. data/sorbet/rbi/gems/spoom@1.1.0.rbi +1061 -0
  99. data/sorbet/rbi/gems/{spring@2.1.0.rbi → spring@2.1.1.rbi} +7 -7
  100. data/sorbet/rbi/gems/{sprockets-rails@3.2.1.rbi → sprockets-rails@3.2.2.rbi} +88 -68
  101. data/sorbet/rbi/gems/{sprockets@4.0.0.rbi → sprockets@4.0.2.rbi} +8 -7
  102. data/sorbet/rbi/gems/{tapioca@0.4.5.rbi → tapioca@0.4.19.rbi} +109 -24
  103. data/sorbet/rbi/gems/{thor@1.0.1.rbi → thor@1.1.0.rbi} +16 -15
  104. data/sorbet/rbi/gems/{tzinfo@2.0.2.rbi → tzinfo@2.0.4.rbi} +21 -2
  105. data/sorbet/rbi/gems/{unicode-display_width@1.7.0.rbi → unicode-display_width@2.0.0.rbi} +1 -1
  106. data/sorbet/rbi/gems/{websocket-driver@0.7.1.rbi → websocket-driver@0.7.3.rbi} +29 -29
  107. data/sorbet/rbi/gems/{websocket-extensions@0.1.4.rbi → websocket-extensions@0.1.5.rbi} +2 -2
  108. data/sorbet/rbi/gems/zeitwerk@2.4.2.rbi +177 -0
  109. data/sorbet/tapioca/require.rb +1 -0
  110. metadata +78 -57
  111. data/lib/packwerk/checking_deprecated_references.rb +0 -40
  112. data/lib/packwerk/output_styles.rb +0 -41
  113. data/lib/packwerk/reference_lister.rb +0 -23
  114. data/lib/packwerk/updating_deprecated_references.rb +0 -51
  115. data/sorbet/rbi/gems/jaro_winkler@1.5.4.rbi +0 -8
  116. data/sorbet/rbi/gems/marcel@0.3.3.rbi +0 -30
  117. data/sorbet/rbi/gems/mimemagic@0.3.5.rbi +0 -47
  118. data/sorbet/rbi/gems/parlour@4.0.1.rbi +0 -561
  119. data/sorbet/rbi/gems/spoom@1.0.4.rbi +0 -418
  120. data/sorbet/rbi/gems/zeitwerk@2.3.0.rbi +0 -8
@@ -1,6 +1,6 @@
1
1
  # DO NOT EDIT MANUALLY
2
2
  # This is an autogenerated file for types exported from the `unicode-display_width` gem.
3
- # Please instead update this file by running `dev typecheck update`.
3
+ # Please instead update this file by running `bin/tapioca sync`.
4
4
 
5
5
  # typed: true
6
6
 
@@ -1,6 +1,6 @@
1
1
  # DO NOT EDIT MANUALLY
2
2
  # This is an autogenerated file for types exported from the `websocket-driver` gem.
3
- # Please instead update this file by running `dev typecheck update`.
3
+ # Please instead update this file by running `bin/tapioca sync`.
4
4
 
5
5
  # typed: true
6
6
 
@@ -73,10 +73,10 @@ class WebSocket::Driver::CloseEvent < ::Struct
73
73
  def reason=(_); end
74
74
 
75
75
  class << self
76
- def [](*_); end
76
+ def [](*_arg0); end
77
77
  def inspect; end
78
78
  def members; end
79
- def new(*_); end
79
+ def new(*_arg0); end
80
80
  end
81
81
  end
82
82
 
@@ -85,10 +85,10 @@ end
85
85
 
86
86
  class WebSocket::Driver::ConnectEvent < ::Struct
87
87
  class << self
88
- def [](*_); end
88
+ def [](*_arg0); end
89
89
  def inspect; end
90
90
  def members; end
91
- def new(*_); end
91
+ def new(*_arg0); end
92
92
  end
93
93
  end
94
94
 
@@ -192,25 +192,25 @@ WebSocket::Driver::Hybi::FIN = T.let(T.unsafe(nil), Integer)
192
192
 
193
193
  class WebSocket::Driver::Hybi::Frame
194
194
  def final; end
195
- def final=(_); end
195
+ def final=(_arg0); end
196
196
  def length; end
197
- def length=(_); end
197
+ def length=(_arg0); end
198
198
  def length_bytes; end
199
- def length_bytes=(_); end
199
+ def length_bytes=(_arg0); end
200
200
  def masked; end
201
- def masked=(_); end
201
+ def masked=(_arg0); end
202
202
  def masking_key; end
203
- def masking_key=(_); end
203
+ def masking_key=(_arg0); end
204
204
  def opcode; end
205
- def opcode=(_); end
205
+ def opcode=(_arg0); end
206
206
  def payload; end
207
- def payload=(_); end
207
+ def payload=(_arg0); end
208
208
  def rsv1; end
209
- def rsv1=(_); end
209
+ def rsv1=(_arg0); end
210
210
  def rsv2; end
211
- def rsv2=(_); end
211
+ def rsv2=(_arg0); end
212
212
  def rsv3; end
213
- def rsv3=(_); end
213
+ def rsv3=(_arg0); end
214
214
  end
215
215
 
216
216
  WebSocket::Driver::Hybi::GUID = T.let(T.unsafe(nil), String)
@@ -230,15 +230,15 @@ class WebSocket::Driver::Hybi::Message
230
230
 
231
231
  def <<(frame); end
232
232
  def data; end
233
- def data=(_); end
233
+ def data=(_arg0); end
234
234
  def opcode; end
235
- def opcode=(_); end
235
+ def opcode=(_arg0); end
236
236
  def rsv1; end
237
- def rsv1=(_); end
237
+ def rsv1=(_arg0); end
238
238
  def rsv2; end
239
- def rsv2=(_); end
239
+ def rsv2=(_arg0); end
240
240
  def rsv3; end
241
- def rsv3=(_); end
241
+ def rsv3=(_arg0); end
242
242
  end
243
243
 
244
244
  WebSocket::Driver::Hybi::OPCODE = T.let(T.unsafe(nil), Integer)
@@ -266,19 +266,19 @@ class WebSocket::Driver::MessageEvent < ::Struct
266
266
  def data=(_); end
267
267
 
268
268
  class << self
269
- def [](*_); end
269
+ def [](*_arg0); end
270
270
  def inspect; end
271
271
  def members; end
272
- def new(*_); end
272
+ def new(*_arg0); end
273
273
  end
274
274
  end
275
275
 
276
276
  class WebSocket::Driver::OpenEvent < ::Struct
277
277
  class << self
278
- def [](*_); end
278
+ def [](*_arg0); end
279
279
  def inspect; end
280
280
  def members; end
281
- def new(*_); end
281
+ def new(*_arg0); end
282
282
  end
283
283
  end
284
284
 
@@ -287,10 +287,10 @@ class WebSocket::Driver::PingEvent < ::Struct
287
287
  def data=(_); end
288
288
 
289
289
  class << self
290
- def [](*_); end
290
+ def [](*_arg0); end
291
291
  def inspect; end
292
292
  def members; end
293
- def new(*_); end
293
+ def new(*_arg0); end
294
294
  end
295
295
  end
296
296
 
@@ -299,10 +299,10 @@ class WebSocket::Driver::PongEvent < ::Struct
299
299
  def data=(_); end
300
300
 
301
301
  class << self
302
- def [](*_); end
302
+ def [](*_arg0); end
303
303
  def inspect; end
304
304
  def members; end
305
- def new(*_); end
305
+ def new(*_arg0); end
306
306
  end
307
307
  end
308
308
 
@@ -433,6 +433,6 @@ WebSocket::HTTP::Response::STATUS_LINE = T.let(T.unsafe(nil), Regexp)
433
433
 
434
434
  module WebSocket::Mask
435
435
  class << self
436
- def mask(_, _); end
436
+ def mask(_arg0, _arg1); end
437
437
  end
438
438
  end
@@ -1,6 +1,6 @@
1
1
  # DO NOT EDIT MANUALLY
2
2
  # This is an autogenerated file for types exported from the `websocket-extensions` gem.
3
- # Please instead update this file by running `dev typecheck update`.
3
+ # Please instead update this file by running `bin/tapioca sync`.
4
4
 
5
5
  # typed: true
6
6
 
@@ -57,7 +57,7 @@ WebSocket::Extensions::Parser::TOKEN = T.let(T.unsafe(nil), Regexp)
57
57
 
58
58
  module WebSocket::Mask
59
59
  class << self
60
- def mask(_, _); end
60
+ def mask(_arg0, _arg1); end
61
61
  end
62
62
  end
63
63
 
@@ -0,0 +1,177 @@
1
+ # DO NOT EDIT MANUALLY
2
+ # This is an autogenerated file for types exported from the `zeitwerk` gem.
3
+ # Please instead update this file by running `bin/tapioca sync`.
4
+
5
+ # typed: true
6
+
7
+ module Kernel
8
+
9
+ private
10
+
11
+ def require(path); end
12
+
13
+ class << self
14
+ def require(path); end
15
+ end
16
+ end
17
+
18
+ module Zeitwerk
19
+ end
20
+
21
+ class Zeitwerk::Error < ::StandardError
22
+ end
23
+
24
+ module Zeitwerk::ExplicitNamespace
25
+ extend(::Zeitwerk::RealModName)
26
+
27
+ class << self
28
+ def cpaths; end
29
+ def mutex; end
30
+ def register(cpath, loader); end
31
+ def tracer; end
32
+ def unregister(loader); end
33
+
34
+ private
35
+
36
+ def disable_tracer_if_unneeded; end
37
+ def tracepoint_class_callback(event); end
38
+ end
39
+ end
40
+
41
+ class Zeitwerk::GemInflector < ::Zeitwerk::Inflector
42
+ def initialize(root_file); end
43
+
44
+ def camelize(basename, abspath); end
45
+ end
46
+
47
+ class Zeitwerk::Inflector
48
+ def camelize(basename, _abspath); end
49
+ def inflect(inflections); end
50
+
51
+ private
52
+
53
+ def overrides; end
54
+ end
55
+
56
+ class Zeitwerk::Loader
57
+ include(::Zeitwerk::RealModName)
58
+ include(::Zeitwerk::Loader::Callbacks)
59
+
60
+ def initialize; end
61
+
62
+ def autoloaded_dirs; end
63
+ def autoloads; end
64
+ def collapse(*glob_patterns); end
65
+ def collapse_dirs; end
66
+ def collapse_glob_patterns; end
67
+ def dirs; end
68
+ def do_not_eager_load(*paths); end
69
+ def eager_load; end
70
+ def eager_load_exclusions; end
71
+ def enable_reloading; end
72
+ def ignore(*glob_patterns); end
73
+ def ignored_glob_patterns; end
74
+ def ignored_paths; end
75
+ def inflector; end
76
+ def inflector=(_arg0); end
77
+ def lazy_subdirs; end
78
+ def log!; end
79
+ def logger; end
80
+ def logger=(_arg0); end
81
+ def manages?(dir); end
82
+ def mutex; end
83
+ def mutex2; end
84
+ def on_load(cpath, &block); end
85
+ def on_load_callbacks; end
86
+ def preload(*paths); end
87
+ def preloads; end
88
+ def push_dir(path, namespace: T.unsafe(nil)); end
89
+ def reload; end
90
+ def reloading_enabled?; end
91
+ def root_dirs; end
92
+ def setup; end
93
+ def tag; end
94
+ def tag=(tag); end
95
+ def to_unload; end
96
+ def unload; end
97
+ def unloadable_cpath?(cpath); end
98
+ def unloadable_cpaths; end
99
+
100
+ private
101
+
102
+ def actual_root_dirs; end
103
+ def autoload_file(parent, cname, file); end
104
+ def autoload_for?(parent, cname); end
105
+ def autoload_subdir(parent, cname, subdir); end
106
+ def cdef?(parent, cname); end
107
+ def cpath(parent, cname); end
108
+ def dir?(path); end
109
+ def do_preload; end
110
+ def do_preload_abspath(abspath); end
111
+ def do_preload_dir(dir); end
112
+ def do_preload_file(file); end
113
+ def expand_glob_patterns(glob_patterns); end
114
+ def expand_paths(paths); end
115
+ def log(message); end
116
+ def ls(dir); end
117
+ def promote_namespace_from_implicit_to_explicit(dir:, file:, parent:, cname:); end
118
+ def raise_if_conflicting_directory(dir); end
119
+ def recompute_collapse_dirs; end
120
+ def recompute_ignored_paths; end
121
+ def register_explicit_namespace(cpath); end
122
+ def ruby?(path); end
123
+ def set_autoload(parent, cname, abspath); end
124
+ def set_autoloads_in_dir(dir, parent); end
125
+ def strict_autoload_path(parent, cname); end
126
+ def unload_autoload(parent, cname); end
127
+ def unload_cref(parent, cname); end
128
+
129
+ class << self
130
+ def all_dirs; end
131
+ def default_logger; end
132
+ def default_logger=(_arg0); end
133
+ def eager_load_all; end
134
+ def for_gem; end
135
+ def mutex; end
136
+ def mutex=(_arg0); end
137
+ end
138
+ end
139
+
140
+ module Zeitwerk::Loader::Callbacks
141
+ include(::Zeitwerk::RealModName)
142
+
143
+ def on_dir_autoloaded(dir); end
144
+ def on_file_autoloaded(file); end
145
+ def on_namespace_loaded(namespace); end
146
+
147
+ private
148
+
149
+ def run_on_load_callbacks(cpath); end
150
+ end
151
+
152
+ class Zeitwerk::NameError < ::NameError
153
+ end
154
+
155
+ module Zeitwerk::RealModName
156
+ def real_mod_name(mod); end
157
+ end
158
+
159
+ module Zeitwerk::Registry
160
+ class << self
161
+ def autoloads; end
162
+ def inception?(cpath); end
163
+ def inceptions; end
164
+ def loader_for(path); end
165
+ def loader_for_gem(root_file); end
166
+ def loaders; end
167
+ def loaders_managing_gems; end
168
+ def on_unload(loader); end
169
+ def register_autoload(loader, realpath); end
170
+ def register_inception(cpath, realpath, loader); end
171
+ def register_loader(loader); end
172
+ def unregister_autoload(realpath); end
173
+ end
174
+ end
175
+
176
+ class Zeitwerk::ReloadingDisabledError < ::Zeitwerk::Error
177
+ end
@@ -13,6 +13,7 @@ require "better_html/parser"
13
13
  require "constant_resolver"
14
14
  require "minitest/autorun"
15
15
  require "mocha/minitest"
16
+ require "parallel"
16
17
  require "parser"
17
18
  require "parser/ast/node"
18
19
  require "parser/current"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: packwerk
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shopify Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-11-16 00:00:00.000000000 Z
11
+ date: 2021-06-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: parallel
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: sorbet-runtime
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -182,12 +196,12 @@ files:
182
196
  - dev.yml
183
197
  - docs/cohesion.png
184
198
  - exe/packwerk
199
+ - gemfiles/Gemfile-rails-6-0
185
200
  - lib/packwerk.rb
186
201
  - lib/packwerk/application_load_paths.rb
187
202
  - lib/packwerk/application_validator.rb
188
203
  - lib/packwerk/association_inspector.rb
189
204
  - lib/packwerk/checker.rb
190
- - lib/packwerk/checking_deprecated_references.rb
191
205
  - lib/packwerk/cli.rb
192
206
  - lib/packwerk/configuration.rb
193
207
  - lib/packwerk/const_node_inspector.rb
@@ -197,6 +211,7 @@ files:
197
211
  - lib/packwerk/deprecated_references.rb
198
212
  - lib/packwerk/file_processor.rb
199
213
  - lib/packwerk/files_for_processing.rb
214
+ - lib/packwerk/formatters/offenses_formatter.rb
200
215
  - lib/packwerk/formatters/progress_formatter.rb
201
216
  - lib/packwerk/generators/application_validation.rb
202
217
  - lib/packwerk/generators/configuration_file.rb
@@ -216,9 +231,14 @@ files:
216
231
  - lib/packwerk/node_processor_factory.rb
217
232
  - lib/packwerk/node_visitor.rb
218
233
  - lib/packwerk/offense.rb
219
- - lib/packwerk/output_styles.rb
234
+ - lib/packwerk/offense_collection.rb
235
+ - lib/packwerk/offenses_formatter.rb
236
+ - lib/packwerk/output_style.rb
237
+ - lib/packwerk/output_styles/coloured.rb
238
+ - lib/packwerk/output_styles/plain.rb
220
239
  - lib/packwerk/package.rb
221
240
  - lib/packwerk/package_set.rb
241
+ - lib/packwerk/parse_run.rb
222
242
  - lib/packwerk/parsed_constant_definitions.rb
223
243
  - lib/packwerk/parsers.rb
224
244
  - lib/packwerk/parsers/erb.rb
@@ -227,11 +247,11 @@ files:
227
247
  - lib/packwerk/privacy_checker.rb
228
248
  - lib/packwerk/reference.rb
229
249
  - lib/packwerk/reference_extractor.rb
230
- - lib/packwerk/reference_lister.rb
250
+ - lib/packwerk/reference_offense.rb
251
+ - lib/packwerk/result.rb
231
252
  - lib/packwerk/run_context.rb
232
253
  - lib/packwerk/sanity_checker.rb
233
254
  - lib/packwerk/spring_command.rb
234
- - lib/packwerk/updating_deprecated_references.rb
235
255
  - lib/packwerk/version.rb
236
256
  - lib/packwerk/violation_type.rb
237
257
  - library.yml
@@ -239,75 +259,76 @@ files:
239
259
  - service.yml
240
260
  - shipit.rubygems.yml
241
261
  - sorbet/config
242
- - sorbet/rbi/gems/actioncable@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi
243
- - sorbet/rbi/gems/actionmailbox@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi
244
- - sorbet/rbi/gems/actionmailer@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi
245
- - sorbet/rbi/gems/actionpack@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi
246
- - sorbet/rbi/gems/actiontext@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi
247
- - sorbet/rbi/gems/actionview@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi
248
- - sorbet/rbi/gems/activejob@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi
249
- - sorbet/rbi/gems/activemodel@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi
250
- - sorbet/rbi/gems/activerecord@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi
251
- - sorbet/rbi/gems/activestorage@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi
252
- - sorbet/rbi/gems/activesupport@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi
253
- - sorbet/rbi/gems/ast@2.4.1.rbi
254
- - sorbet/rbi/gems/better_html@1.0.15.rbi
262
+ - sorbet/rbi/gems/actioncable@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi
263
+ - sorbet/rbi/gems/actionmailbox@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi
264
+ - sorbet/rbi/gems/actionmailer@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi
265
+ - sorbet/rbi/gems/actionpack@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi
266
+ - sorbet/rbi/gems/actiontext@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi
267
+ - sorbet/rbi/gems/actionview@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi
268
+ - sorbet/rbi/gems/activejob@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi
269
+ - sorbet/rbi/gems/activemodel@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi
270
+ - sorbet/rbi/gems/activerecord@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi
271
+ - sorbet/rbi/gems/activestorage@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi
272
+ - sorbet/rbi/gems/activesupport@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi
273
+ - sorbet/rbi/gems/ast@2.4.2.rbi
274
+ - sorbet/rbi/gems/better_html@1.0.16.rbi
255
275
  - sorbet/rbi/gems/builder@3.2.4.rbi
256
276
  - sorbet/rbi/gems/byebug@11.1.3.rbi
257
277
  - sorbet/rbi/gems/coderay@1.1.3.rbi
258
278
  - sorbet/rbi/gems/colorize@0.8.1.rbi
259
279
  - sorbet/rbi/gems/commander@4.5.2.rbi
260
- - sorbet/rbi/gems/concurrent-ruby@1.1.6.rbi
280
+ - sorbet/rbi/gems/concurrent-ruby@1.1.8.rbi
261
281
  - sorbet/rbi/gems/constant_resolver@0.1.5.rbi
262
282
  - sorbet/rbi/gems/crass@1.0.6.rbi
263
- - sorbet/rbi/gems/erubi@1.9.0.rbi
283
+ - sorbet/rbi/gems/erubi@1.10.0.rbi
264
284
  - sorbet/rbi/gems/globalid@0.4.2.rbi
265
285
  - sorbet/rbi/gems/highline@2.0.3.rbi
266
286
  - sorbet/rbi/gems/html_tokenizer@0.0.7.rbi
267
- - sorbet/rbi/gems/i18n@1.8.2.rbi
268
- - sorbet/rbi/gems/jaro_winkler@1.5.4.rbi
269
- - sorbet/rbi/gems/loofah@2.5.0.rbi
287
+ - sorbet/rbi/gems/i18n@1.8.10.rbi
288
+ - sorbet/rbi/gems/loofah@2.9.0.rbi
270
289
  - sorbet/rbi/gems/m@1.5.1.rbi
271
290
  - sorbet/rbi/gems/mail@2.7.1.rbi
272
- - sorbet/rbi/gems/marcel@0.3.3.rbi
291
+ - sorbet/rbi/gems/marcel@1.0.0.rbi
273
292
  - sorbet/rbi/gems/method_source@1.0.0.rbi
274
- - sorbet/rbi/gems/mimemagic@0.3.5.rbi
275
- - sorbet/rbi/gems/mini_mime@1.0.2.rbi
276
- - sorbet/rbi/gems/mini_portile2@2.4.0.rbi
277
- - sorbet/rbi/gems/minitest@5.14.0.rbi
278
- - sorbet/rbi/gems/mocha@1.11.2.rbi
279
- - sorbet/rbi/gems/nio4r@2.5.2.rbi
280
- - sorbet/rbi/gems/nokogiri@1.10.9.rbi
281
- - sorbet/rbi/gems/parallel@1.19.1.rbi
282
- - sorbet/rbi/gems/parlour@4.0.1.rbi
283
- - sorbet/rbi/gems/parser@2.7.1.4.rbi
284
- - sorbet/rbi/gems/pry@0.13.1.rbi
293
+ - sorbet/rbi/gems/mini_mime@1.0.3.rbi
294
+ - sorbet/rbi/gems/minitest-focus@1.2.1.rbi
295
+ - sorbet/rbi/gems/minitest@5.14.4.rbi
296
+ - sorbet/rbi/gems/mocha@1.12.0.rbi
297
+ - sorbet/rbi/gems/nio4r@2.5.7.rbi
298
+ - sorbet/rbi/gems/nokogiri@1.11.2.rbi
299
+ - sorbet/rbi/gems/parallel@1.20.1.rbi
300
+ - sorbet/rbi/gems/parlour@6.0.0.rbi
301
+ - sorbet/rbi/gems/parser@3.0.0.0.rbi
302
+ - sorbet/rbi/gems/pry@0.14.0.rbi
303
+ - sorbet/rbi/gems/racc@1.5.2.rbi
285
304
  - sorbet/rbi/gems/rack-test@1.1.0.rbi
286
- - sorbet/rbi/gems/rack@2.2.2.rbi
305
+ - sorbet/rbi/gems/rack@2.2.3.rbi
287
306
  - sorbet/rbi/gems/rails-dom-testing@2.0.3.rbi
288
307
  - sorbet/rbi/gems/rails-html-sanitizer@1.3.0.rbi
289
- - sorbet/rbi/gems/rails@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi
290
- - sorbet/rbi/gems/railties@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi
308
+ - sorbet/rbi/gems/rails@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi
309
+ - sorbet/rbi/gems/railties@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi
291
310
  - sorbet/rbi/gems/rainbow@3.0.0.rbi
292
- - sorbet/rbi/gems/rake@13.0.1.rbi
311
+ - sorbet/rbi/gems/rake@13.0.3.rbi
312
+ - sorbet/rbi/gems/regexp_parser@2.1.1.rbi
293
313
  - sorbet/rbi/gems/rexml@3.2.4.rbi
294
- - sorbet/rbi/gems/rubocop-performance@1.5.2.rbi
295
- - sorbet/rbi/gems/rubocop-shopify@1.0.2.rbi
296
- - sorbet/rbi/gems/rubocop-sorbet@0.3.7.rbi
297
- - sorbet/rbi/gems/rubocop@0.82.0.rbi
298
- - sorbet/rbi/gems/ruby-progressbar@1.10.1.rbi
314
+ - sorbet/rbi/gems/rubocop-ast@1.4.1.rbi
315
+ - sorbet/rbi/gems/rubocop-performance@1.10.2.rbi
316
+ - sorbet/rbi/gems/rubocop-shopify@2.0.1.rbi
317
+ - sorbet/rbi/gems/rubocop-sorbet@0.6.1.rbi
318
+ - sorbet/rbi/gems/rubocop@1.12.0.rbi
319
+ - sorbet/rbi/gems/ruby-progressbar@1.11.0.rbi
299
320
  - sorbet/rbi/gems/smart_properties@1.15.0.rbi
300
- - sorbet/rbi/gems/spoom@1.0.4.rbi
301
- - sorbet/rbi/gems/spring@2.1.0.rbi
302
- - sorbet/rbi/gems/sprockets-rails@3.2.1.rbi
303
- - sorbet/rbi/gems/sprockets@4.0.0.rbi
304
- - sorbet/rbi/gems/tapioca@0.4.5.rbi
305
- - sorbet/rbi/gems/thor@1.0.1.rbi
306
- - sorbet/rbi/gems/tzinfo@2.0.2.rbi
307
- - sorbet/rbi/gems/unicode-display_width@1.7.0.rbi
308
- - sorbet/rbi/gems/websocket-driver@0.7.1.rbi
309
- - sorbet/rbi/gems/websocket-extensions@0.1.4.rbi
310
- - sorbet/rbi/gems/zeitwerk@2.3.0.rbi
321
+ - sorbet/rbi/gems/spoom@1.1.0.rbi
322
+ - sorbet/rbi/gems/spring@2.1.1.rbi
323
+ - sorbet/rbi/gems/sprockets-rails@3.2.2.rbi
324
+ - sorbet/rbi/gems/sprockets@4.0.2.rbi
325
+ - sorbet/rbi/gems/tapioca@0.4.19.rbi
326
+ - sorbet/rbi/gems/thor@1.1.0.rbi
327
+ - sorbet/rbi/gems/tzinfo@2.0.4.rbi
328
+ - sorbet/rbi/gems/unicode-display_width@2.0.0.rbi
329
+ - sorbet/rbi/gems/websocket-driver@0.7.3.rbi
330
+ - sorbet/rbi/gems/websocket-extensions@0.1.5.rbi
331
+ - sorbet/rbi/gems/zeitwerk@2.4.2.rbi
311
332
  - sorbet/tapioca/require.rb
312
333
  homepage: https://github.com/Shopify/packwerk
313
334
  licenses:
@@ -332,7 +353,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
332
353
  - !ruby/object:Gem::Version
333
354
  version: '0'
334
355
  requirements: []
335
- rubygems_version: 3.0.3
356
+ rubygems_version: 3.2.17
336
357
  signing_key:
337
358
  specification_version: 4
338
359
  summary: Packages for applications based on the zeitwerk autoloader