packwerk 1.1.0 → 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 (124) 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 +17 -16
  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/application_load_paths.rb +3 -2
  12. data/lib/packwerk/application_validator.rb +83 -67
  13. data/lib/packwerk/association_inspector.rb +23 -11
  14. data/lib/packwerk/checker.rb +4 -7
  15. data/lib/packwerk/cli.rb +32 -100
  16. data/lib/packwerk/configuration.rb +10 -2
  17. data/lib/packwerk/const_node_inspector.rb +13 -14
  18. data/lib/packwerk/constant_discovery.rb +2 -0
  19. data/lib/packwerk/constant_name_inspector.rb +0 -1
  20. data/lib/packwerk/dependency_checker.rb +12 -17
  21. data/lib/packwerk/deprecated_references.rb +7 -9
  22. data/lib/packwerk/file_processor.rb +0 -4
  23. data/lib/packwerk/formatters/offenses_formatter.rb +43 -0
  24. data/lib/packwerk/formatters/progress_formatter.rb +9 -4
  25. data/lib/packwerk/generators/configuration_file.rb +0 -1
  26. data/lib/packwerk/inflector.rb +0 -2
  27. data/lib/packwerk/node.rb +9 -2
  28. data/lib/packwerk/node_processor.rb +15 -32
  29. data/lib/packwerk/node_processor_factory.rb +0 -5
  30. data/lib/packwerk/node_visitor.rb +1 -4
  31. data/lib/packwerk/offense.rb +2 -8
  32. data/lib/packwerk/offense_collection.rb +84 -0
  33. data/lib/packwerk/offenses_formatter.rb +15 -0
  34. data/lib/packwerk/output_style.rb +20 -0
  35. data/lib/packwerk/output_styles/coloured.rb +29 -0
  36. data/lib/packwerk/output_styles/plain.rb +26 -0
  37. data/lib/packwerk/package.rb +8 -0
  38. data/lib/packwerk/package_set.rb +2 -3
  39. data/lib/packwerk/parse_run.rb +104 -0
  40. data/lib/packwerk/parsed_constant_definitions.rb +2 -4
  41. data/lib/packwerk/parsers/erb.rb +0 -2
  42. data/lib/packwerk/parsers/factory.rb +1 -3
  43. data/lib/packwerk/parsers.rb +0 -2
  44. data/lib/packwerk/privacy_checker.rb +22 -17
  45. data/lib/packwerk/reference_extractor.rb +0 -8
  46. data/lib/packwerk/reference_offense.rb +49 -0
  47. data/lib/packwerk/result.rb +9 -0
  48. data/lib/packwerk/run_context.rb +4 -21
  49. data/lib/packwerk/sanity_checker.rb +1 -3
  50. data/lib/packwerk/spring_command.rb +1 -1
  51. data/lib/packwerk/version.rb +1 -1
  52. data/lib/packwerk/violation_type.rb +0 -2
  53. data/lib/packwerk.rb +73 -34
  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 -61
  111. data/lib/packwerk/cache_deprecated_references.rb +0 -47
  112. data/lib/packwerk/checking_deprecated_references.rb +0 -40
  113. data/lib/packwerk/commands/detect_stale_violations_command.rb +0 -63
  114. data/lib/packwerk/commands/offense_progress_marker.rb +0 -24
  115. data/lib/packwerk/detect_stale_deprecated_references.rb +0 -14
  116. data/lib/packwerk/output_styles.rb +0 -41
  117. data/lib/packwerk/reference_lister.rb +0 -23
  118. data/lib/packwerk/updating_deprecated_references.rb +0 -14
  119. data/sorbet/rbi/gems/jaro_winkler@1.5.4.rbi +0 -8
  120. data/sorbet/rbi/gems/marcel@0.3.3.rbi +0 -30
  121. data/sorbet/rbi/gems/mimemagic@0.3.5.rbi +0 -47
  122. data/sorbet/rbi/gems/parlour@4.0.1.rbi +0 -561
  123. data/sorbet/rbi/gems/spoom@1.0.4.rbi +0 -418
  124. data/sorbet/rbi/gems/zeitwerk@2.3.0.rbi +0 -8
