packwerk 1.1.0 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (133) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +17 -8
  3. data/.ruby-version +1 -1
  4. data/Gemfile +1 -1
  5. data/Gemfile.lock +129 -111
  6. data/README.md +10 -3
  7. data/TROUBLESHOOT.md +2 -2
  8. data/USAGE.md +30 -30
  9. data/bin/m +29 -0
  10. data/bin/rake +29 -0
  11. data/bin/rubocop +29 -0
  12. data/bin/srb +29 -0
  13. data/bin/tapioca +29 -0
  14. data/dev.yml +7 -7
  15. data/exe/packwerk +1 -1
  16. data/gemfiles/Gemfile-rails-6-0 +22 -0
  17. data/lib/packwerk.rb +72 -34
  18. data/lib/packwerk/application_load_paths.rb +21 -10
  19. data/lib/packwerk/application_validator.rb +104 -84
  20. data/lib/packwerk/association_inspector.rb +23 -11
  21. data/lib/packwerk/checker.rb +4 -7
  22. data/lib/packwerk/cli.rb +36 -129
  23. data/lib/packwerk/configuration.rb +10 -2
  24. data/lib/packwerk/const_node_inspector.rb +13 -14
  25. data/lib/packwerk/constant_discovery.rb +2 -0
  26. data/lib/packwerk/constant_name_inspector.rb +0 -1
  27. data/lib/packwerk/dependency_checker.rb +12 -17
  28. data/lib/packwerk/deprecated_references.rb +8 -10
  29. data/lib/packwerk/file_processor.rb +0 -4
  30. data/lib/packwerk/formatters/offenses_formatter.rb +52 -0
  31. data/lib/packwerk/formatters/progress_formatter.rb +9 -4
  32. data/lib/packwerk/generators/configuration_file.rb +0 -1
  33. data/lib/packwerk/inflector.rb +0 -2
  34. data/lib/packwerk/node.rb +9 -2
  35. data/lib/packwerk/node_processor.rb +15 -32
  36. data/lib/packwerk/node_processor_factory.rb +0 -5
  37. data/lib/packwerk/node_visitor.rb +1 -4
  38. data/lib/packwerk/offense.rb +2 -8
  39. data/lib/packwerk/offense_collection.rb +84 -0
  40. data/lib/packwerk/offenses_formatter.rb +19 -0
  41. data/lib/packwerk/output_style.rb +20 -0
  42. data/lib/packwerk/output_styles/coloured.rb +29 -0
  43. data/lib/packwerk/output_styles/plain.rb +26 -0
  44. data/lib/packwerk/package.rb +17 -1
  45. data/lib/packwerk/package_set.rb +2 -3
  46. data/lib/packwerk/parse_run.rb +106 -0
  47. data/lib/packwerk/parsed_constant_definitions.rb +2 -4
  48. data/lib/packwerk/parsers.rb +0 -2
  49. data/lib/packwerk/parsers/erb.rb +0 -2
  50. data/lib/packwerk/parsers/factory.rb +1 -3
  51. data/lib/packwerk/privacy_checker.rb +22 -17
  52. data/lib/packwerk/reference_extractor.rb +0 -8
  53. data/lib/packwerk/reference_offense.rb +49 -0
  54. data/lib/packwerk/result.rb +9 -0
  55. data/lib/packwerk/run_context.rb +4 -21
  56. data/lib/packwerk/sanity_checker.rb +1 -3
  57. data/lib/packwerk/version.rb +1 -1
  58. data/lib/packwerk/violation_type.rb +0 -2
  59. data/library.yml +1 -1
  60. data/packwerk.gemspec +1 -0
  61. data/service.yml +1 -4
  62. data/shipit.rubygems.yml +5 -1
  63. data/sorbet/rbi/gems/{actioncable@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → actioncable@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +56 -36
  64. data/sorbet/rbi/gems/{actionmailbox@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → actionmailbox@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +25 -28
  65. data/sorbet/rbi/gems/{actionmailer@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → actionmailer@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +43 -24
  66. data/sorbet/rbi/gems/{actionpack@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → actionpack@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +382 -284
  67. data/sorbet/rbi/gems/{actiontext@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → actiontext@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +76 -40
  68. data/sorbet/rbi/gems/{actionview@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → actionview@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +206 -195
  69. data/sorbet/rbi/gems/{activejob@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → activejob@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +64 -75
  70. data/sorbet/rbi/gems/{activemodel@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → activemodel@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +103 -56
  71. data/sorbet/rbi/gems/{activerecord@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → activerecord@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +1250 -898
  72. data/sorbet/rbi/gems/{activestorage@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → activestorage@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +92 -120
  73. data/sorbet/rbi/gems/{activesupport@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → activesupport@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +292 -193
  74. data/sorbet/rbi/gems/{ast@2.4.1.rbi → ast@2.4.2.rbi} +2 -1
  75. data/sorbet/rbi/gems/{better_html@1.0.15.rbi → better_html@1.0.16.rbi} +2 -2
  76. data/sorbet/rbi/gems/{concurrent-ruby@1.1.6.rbi → concurrent-ruby@1.1.8.rbi} +12 -9
  77. data/sorbet/rbi/gems/{erubi@1.9.0.rbi → erubi@1.10.0.rbi} +3 -1
  78. data/sorbet/rbi/gems/{i18n@1.8.2.rbi → i18n@1.8.10.rbi} +19 -52
  79. data/sorbet/rbi/gems/{loofah@2.5.0.rbi → loofah@2.9.0.rbi} +3 -1
  80. data/sorbet/rbi/gems/marcel@1.0.0.rbi +70 -0
  81. data/sorbet/rbi/gems/{mini_mime@1.0.2.rbi → mini_mime@1.0.3.rbi} +6 -6
  82. data/sorbet/rbi/gems/{mini_portile2@2.4.0.rbi → minitest-focus@1.2.1.rbi} +2 -2
  83. data/sorbet/rbi/gems/{minitest@5.14.0.rbi → minitest@5.14.4.rbi} +31 -29
  84. data/sorbet/rbi/gems/{mocha@1.11.2.rbi → mocha@1.12.0.rbi} +25 -36
  85. data/sorbet/rbi/gems/{nio4r@2.5.2.rbi → nio4r@2.5.7.rbi} +21 -20
  86. data/sorbet/rbi/gems/{nokogiri@1.10.9.rbi → nokogiri@1.11.2.rbi} +193 -154
  87. data/sorbet/rbi/gems/parallel@1.20.1.rbi +117 -0
  88. data/sorbet/rbi/gems/parlour@6.0.0.rbi +1272 -0
  89. data/sorbet/rbi/gems/{parser@2.7.1.4.rbi → parser@3.0.0.0.rbi} +287 -174
  90. data/sorbet/rbi/gems/{pry@0.13.1.rbi → pry@0.14.0.rbi} +1 -1
  91. data/sorbet/rbi/gems/racc@1.5.2.rbi +57 -0
  92. data/sorbet/rbi/gems/{rack@2.2.2.rbi → rack@2.2.3.rbi} +23 -35
  93. data/sorbet/rbi/gems/{rails@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → rails@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +1 -1
  94. data/sorbet/rbi/gems/{railties@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi → railties@7.0.0.alpha-d612542336d9a61381311c95a27d801bb4094779.rbi} +132 -121
  95. data/sorbet/rbi/gems/{rake@13.0.1.rbi → rake@13.0.3.rbi} +16 -20
  96. data/sorbet/rbi/gems/{parallel@1.19.1.rbi → regexp_parser@2.1.1.rbi} +2 -2
  97. data/sorbet/rbi/gems/rubocop-ast@1.4.1.rbi +8 -0
  98. data/sorbet/rbi/gems/{rubocop-performance@1.5.2.rbi → rubocop-performance@1.10.2.rbi} +1 -1
  99. data/sorbet/rbi/gems/{rubocop-shopify@1.0.2.rbi → rubocop-shopify@2.0.1.rbi} +1 -1
  100. data/sorbet/rbi/gems/{rubocop-sorbet@0.3.7.rbi → rubocop-sorbet@0.6.1.rbi} +1 -1
  101. data/sorbet/rbi/gems/{rubocop@0.82.0.rbi → rubocop@1.12.0.rbi} +1 -1
  102. data/sorbet/rbi/gems/{ruby-progressbar@1.10.1.rbi → ruby-progressbar@1.11.0.rbi} +1 -1
  103. data/sorbet/rbi/gems/spoom@1.1.0.rbi +1061 -0
  104. data/sorbet/rbi/gems/{spring@2.1.0.rbi → spring@2.1.1.rbi} +7 -7
  105. data/sorbet/rbi/gems/{sprockets-rails@3.2.1.rbi → sprockets-rails@3.2.2.rbi} +88 -68
  106. data/sorbet/rbi/gems/{sprockets@4.0.0.rbi → sprockets@4.0.2.rbi} +8 -7
  107. data/sorbet/rbi/gems/{tapioca@0.4.5.rbi → tapioca@0.4.19.rbi} +109 -24
  108. data/sorbet/rbi/gems/{thor@1.0.1.rbi → thor@1.1.0.rbi} +16 -15
  109. data/sorbet/rbi/gems/{tzinfo@2.0.2.rbi → tzinfo@2.0.4.rbi} +21 -2
  110. data/sorbet/rbi/gems/{unicode-display_width@1.7.0.rbi → unicode-display_width@2.0.0.rbi} +1 -1
  111. data/sorbet/rbi/gems/{websocket-driver@0.7.1.rbi → websocket-driver@0.7.3.rbi} +29 -29
  112. data/sorbet/rbi/gems/{websocket-extensions@0.1.4.rbi → websocket-extensions@0.1.5.rbi} +2 -2
  113. data/sorbet/rbi/gems/zeitwerk@2.4.2.rbi +177 -0
  114. data/sorbet/tapioca/require.rb +1 -0
  115. metadata +83 -65
  116. data/lib/packwerk/cache_deprecated_references.rb +0 -47
  117. data/lib/packwerk/checking_deprecated_references.rb +0 -40
  118. data/lib/packwerk/commands/detect_stale_violations_command.rb +0 -63
  119. data/lib/packwerk/commands/offense_progress_marker.rb +0 -24
  120. data/lib/packwerk/detect_stale_deprecated_references.rb +0 -14
  121. data/lib/packwerk/generators/application_validation.rb +0 -62
  122. data/lib/packwerk/generators/templates/packwerk +0 -23
  123. data/lib/packwerk/generators/templates/packwerk_validator_test.rb +0 -11
  124. data/lib/packwerk/output_styles.rb +0 -41
  125. data/lib/packwerk/reference_lister.rb +0 -23
  126. data/lib/packwerk/spring_command.rb +0 -28
  127. data/lib/packwerk/updating_deprecated_references.rb +0 -14
  128. data/sorbet/rbi/gems/jaro_winkler@1.5.4.rbi +0 -8
  129. data/sorbet/rbi/gems/marcel@0.3.3.rbi +0 -30
  130. data/sorbet/rbi/gems/mimemagic@0.3.5.rbi +0 -47
  131. data/sorbet/rbi/gems/parlour@4.0.1.rbi +0 -561
  132. data/sorbet/rbi/gems/spoom@1.0.4.rbi +0 -418
  133. data/sorbet/rbi/gems/zeitwerk@2.3.0.rbi +0 -8
@@ -1,418 +0,0 @@
1
- # DO NOT EDIT MANUALLY
2
- # This is an autogenerated file for types exported from the `spoom` gem.
3
- # Please instead update this file by running `dev typecheck update`.
4
-
5
- # typed: true
6
-
7
- module Spoom
8
- end
9
-
10
- module Spoom::Cli
11
- end
12
-
13
- module Spoom::Cli::Commands
14
- end
15
-
16
- class Spoom::Cli::Commands::Base < ::Thor
17
- def in_sorbet_project!; end
18
- def in_sorbet_project?; end
19
- def say_error(message, status = T.unsafe(nil)); end
20
- end
21
-
22
- class Spoom::Cli::Commands::Config < ::Spoom::Cli::Commands::Base
23
- def files; end
24
- def help(command = T.unsafe(nil), subcommand = T.unsafe(nil)); end
25
- def show; end
26
- end
27
-
28
- class Spoom::Cli::Commands::LSP < ::Spoom::Cli::Commands::Base
29
- def defs(file, line, col); end
30
- def find(query); end
31
- def help(command = T.unsafe(nil), subcommand = T.unsafe(nil)); end
32
- def hover(file, line, col); end
33
- def list; end
34
- def lsp_client; end
35
- def refs(file, line, col); end
36
- def run(&block); end
37
- def show; end
38
- def sigs(file, line, col); end
39
- def symbols(file); end
40
- def types(file, line, col); end
41
- end
42
-
43
- class Spoom::Cli::Commands::Run < ::Spoom::Cli::Commands::Base
44
- def colorize_code(code, colors = T.unsafe(nil)); end
45
- def colorize_message(message, colors = T.unsafe(nil)); end
46
- def help(command = T.unsafe(nil), subcommand = T.unsafe(nil)); end
47
- def metrics; end
48
- def tc; end
49
- end
50
-
51
- class Spoom::Cli::Main < ::Thor
52
- def config(*args); end
53
- def lsp(*args); end
54
- def tc(*args); end
55
-
56
- class << self
57
- def exit_on_failure?; end
58
- end
59
- end
60
-
61
- class Spoom::Cli::SymbolPrinter
62
- def initialize(default_indent, no_color = T.unsafe(nil)); end
63
-
64
- def dedent; end
65
- def indent; end
66
- def no_color; end
67
- def no_color=(_); end
68
- def print(string); end
69
- def printn; end
70
- def printt; end
71
- def seen; end
72
- def seen=(_); end
73
- def visit(object); end
74
-
75
- class << self
76
- def print_list(list, no_color); end
77
- def print_object(object, no_color); end
78
- end
79
- end
80
-
81
- module Spoom::Config
82
- end
83
-
84
- Spoom::Config::SORBET_CONFIG = T.let(T.unsafe(nil), String)
85
-
86
- Spoom::Config::SORBET_GEM_PATH = T.let(T.unsafe(nil), String)
87
-
88
- Spoom::Config::SORBET_PATH = T.let(T.unsafe(nil), String)
89
-
90
- Spoom::Config::WORKSPACE_PATH = T.let(T.unsafe(nil), String)
91
-
92
- class Spoom::Error < ::StandardError
93
- end
94
-
95
- module Spoom::LSP
96
- end
97
-
98
- class Spoom::LSP::Client
99
- def initialize(sorbet_cmd, *sorbet_args); end
100
-
101
- def close; end
102
- def definitions(uri, line, column); end
103
- def document_symbols(uri); end
104
- def hover(uri, line, column); end
105
- def next_id; end
106
- def open(workspace_path); end
107
- def read; end
108
- def read_raw; end
109
- def references(uri, line, column, include_decl = T.unsafe(nil)); end
110
- def send(message); end
111
- def send_raw(json_string); end
112
- def signatures(uri, line, column); end
113
- def symbols(query); end
114
- def type_definitions(uri, line, column); end
115
- end
116
-
117
- class Spoom::LSP::Diagnostic < ::T::Struct
118
- const :range, Spoom::LSP::Range
119
- const :code, Integer
120
- const :message, String
121
- const :informations, Object
122
-
123
- def to_s; end
124
-
125
- class << self
126
- def from_json(json); end
127
- def inherited(s); end
128
- end
129
- end
130
-
131
- class Spoom::LSP::DocumentSymbol < ::T::Struct
132
- const :name, String
133
- const :detail, T.nilable(String)
134
- const :kind, Integer
135
- const :location, T.nilable(Spoom::LSP::Location)
136
- const :range, T.nilable(Spoom::LSP::Range)
137
- const :children, T::Array[Spoom::LSP::DocumentSymbol]
138
-
139
- def accept_printer(printer); end
140
- def kind_string; end
141
- def to_s; end
142
-
143
- class << self
144
- def from_json(json); end
145
- def inherited(s); end
146
- end
147
- end
148
-
149
- Spoom::LSP::DocumentSymbol::SYMBOL_KINDS = T.let(T.unsafe(nil), Hash)
150
-
151
- class Spoom::LSP::Error < ::StandardError
152
- end
153
-
154
- class Spoom::LSP::Error::AlreadyOpen < ::Spoom::LSP::Error
155
- end
156
-
157
- class Spoom::LSP::Error::BadHeaders < ::Spoom::LSP::Error
158
- end
159
-
160
- class Spoom::LSP::Error::Diagnostics < ::Spoom::LSP::Error
161
- def initialize(uri, diagnostics); end
162
-
163
- def diagnostics; end
164
- def uri; end
165
-
166
- class << self
167
- def from_json(json); end
168
- end
169
- end
170
-
171
- class Spoom::LSP::Hover < ::T::Struct
172
- const :contents, String
173
- const :range, T.nilable(T::Range[T.untyped])
174
-
175
- def accept_printer(printer); end
176
- def to_s; end
177
-
178
- class << self
179
- def from_json(json); end
180
- def inherited(s); end
181
- end
182
- end
183
-
184
- class Spoom::LSP::Location < ::T::Struct
185
- const :uri, String
186
- const :range, Spoom::LSP::Range
187
-
188
- def accept_printer(printer); end
189
- def to_s; end
190
-
191
- class << self
192
- def from_json(json); end
193
- def inherited(s); end
194
- end
195
- end
196
-
197
- class Spoom::LSP::Message
198
- def initialize; end
199
-
200
- def as_json; end
201
- def jsonrpc; end
202
- def to_json(*args); end
203
- end
204
-
205
- class Spoom::LSP::Notification < ::Spoom::LSP::Message
206
- def initialize(method, params); end
207
-
208
- def method; end
209
- def params; end
210
- end
211
-
212
- class Spoom::LSP::Position < ::T::Struct
213
- const :line, Integer
214
- const :char, Integer
215
-
216
- def accept_printer(printer); end
217
- def to_s; end
218
-
219
- class << self
220
- def from_json(json); end
221
- def inherited(s); end
222
- end
223
- end
224
-
225
- class Spoom::LSP::Range < ::T::Struct
226
- const :start, Spoom::LSP::Position
227
- const :end, Spoom::LSP::Position
228
-
229
- def accept_printer(printer); end
230
- def to_s; end
231
-
232
- class << self
233
- def from_json(json); end
234
- def inherited(s); end
235
- end
236
- end
237
-
238
- class Spoom::LSP::Request < ::Spoom::LSP::Message
239
- def initialize(id, method, params); end
240
-
241
- def id; end
242
- def method; end
243
- def params; end
244
- end
245
-
246
- class Spoom::LSP::ResponseError < ::Spoom::LSP::Error
247
- def initialize(code, message, data); end
248
-
249
- def code; end
250
- def data; end
251
- def message; end
252
-
253
- class << self
254
- def from_json(json); end
255
- end
256
- end
257
-
258
- class Spoom::LSP::SignatureHelp < ::T::Struct
259
- const :label, T.nilable(String)
260
- const :doc, Object
261
- const :params, T::Array[T.untyped]
262
-
263
- def accept_printer(printer); end
264
- def to_s; end
265
-
266
- class << self
267
- def from_json(json); end
268
- def inherited(s); end
269
- end
270
- end
271
-
272
- module Spoom::Sorbet
273
- class << self
274
- sig { params(arg: String, path: String, capture_err: T::Boolean).returns([String, T::Boolean]) }
275
- def srb(*arg, path: T.unsafe(nil), capture_err: T.unsafe(nil)); end
276
- sig { params(config: Spoom::Sorbet::Config, path: String).returns(T::Array[String]) }
277
- def srb_files(config, path: T.unsafe(nil)); end
278
- sig { params(arg: String, path: String, capture_err: T::Boolean).returns(T.nilable(Spoom::Sorbet::Metrics)) }
279
- def srb_metrics(*arg, path: T.unsafe(nil), capture_err: T.unsafe(nil)); end
280
- sig { params(arg: String, path: String, capture_err: T::Boolean).returns([String, T::Boolean]) }
281
- def srb_tc(*arg, path: T.unsafe(nil), capture_err: T.unsafe(nil)); end
282
- sig { params(arg: String, path: String, capture_err: T::Boolean).returns(T.nilable(String)) }
283
- def srb_version(*arg, path: T.unsafe(nil), capture_err: T.unsafe(nil)); end
284
- end
285
- end
286
-
287
- class Spoom::Sorbet::Config
288
- sig { void }
289
- def initialize; end
290
-
291
- def allowed_extensions; end
292
- def ignore; end
293
- sig { returns(T::Array[String]) }
294
- def paths; end
295
-
296
- class << self
297
- sig { params(sorbet_config_path: String).returns(Spoom::Sorbet::Config) }
298
- def parse_file(sorbet_config_path); end
299
- sig { params(sorbet_config: String).returns(Spoom::Sorbet::Config) }
300
- def parse_string(sorbet_config); end
301
-
302
- private
303
-
304
- sig { params(line: String).returns(String) }
305
- def parse_option(line); end
306
- end
307
- end
308
-
309
- module Spoom::Sorbet::Errors
310
- end
311
-
312
- class Spoom::Sorbet::Errors::Error
313
- include(::Comparable)
314
-
315
- sig { params(file: T.nilable(String), line: T.nilable(Integer), message: T.nilable(String), code: T.nilable(Integer), more: T::Array[String]).void }
316
- def initialize(file, line, message, code, more = T.unsafe(nil)); end
317
-
318
- sig { params(other: T.untyped).returns(Integer) }
319
- def <=>(other); end
320
- def code; end
321
- sig { returns(T.nilable(String)) }
322
- def file; end
323
- sig { returns(T.nilable(Integer)) }
324
- def line; end
325
- def message; end
326
- sig { returns(T::Array[String]) }
327
- def more; end
328
- sig { returns(String) }
329
- def to_s; end
330
-
331
- class << self
332
- sig { params(line: String).returns(Spoom::Sorbet::Errors::Error) }
333
- def from_error_line(line); end
334
- end
335
- end
336
-
337
- class Spoom::Sorbet::Errors::Parser
338
- sig { void }
339
- def initialize; end
340
-
341
- sig { params(output: String).returns(T::Array[Spoom::Sorbet::Errors::Error]) }
342
- def parse(output); end
343
-
344
- private
345
-
346
- sig { params(line: String).void }
347
- def append_error(line); end
348
- sig { void }
349
- def close_error; end
350
- sig { params(line: String).returns(T.nilable(Integer)) }
351
- def leading_spaces(line); end
352
- sig { params(line: String).void }
353
- def open_error(line); end
354
-
355
- class << self
356
- sig { params(output: String).returns(T::Array[Spoom::Sorbet::Errors::Error]) }
357
- def parse_string(output); end
358
- end
359
- end
360
-
361
- Spoom::Sorbet::Errors::Parser::HEADER = T.let(T.unsafe(nil), Array)
362
-
363
- class Spoom::Sorbet::Metrics < ::T::Struct
364
- const :repo, String
365
- const :sha, String
366
- const :status, String
367
- const :branch, String
368
- const :timestamp, Integer
369
- const :uuid, String
370
- const :metrics, T::Hash[String, T.nilable(Integer)]
371
-
372
- sig { params(key: String).returns(T.nilable(Integer)) }
373
- def [](key); end
374
- sig { returns(T::Hash[String, T.nilable(Integer)]) }
375
- def files_by_strictness; end
376
- sig { returns(Integer) }
377
- def files_count; end
378
- sig { params(out: T.any(IO, StringIO)).void }
379
- def show(out = T.unsafe(nil)); end
380
- sig { returns(String) }
381
- def to_s; end
382
-
383
- private
384
-
385
- sig { params(value: T.nilable(Integer), total: T.nilable(Integer)).returns(String) }
386
- def percent(value, total); end
387
-
388
- class << self
389
- def inherited(s); end
390
- sig { params(path: String, prefix: String).returns(Spoom::Sorbet::Metrics) }
391
- def parse_file(path, prefix = T.unsafe(nil)); end
392
- sig { params(obj: T::Hash[String, T.untyped], prefix: String).returns(Spoom::Sorbet::Metrics) }
393
- def parse_hash(obj, prefix = T.unsafe(nil)); end
394
- sig { params(string: String, prefix: String).returns(Spoom::Sorbet::Metrics) }
395
- def parse_string(string, prefix = T.unsafe(nil)); end
396
- end
397
- end
398
-
399
- Spoom::Sorbet::Metrics::DEFAULT_PREFIX = T.let(T.unsafe(nil), String)
400
-
401
- Spoom::Sorbet::Metrics::SIGILS = T.let(T.unsafe(nil), Array)
402
-
403
- Spoom::VERSION = T.let(T.unsafe(nil), String)
404
-
405
- class String
406
- include(::Comparable)
407
- include(::Colorize::InstanceMethods)
408
- include(::JSON::Ext::Generator::GeneratorMethods::String)
409
- extend(::Colorize::ClassMethods)
410
- extend(::JSON::Ext::Generator::GeneratorMethods::String::Extend)
411
-
412
- def from_uri; end
413
- def to_uri; end
414
- end
415
-
416
- String::BLANK_RE = T.let(T.unsafe(nil), Regexp)
417
-
418
- String::ENCODED_BLANKS = T.let(T.unsafe(nil), Concurrent::Map)
@@ -1,8 +0,0 @@
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 `dev typecheck update`.
4
-
5
- # typed: true
6
-
7
- # THIS IS AN EMPTY RBI FILE.
8
- # see https://github.com/Shopify/tapioca/blob/master/README.md#manual-gem-requires