@@ -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.1.0
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-24 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,25 +196,22 @@ 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
- - lib/packwerk/cache_deprecated_references.rb
190
204
  - lib/packwerk/checker.rb
191
- - lib/packwerk/checking_deprecated_references.rb
192
205
  - lib/packwerk/cli.rb
193
- - lib/packwerk/commands/detect_stale_violations_command.rb
194
- - lib/packwerk/commands/offense_progress_marker.rb
195
206
  - lib/packwerk/configuration.rb
196
207
  - lib/packwerk/const_node_inspector.rb
197
208
  - lib/packwerk/constant_discovery.rb
198
209
  - lib/packwerk/constant_name_inspector.rb
199
210
  - lib/packwerk/dependency_checker.rb
200
211
  - lib/packwerk/deprecated_references.rb
201
- - lib/packwerk/detect_stale_deprecated_references.rb
202
212
  - lib/packwerk/file_processor.rb
203
213
  - lib/packwerk/files_for_processing.rb
214
+ - lib/packwerk/formatters/offenses_formatter.rb
204
215
  - lib/packwerk/formatters/progress_formatter.rb
205
216
  - lib/packwerk/generators/application_validation.rb
206
217
  - lib/packwerk/generators/configuration_file.rb
@@ -220,9 +231,14 @@ files:
220
231
  - lib/packwerk/node_processor_factory.rb
221
232
  - lib/packwerk/node_visitor.rb
222
233
  - lib/packwerk/offense.rb
223
- - 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
224
239
  - lib/packwerk/package.rb
225
240
  - lib/packwerk/package_set.rb
241
+ - lib/packwerk/parse_run.rb
226
242
  - lib/packwerk/parsed_constant_definitions.rb
227
243
  - lib/packwerk/parsers.rb
228
244
  - lib/packwerk/parsers/erb.rb
@@ -231,11 +247,11 @@ files:
231
247
  - lib/packwerk/privacy_checker.rb
232
248
  - lib/packwerk/reference.rb
233
249
  - lib/packwerk/reference_extractor.rb
234
- - lib/packwerk/reference_lister.rb
250
+ - lib/packwerk/reference_offense.rb
251
+ - lib/packwerk/result.rb
235
252
  - lib/packwerk/run_context.rb
236
253
  - lib/packwerk/sanity_checker.rb
237
254
  - lib/packwerk/spring_command.rb
238
- - lib/packwerk/updating_deprecated_references.rb
239
255
  - lib/packwerk/version.rb
240
256
  - lib/packwerk/violation_type.rb
241
257
  - library.yml
@@ -243,75 +259,76 @@ files:
243
259
  - service.yml
244
260
  - shipit.rubygems.yml
245
261
  - sorbet/config
246
- - sorbet/rbi/gems/actioncable@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi
247
- - sorbet/rbi/gems/actionmailbox@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi
248
- - sorbet/rbi/gems/actionmailer@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi
249
- - sorbet/rbi/gems/actionpack@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi
250
- - sorbet/rbi/gems/actiontext@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi
251
- - sorbet/rbi/gems/actionview@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi
252
- - sorbet/rbi/gems/activejob@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi
253
- - sorbet/rbi/gems/activemodel@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi
254
- - sorbet/rbi/gems/activerecord@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi
255
- - sorbet/rbi/gems/activestorage@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi
256
- - sorbet/rbi/gems/activesupport@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi
257
- - sorbet/rbi/gems/ast@2.4.1.rbi
258
- - 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
259
275
  - sorbet/rbi/gems/builder@3.2.4.rbi
260
276
  - sorbet/rbi/gems/byebug@11.1.3.rbi
261
277
  - sorbet/rbi/gems/coderay@1.1.3.rbi
262
278
  - sorbet/rbi/gems/colorize@0.8.1.rbi
263
279
  - sorbet/rbi/gems/commander@4.5.2.rbi
264
- - sorbet/rbi/gems/concurrent-ruby@1.1.6.rbi
280
+ - sorbet/rbi/gems/concurrent-ruby@1.1.8.rbi
265
281
  - sorbet/rbi/gems/constant_resolver@0.1.5.rbi
266
282
  - sorbet/rbi/gems/crass@1.0.6.rbi
267
- - sorbet/rbi/gems/erubi@1.9.0.rbi
283
+ - sorbet/rbi/gems/erubi@1.10.0.rbi
268
284
  - sorbet/rbi/gems/globalid@0.4.2.rbi
269
285
  - sorbet/rbi/gems/highline@2.0.3.rbi
270
286
  - sorbet/rbi/gems/html_tokenizer@0.0.7.rbi
271
- - sorbet/rbi/gems/i18n@1.8.2.rbi
272
- - sorbet/rbi/gems/jaro_winkler@1.5.4.rbi
273
- - 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
274
289
  - sorbet/rbi/gems/m@1.5.1.rbi
275
290
  - sorbet/rbi/gems/mail@2.7.1.rbi
276
- - sorbet/rbi/gems/marcel@0.3.3.rbi
291
+ - sorbet/rbi/gems/marcel@1.0.0.rbi
277
292
  - sorbet/rbi/gems/method_source@1.0.0.rbi
278
- - sorbet/rbi/gems/mimemagic@0.3.5.rbi
279
- - sorbet/rbi/gems/mini_mime@1.0.2.rbi
280
- - sorbet/rbi/gems/mini_portile2@2.4.0.rbi
281
- - sorbet/rbi/gems/minitest@5.14.0.rbi
282
- - sorbet/rbi/gems/mocha@1.11.2.rbi
283
- - sorbet/rbi/gems/nio4r@2.5.2.rbi
284
- - sorbet/rbi/gems/nokogiri@1.10.9.rbi
285
- - sorbet/rbi/gems/parallel@1.19.1.rbi
286
- - sorbet/rbi/gems/parlour@4.0.1.rbi
287
- - sorbet/rbi/gems/parser@2.7.1.4.rbi
288
- - 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
289
304
  - sorbet/rbi/gems/rack-test@1.1.0.rbi
290
- - sorbet/rbi/gems/rack@2.2.2.rbi
305
+ - sorbet/rbi/gems/rack@2.2.3.rbi
291
306
  - sorbet/rbi/gems/rails-dom-testing@2.0.3.rbi
292
307
  - sorbet/rbi/gems/rails-html-sanitizer@1.3.0.rbi
293
- - sorbet/rbi/gems/rails@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi
294
- - 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
295
310
  - sorbet/rbi/gems/rainbow@3.0.0.rbi
296
- - 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
297
313
  - sorbet/rbi/gems/rexml@3.2.4.rbi
298
- - sorbet/rbi/gems/rubocop-performance@1.5.2.rbi
299
- - sorbet/rbi/gems/rubocop-shopify@1.0.2.rbi
300
- - sorbet/rbi/gems/rubocop-sorbet@0.3.7.rbi
301
- - sorbet/rbi/gems/rubocop@0.82.0.rbi
302
- - 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
303
320
  - sorbet/rbi/gems/smart_properties@1.15.0.rbi
304
- - sorbet/rbi/gems/spoom@1.0.4.rbi
305
- - sorbet/rbi/gems/spring@2.1.0.rbi
306
- - sorbet/rbi/gems/sprockets-rails@3.2.1.rbi
307
- - sorbet/rbi/gems/sprockets@4.0.0.rbi
308
- - sorbet/rbi/gems/tapioca@0.4.5.rbi
309
- - sorbet/rbi/gems/thor@1.0.1.rbi
310
- - sorbet/rbi/gems/tzinfo@2.0.2.rbi
311
- - sorbet/rbi/gems/unicode-display_width@1.7.0.rbi
312
- - sorbet/rbi/gems/websocket-driver@0.7.1.rbi
313
- - sorbet/rbi/gems/websocket-extensions@0.1.4.rbi
314
- - 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
315
332
  - sorbet/tapioca/require.rb
316
333
  homepage: https://github.com/Shopify/packwerk
317
334
  licenses:
@@ -336,7 +353,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
336
353
  - !ruby/object:Gem::Version
337
354
  version: '0'
338
355
  requirements: []
339
- rubygems_version: 3.0.3
356
+ rubygems_version: 3.2.17
340
357
  signing_key:
341
358
  specification_version: 4
342
359
  summary: Packages for applications based on the zeitwerk autoloader
@@ -1,47 +0,0 @@
1
- # typed: true
2
- # frozen_string_literal: true
3
-
4
- require "sorbet-runtime"
5
-
6
- require "packwerk/deprecated_references"
7
- require "packwerk/reference"
8
- require "packwerk/reference_lister"
9
- require "packwerk/violation_type"
10
-
11
- module Packwerk
12
- class CacheDeprecatedReferences
13
- extend T::Sig
14
- extend T::Helpers
15
- include ReferenceLister
16
- abstract!
17
-
18
- def initialize(root_path, deprecated_references = {})
19
- @root_path = root_path
20
- @deprecated_references = T.let(deprecated_references, T::Hash[String, Packwerk::DeprecatedReferences])
21
- end
22
-
23
- sig do
24
- params(reference: Packwerk::Reference, violation_type: ViolationType)
25
- .returns(T::Boolean)
26
- .override
27
- end
28
- def listed?(reference, violation_type:)
29
- deprecated_references = deprecated_references_for(reference.source_package)
30
- deprecated_references.add_entries(reference, violation_type.serialize)
31
- true
32
- end
33
-
34
- private
35
-
36
- def deprecated_references_for(package)
37
- @deprecated_references[package] ||= Packwerk::DeprecatedReferences.new(
38
- package,
39
- deprecated_references_file_for(package),
40
- )
41
- end
42
-
43
- def deprecated_references_file_for(package)
44
- File.join(@root_path, package.name, "deprecated_references.yml")
45
- end
46
- end
47
- end
@@ -1,40 +0,0 @@
1
- # typed: true
2
- # frozen_string_literal: true
3
-
4
- require "sorbet-runtime"
5
-
6
- require "packwerk/reference_lister"
7
-
8
- module Packwerk
9
- class CheckingDeprecatedReferences
10
- extend T::Sig
11
- include ReferenceLister
12
-
13
- def initialize(root_path)
14
- @root_path = root_path
15
- @deprecated_references = {}
16
- end
17
-
18
- sig do
19
- params(reference: Packwerk::Reference, violation_type: ViolationType)
20
- .returns(T::Boolean)
21
- .override
22
- end
23
- def listed?(reference, violation_type:)
24
- deprecated_references_for(reference.source_package).listed?(reference, violation_type: violation_type)
25
- end
26
-
27
- private
28
-
29
- def deprecated_references_for(source_package)
30
- @deprecated_references[source_package] ||= Packwerk::DeprecatedReferences.new(
31
- source_package,
32
- deprecated_references_file_for(source_package),
33
- )
34
- end
35
-
36
- def deprecated_references_file_for(package)
37
- File.join(@root_path, package.name, "deprecated_references.yml")
38
- end
39
- end
40
- end
@@ -1,63 +0,0 @@
1
- # typed: true
2
- # frozen_string_literal: true
3
- require "packwerk/cli"
4
- require "sorbet-runtime"
5
- require "benchmark"
6
- require "packwerk/configuration"
7
- require "packwerk/formatters/progress_formatter"
8
- require "packwerk/run_context"
9
- require "packwerk/detect_stale_deprecated_references"
10
- require "packwerk/commands/offense_progress_marker"
11
-
12
- module Packwerk
13
- class DetectStaleViolationsCommand
14
- extend T::Sig
15
- include OffenseProgressMarker
16
- Result = Struct.new(:message, :status)
17
-
18
- def initialize(files:, configuration:, run_context: nil, progress_formatter: nil, reference_lister: nil)
19
- @configuration = configuration
20
- @run_context = run_context
21
- @reference_lister = reference_lister
22
- @progress_formatter = progress_formatter
23
- @files = files
24
- end
25
-
26
- sig { returns(Result) }
27
- def run
28
- @progress_formatter.started(@files)
29
-
30
- all_offenses = T.let([], T.untyped)
31
- execution_time = Benchmark.realtime do
32
- all_offenses = @files.flat_map do |path|
33
- run_context.process_file(file: path).tap do |offenses|
34
- mark_progress(offenses: offenses, progress_formatter: @progress_formatter)
35
- end
36
- end
37
- end
38
-
39
- @progress_formatter.finished(execution_time)
40
- calculate_result
41
- end
42
-
43
- private
44
-
45
- def run_context
46
- @run_context ||= Packwerk::RunContext.from_configuration(@configuration, reference_lister: reference_lister)
47
- end
48
-
49
- def reference_lister
50
- @reference_lister ||= ::Packwerk::DetectStaleDeprecatedReferences.new(@configuration.root_path)
51
- end
52
-
53
- sig { returns Result }
54
- def calculate_result
55
- result_status = !reference_lister.stale_violations?
56
- message = "There were stale violations found, please run `packwerk update`"
57
- if result_status
58
- message = "No stale violations detected"
59
- end
60
- Result.new(message, result_status)
61
- end
62
- end
63
- end
@@ -1,24 +0,0 @@
1
- # frozen_string_literal: true
2
- # typed: strict
3
- require "sorbet-runtime"
4
- require "packwerk/formatters/progress_formatter"
5
-
6
- module Packwerk
7
- module OffenseProgressMarker
8
- extend T::Sig
9
-
10
- sig do
11
- params(
12
- offenses: T::Array[T.nilable(::Packwerk::Offense)],
13
- progress_formatter: ::Packwerk::Formatters::ProgressFormatter
14
- ).void
15
- end
16
- def mark_progress(offenses:, progress_formatter:)
17
- if offenses.empty?
18
- progress_formatter.mark_as_inspected
19
- else
20
- progress_formatter.mark_as_failed
21
- end
22
- end
23
- end
24
- end
@@ -1,14 +0,0 @@
1
- # typed: strict
2
- # frozen_string_literal: true
3
-
4
- require "packwerk/cache_deprecated_references"
5
-
6
- module Packwerk
7
- class DetectStaleDeprecatedReferences < CacheDeprecatedReferences
8
- extend T::Sig
9
- sig { returns(T::Boolean) }
10
- def stale_violations?
11
- @deprecated_references.values.any?(&:stale_violations?)
12
- end
13
- end
14
- end
@@ -1,41 +0,0 @@
1
- # typed: true
2
- # frozen_string_literal: true
3
-
4
- module Packwerk
5
- module OutputStyles
6
- class Plain
7
- class << self
8
- def reset
9
- ""
10
- end
11
-
12
- def filename
13
- ""
14
- end
15
-
16
- def error
17
- ""
18
- end
19
- end
20
- end
21
-
22
- # See https://en.wikipedia.org/wiki/ANSI_escape_code#3/4_bit for ANSI escape colour codes
23
- class Coloured
24
- class << self
25
- def reset
26
- "\033[m"
27
- end
28
-
29
- def filename
30
- # 36 is foreground cyan
31
- "\033[36m"
32
- end
33
-
34
- def error
35
- # 31 is foreground red
36
- "\033[31m"
37
- end
38
- end
39
- end
40
- end
41
- end
@@ -1,23 +0,0 @@
1
- # typed: strict
2
- # frozen_string_literal: true
3
-
4
- require "sorbet-runtime"
5
-
6
- require "packwerk/reference"
7
- require "packwerk/violation_type"
8
-
9
- module Packwerk
10
- module ReferenceLister
11
- extend T::Sig
12
- extend T::Helpers
13
-
14
- interface!
15
-
16
- sig do
17
- params(reference: Packwerk::Reference, violation_type: ViolationType)
18
- .returns(T::Boolean)
19
- .abstract
20
- end
21
- def listed?(reference, violation_type:); end
22
- end
23
- end