ruby-lsp 0.0.3 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +6 -0
- data/.rubocop.yml +25 -0
- data/CHANGELOG.md +35 -0
- data/Gemfile +10 -6
- data/Gemfile.lock +63 -16
- data/README.md +41 -0
- data/Rakefile +8 -1
- data/VERSION +1 -1
- data/bin/console +19 -0
- data/bin/tapioca +29 -0
- data/dev.yml +3 -0
- data/exe/ruby-lsp +19 -4
- data/lib/ruby-lsp.rb +2 -1
- data/lib/ruby_lsp/cli.rb +13 -5
- data/lib/ruby_lsp/document.rb +43 -14
- data/lib/ruby_lsp/handler.rb +107 -37
- data/lib/ruby_lsp/internal.rb +7 -0
- data/lib/ruby_lsp/requests/base_request.rb +18 -5
- data/lib/ruby_lsp/requests/code_actions.rb +20 -8
- data/lib/ruby_lsp/requests/diagnostics.rb +25 -7
- data/lib/ruby_lsp/requests/document_highlight.rb +113 -0
- data/lib/ruby_lsp/requests/document_symbol.rb +56 -16
- data/lib/ruby_lsp/requests/folding_ranges.rb +70 -34
- data/lib/ruby_lsp/requests/formatting.rb +24 -14
- data/lib/ruby_lsp/requests/selection_ranges.rb +18 -4
- data/lib/ruby_lsp/requests/semantic_highlighting.rb +187 -34
- data/lib/ruby_lsp/requests/support/rubocop_diagnostic.rb +16 -3
- data/lib/ruby_lsp/requests/support/rubocop_diagnostics_runner.rb +61 -0
- data/lib/ruby_lsp/requests/support/rubocop_formatting_runner.rb +50 -0
- data/lib/ruby_lsp/requests/support/selection_range.rb +4 -0
- data/lib/ruby_lsp/requests/support/semantic_token_encoder.rb +24 -3
- data/lib/ruby_lsp/requests/support/syntax_error_diagnostic.rb +6 -0
- data/lib/ruby_lsp/requests.rb +13 -1
- data/lib/ruby_lsp/store.rb +20 -3
- data/rakelib/check_docs.rake +34 -6
- data/ruby-lsp.gemspec +7 -5
- data/sorbet/config +4 -0
- data/sorbet/rbi/.rubocop.yml +8 -0
- data/sorbet/rbi/gems/ansi@1.5.0.rbi +338 -0
- data/sorbet/rbi/gems/ast@2.4.2.rbi +522 -0
- data/sorbet/rbi/gems/builder@3.2.4.rbi +418 -0
- data/sorbet/rbi/gems/coderay@1.1.3.rbi +8 -0
- data/sorbet/rbi/gems/debug@1.5.0.rbi +1273 -0
- data/sorbet/rbi/gems/diff-lcs@1.5.0.rbi +867 -0
- data/sorbet/rbi/gems/io-console@0.5.11.rbi +8 -0
- data/sorbet/rbi/gems/irb@1.4.1.rbi +376 -0
- data/sorbet/rbi/gems/language_server-protocol@3.16.0.3.rbi +7325 -0
- data/sorbet/rbi/gems/method_source@1.0.0.rbi +8 -0
- data/sorbet/rbi/gems/minitest-reporters@1.5.0.rbi +612 -0
- data/sorbet/rbi/gems/minitest@5.15.0.rbi +994 -0
- data/sorbet/rbi/gems/parallel@1.22.1.rbi +163 -0
- data/sorbet/rbi/gems/parser@3.1.2.0.rbi +3968 -0
- data/sorbet/rbi/gems/prettier_print@0.1.0.rbi +734 -0
- data/sorbet/rbi/gems/pry@0.14.1.rbi +8 -0
- data/sorbet/rbi/gems/rainbow@3.1.1.rbi +227 -0
- data/sorbet/rbi/gems/rake@13.0.6.rbi +1853 -0
- data/sorbet/rbi/gems/rbi@0.0.14.rbi +2337 -0
- data/sorbet/rbi/gems/regexp_parser@2.5.0.rbi +1854 -0
- data/sorbet/rbi/gems/reline@0.3.1.rbi +1274 -0
- data/sorbet/rbi/gems/rexml@3.2.5.rbi +3852 -0
- data/sorbet/rbi/gems/rubocop-ast@1.18.0.rbi +4180 -0
- data/sorbet/rbi/gems/rubocop-minitest@0.20.0.rbi +1369 -0
- data/sorbet/rbi/gems/rubocop-rake@0.6.0.rbi +246 -0
- data/sorbet/rbi/gems/rubocop-shopify@2.6.0.rbi +8 -0
- data/sorbet/rbi/gems/rubocop-sorbet@0.6.8.rbi +652 -0
- data/sorbet/rbi/gems/rubocop@1.30.0.rbi +36729 -0
- data/sorbet/rbi/gems/ruby-progressbar@1.11.0.rbi +732 -0
- data/sorbet/rbi/gems/spoom@1.1.11.rbi +1600 -0
- data/sorbet/rbi/gems/syntax_tree@2.7.1.rbi +6777 -0
- data/sorbet/rbi/gems/tapioca@0.8.1.rbi +1972 -0
- data/sorbet/rbi/gems/thor@1.2.1.rbi +2921 -0
- data/sorbet/rbi/gems/unicode-display_width@2.1.0.rbi +27 -0
- data/sorbet/rbi/gems/unparser@0.6.5.rbi +2789 -0
- data/sorbet/rbi/gems/webrick@1.7.0.rbi +1779 -0
- data/sorbet/rbi/gems/yard-sorbet@0.6.1.rbi +289 -0
- data/sorbet/rbi/gems/yard@0.9.27.rbi +13048 -0
- data/sorbet/rbi/shims/fiddle.rbi +4 -0
- data/sorbet/rbi/shims/hash.rbi +6 -0
- data/sorbet/rbi/shims/rdoc.rbi +4 -0
- data/sorbet/tapioca/config.yml +13 -0
- data/sorbet/tapioca/require.rb +7 -0
- metadata +62 -13
- data/lib/ruby_lsp/requests/rubocop_request.rb +0 -49
- data/shipit.production.yml +0 -1
@@ -0,0 +1,1600 @@
|
|
1
|
+
# typed: true
|
2
|
+
|
3
|
+
# DO NOT EDIT MANUALLY
|
4
|
+
# This is an autogenerated file for types exported from the `spoom` gem.
|
5
|
+
# Please instead update this file by running `bin/tapioca gem spoom`.
|
6
|
+
|
7
|
+
module Spoom
|
8
|
+
class << self
|
9
|
+
sig { params(cmd: ::String, arg: ::String, path: ::String, capture_err: T::Boolean).returns(::Spoom::ExecResult) }
|
10
|
+
def exec(cmd, *arg, path: T.unsafe(nil), capture_err: T.unsafe(nil)); end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
module Spoom::Cli; end
|
15
|
+
|
16
|
+
class Spoom::Cli::Bump < ::Thor
|
17
|
+
include ::Spoom::Colorize
|
18
|
+
include ::Spoom::Cli::Helper
|
19
|
+
|
20
|
+
sig { params(directory: ::String).void }
|
21
|
+
def bump(directory = T.unsafe(nil)); end
|
22
|
+
|
23
|
+
def config_files(path: T.unsafe(nil)); end
|
24
|
+
def help(command = T.unsafe(nil), subcommand = T.unsafe(nil)); end
|
25
|
+
def print_changes(files, command:, from: T.unsafe(nil), to: T.unsafe(nil), dry: T.unsafe(nil), path: T.unsafe(nil)); end
|
26
|
+
def undo_changes(files, from_strictness); end
|
27
|
+
end
|
28
|
+
|
29
|
+
class Spoom::Cli::Config < ::Thor
|
30
|
+
include ::Spoom::Colorize
|
31
|
+
include ::Spoom::Cli::Helper
|
32
|
+
|
33
|
+
def help(command = T.unsafe(nil), subcommand = T.unsafe(nil)); end
|
34
|
+
def show; end
|
35
|
+
end
|
36
|
+
|
37
|
+
class Spoom::Cli::Coverage < ::Thor
|
38
|
+
include ::Spoom::Colorize
|
39
|
+
include ::Spoom::Cli::Helper
|
40
|
+
|
41
|
+
def bundle_install(path, sha); end
|
42
|
+
def help(command = T.unsafe(nil), subcommand = T.unsafe(nil)); end
|
43
|
+
def message_no_data(file); end
|
44
|
+
def open(file = T.unsafe(nil)); end
|
45
|
+
def parse_time(string, option); end
|
46
|
+
def report; end
|
47
|
+
def snapshot; end
|
48
|
+
def timeline; end
|
49
|
+
end
|
50
|
+
|
51
|
+
Spoom::Cli::Coverage::DATA_DIR = T.let(T.unsafe(nil), String)
|
52
|
+
|
53
|
+
module Spoom::Cli::Helper
|
54
|
+
include ::Spoom::Colorize
|
55
|
+
|
56
|
+
requires_ancestor { Thor }
|
57
|
+
|
58
|
+
sig { params(string: ::String).returns(::String) }
|
59
|
+
def blue(string); end
|
60
|
+
|
61
|
+
sig { params(exit_code: ::Integer, block: T.nilable(T.proc.void)).void }
|
62
|
+
def check_sorbet_segfault(exit_code, &block); end
|
63
|
+
|
64
|
+
# Is the `--color` option true?
|
65
|
+
sig { returns(T::Boolean) }
|
66
|
+
def color?; end
|
67
|
+
|
68
|
+
# Colorize a string if `color?`
|
69
|
+
sig { params(string: ::String, color: ::Spoom::Color).returns(::String) }
|
70
|
+
def colorize(string, *color); end
|
71
|
+
|
72
|
+
sig { params(string: ::String).returns(::String) }
|
73
|
+
def cyan(string); end
|
74
|
+
|
75
|
+
# Return the path specified through `--path`
|
76
|
+
sig { returns(::String) }
|
77
|
+
def exec_path; end
|
78
|
+
|
79
|
+
sig { params(string: ::String).returns(::String) }
|
80
|
+
def gray(string); end
|
81
|
+
|
82
|
+
sig { params(string: ::String).returns(::String) }
|
83
|
+
def green(string); end
|
84
|
+
|
85
|
+
sig { params(string: ::String).returns(::String) }
|
86
|
+
def highlight(string); end
|
87
|
+
|
88
|
+
# Enforce that `spoom` is ran inside a project with a `sorbet/config` file
|
89
|
+
#
|
90
|
+
# Display an error message and exit otherwise.
|
91
|
+
sig { void }
|
92
|
+
def in_sorbet_project!; end
|
93
|
+
|
94
|
+
# Is `spoom` ran inside a project with a `sorbet/config` file?
|
95
|
+
sig { returns(T::Boolean) }
|
96
|
+
def in_sorbet_project?; end
|
97
|
+
|
98
|
+
sig { params(string: ::String).returns(::String) }
|
99
|
+
def red(string); end
|
100
|
+
|
101
|
+
# Print `message` on `$stdout`
|
102
|
+
sig { params(message: ::String).void }
|
103
|
+
def say(message); end
|
104
|
+
|
105
|
+
# Print `message` on `$stderr`
|
106
|
+
#
|
107
|
+
# The message is prefixed by a status (default: `Error`).
|
108
|
+
sig { params(message: ::String, status: T.nilable(::String), nl: T::Boolean).void }
|
109
|
+
def say_error(message, status: T.unsafe(nil), nl: T.unsafe(nil)); end
|
110
|
+
|
111
|
+
sig { returns(::Spoom::Sorbet::Config) }
|
112
|
+
def sorbet_config; end
|
113
|
+
|
114
|
+
sig { returns(::String) }
|
115
|
+
def sorbet_config_file; end
|
116
|
+
|
117
|
+
sig { params(string: ::String).returns(::String) }
|
118
|
+
def yellow(string); end
|
119
|
+
end
|
120
|
+
|
121
|
+
class Spoom::Cli::LSP < ::Thor
|
122
|
+
include ::Spoom::Colorize
|
123
|
+
include ::Spoom::Cli::Helper
|
124
|
+
|
125
|
+
# TODO: options, filter, limit, kind etc.. filter rbi
|
126
|
+
def defs(file, line, col); end
|
127
|
+
|
128
|
+
# TODO: options, filter, limit, kind etc.. filter rbi
|
129
|
+
def find(query); end
|
130
|
+
|
131
|
+
def help(command = T.unsafe(nil), subcommand = T.unsafe(nil)); end
|
132
|
+
|
133
|
+
# TODO: options, filter, limit, kind etc.. filter rbi
|
134
|
+
def hover(file, line, col); end
|
135
|
+
|
136
|
+
# TODO: options, filter, limit, kind etc.. filter rbi
|
137
|
+
def list; end
|
138
|
+
|
139
|
+
def lsp_client; end
|
140
|
+
|
141
|
+
# TODO: options, filter, limit, kind etc.. filter rbi
|
142
|
+
def refs(file, line, col); end
|
143
|
+
|
144
|
+
def run(&block); end
|
145
|
+
def show; end
|
146
|
+
|
147
|
+
# TODO: options, filter, limit, kind etc.. filter rbi
|
148
|
+
def sigs(file, line, col); end
|
149
|
+
|
150
|
+
def symbol_printer; end
|
151
|
+
|
152
|
+
# TODO: options, filter, limit, kind etc.. filter rbi
|
153
|
+
def symbols(file); end
|
154
|
+
|
155
|
+
def to_uri(path); end
|
156
|
+
|
157
|
+
# TODO: options, filter, limit, kind etc.. filter rbi
|
158
|
+
def types(file, line, col); end
|
159
|
+
end
|
160
|
+
|
161
|
+
class Spoom::Cli::Main < ::Thor
|
162
|
+
include ::Spoom::Colorize
|
163
|
+
include ::Spoom::Cli::Helper
|
164
|
+
|
165
|
+
def __print_version; end
|
166
|
+
def bump(*args); end
|
167
|
+
def config(*args); end
|
168
|
+
def coverage(*args); end
|
169
|
+
def files; end
|
170
|
+
def lsp(*args); end
|
171
|
+
def tc(*args); end
|
172
|
+
|
173
|
+
class << self
|
174
|
+
# Utils
|
175
|
+
#
|
176
|
+
# @return [Boolean]
|
177
|
+
def exit_on_failure?; end
|
178
|
+
end
|
179
|
+
end
|
180
|
+
|
181
|
+
class Spoom::Cli::Run < ::Thor
|
182
|
+
include ::Spoom::Colorize
|
183
|
+
include ::Spoom::Cli::Helper
|
184
|
+
|
185
|
+
def colorize_message(message); end
|
186
|
+
def format_error(error, format); end
|
187
|
+
def help(command = T.unsafe(nil), subcommand = T.unsafe(nil)); end
|
188
|
+
def tc(*arg); end
|
189
|
+
end
|
190
|
+
|
191
|
+
Spoom::Cli::Run::DEFAULT_FORMAT = T.let(T.unsafe(nil), String)
|
192
|
+
Spoom::Cli::Run::SORT_CODE = T.let(T.unsafe(nil), String)
|
193
|
+
Spoom::Cli::Run::SORT_ENUM = T.let(T.unsafe(nil), Array)
|
194
|
+
Spoom::Cli::Run::SORT_LOC = T.let(T.unsafe(nil), String)
|
195
|
+
|
196
|
+
class Spoom::Color < ::T::Enum
|
197
|
+
enums do
|
198
|
+
CLEAR = new
|
199
|
+
BOLD = new
|
200
|
+
BLACK = new
|
201
|
+
RED = new
|
202
|
+
GREEN = new
|
203
|
+
YELLOW = new
|
204
|
+
BLUE = new
|
205
|
+
MAGENTA = new
|
206
|
+
CYAN = new
|
207
|
+
WHITE = new
|
208
|
+
LIGHT_BLACK = new
|
209
|
+
LIGHT_RED = new
|
210
|
+
LIGHT_GREEN = new
|
211
|
+
LIGHT_YELLOW = new
|
212
|
+
LIGHT_BLUE = new
|
213
|
+
LIGHT_MAGENTA = new
|
214
|
+
LIGHT_CYAN = new
|
215
|
+
LIGHT_WHITE = new
|
216
|
+
end
|
217
|
+
|
218
|
+
sig { returns(::String) }
|
219
|
+
def ansi_code; end
|
220
|
+
end
|
221
|
+
|
222
|
+
module Spoom::Colorize
|
223
|
+
sig { params(string: ::String, color: ::Spoom::Color).returns(::String) }
|
224
|
+
def set_color(string, *color); end
|
225
|
+
end
|
226
|
+
|
227
|
+
module Spoom::Coverage
|
228
|
+
class << self
|
229
|
+
sig do
|
230
|
+
params(
|
231
|
+
snapshots: T::Array[::Spoom::Coverage::Snapshot],
|
232
|
+
palette: ::Spoom::Coverage::D3::ColorPalette,
|
233
|
+
path: ::String
|
234
|
+
).returns(::Spoom::Coverage::Report)
|
235
|
+
end
|
236
|
+
def report(snapshots, palette:, path: T.unsafe(nil)); end
|
237
|
+
|
238
|
+
sig { params(path: ::String).returns(::Spoom::FileTree) }
|
239
|
+
def sigils_tree(path: T.unsafe(nil)); end
|
240
|
+
|
241
|
+
sig do
|
242
|
+
params(
|
243
|
+
path: ::String,
|
244
|
+
rbi: T::Boolean,
|
245
|
+
sorbet_bin: T.nilable(::String)
|
246
|
+
).returns(::Spoom::Coverage::Snapshot)
|
247
|
+
end
|
248
|
+
def snapshot(path: T.unsafe(nil), rbi: T.unsafe(nil), sorbet_bin: T.unsafe(nil)); end
|
249
|
+
|
250
|
+
sig { params(path: ::String).returns(::Spoom::Sorbet::Config) }
|
251
|
+
def sorbet_config(path: T.unsafe(nil)); end
|
252
|
+
end
|
253
|
+
end
|
254
|
+
|
255
|
+
module Spoom::Coverage::Cards; end
|
256
|
+
|
257
|
+
class Spoom::Coverage::Cards::Card < ::Spoom::Coverage::Template
|
258
|
+
sig { params(template: ::String, title: T.nilable(::String), body: T.nilable(::String)).void }
|
259
|
+
def initialize(template: T.unsafe(nil), title: T.unsafe(nil), body: T.unsafe(nil)); end
|
260
|
+
|
261
|
+
# @return [String, nil]
|
262
|
+
def body; end
|
263
|
+
|
264
|
+
sig { returns(T.nilable(::String)) }
|
265
|
+
def title; end
|
266
|
+
end
|
267
|
+
|
268
|
+
Spoom::Coverage::Cards::Card::TEMPLATE = T.let(T.unsafe(nil), String)
|
269
|
+
|
270
|
+
# @abstract It cannont be directly instantiated. Subclasses must implement the `abstract` methods below.
|
271
|
+
class Spoom::Coverage::Cards::Erb < ::Spoom::Coverage::Cards::Card
|
272
|
+
abstract!
|
273
|
+
|
274
|
+
sig { void }
|
275
|
+
def initialize; end
|
276
|
+
|
277
|
+
# @abstract
|
278
|
+
sig { abstract.returns(::String) }
|
279
|
+
def erb; end
|
280
|
+
|
281
|
+
sig { override.returns(::String) }
|
282
|
+
def html; end
|
283
|
+
end
|
284
|
+
|
285
|
+
class Spoom::Coverage::Cards::Map < ::Spoom::Coverage::Cards::Card
|
286
|
+
sig { params(sigils_tree: ::Spoom::FileTree, title: ::String).void }
|
287
|
+
def initialize(sigils_tree:, title: T.unsafe(nil)); end
|
288
|
+
end
|
289
|
+
|
290
|
+
class Spoom::Coverage::Cards::Snapshot < ::Spoom::Coverage::Cards::Card
|
291
|
+
sig { params(snapshot: ::Spoom::Coverage::Snapshot, title: ::String).void }
|
292
|
+
def initialize(snapshot:, title: T.unsafe(nil)); end
|
293
|
+
|
294
|
+
sig { returns(::Spoom::Coverage::D3::Pie::Calls) }
|
295
|
+
def pie_calls; end
|
296
|
+
|
297
|
+
sig { returns(::Spoom::Coverage::D3::Pie::Sigils) }
|
298
|
+
def pie_sigils; end
|
299
|
+
|
300
|
+
sig { returns(::Spoom::Coverage::D3::Pie::Sigs) }
|
301
|
+
def pie_sigs; end
|
302
|
+
|
303
|
+
sig { returns(::Spoom::Coverage::Snapshot) }
|
304
|
+
def snapshot; end
|
305
|
+
end
|
306
|
+
|
307
|
+
Spoom::Coverage::Cards::Snapshot::TEMPLATE = T.let(T.unsafe(nil), String)
|
308
|
+
|
309
|
+
class Spoom::Coverage::Cards::SorbetIntro < ::Spoom::Coverage::Cards::Erb
|
310
|
+
sig { params(sorbet_intro_commit: T.nilable(::String), sorbet_intro_date: T.nilable(::Time)).void }
|
311
|
+
def initialize(sorbet_intro_commit: T.unsafe(nil), sorbet_intro_date: T.unsafe(nil)); end
|
312
|
+
|
313
|
+
sig { override.returns(::String) }
|
314
|
+
def erb; end
|
315
|
+
end
|
316
|
+
|
317
|
+
class Spoom::Coverage::Cards::Timeline < ::Spoom::Coverage::Cards::Card
|
318
|
+
sig { params(title: ::String, timeline: ::Spoom::Coverage::D3::Timeline).void }
|
319
|
+
def initialize(title:, timeline:); end
|
320
|
+
end
|
321
|
+
|
322
|
+
class Spoom::Coverage::Cards::Timeline::Calls < ::Spoom::Coverage::Cards::Timeline
|
323
|
+
sig { params(snapshots: T::Array[::Spoom::Coverage::Snapshot], title: ::String).void }
|
324
|
+
def initialize(snapshots:, title: T.unsafe(nil)); end
|
325
|
+
end
|
326
|
+
|
327
|
+
class Spoom::Coverage::Cards::Timeline::RBIs < ::Spoom::Coverage::Cards::Timeline
|
328
|
+
sig { params(snapshots: T::Array[::Spoom::Coverage::Snapshot], title: ::String).void }
|
329
|
+
def initialize(snapshots:, title: T.unsafe(nil)); end
|
330
|
+
end
|
331
|
+
|
332
|
+
class Spoom::Coverage::Cards::Timeline::Runtimes < ::Spoom::Coverage::Cards::Timeline
|
333
|
+
sig { params(snapshots: T::Array[::Spoom::Coverage::Snapshot], title: ::String).void }
|
334
|
+
def initialize(snapshots:, title: T.unsafe(nil)); end
|
335
|
+
end
|
336
|
+
|
337
|
+
class Spoom::Coverage::Cards::Timeline::Sigils < ::Spoom::Coverage::Cards::Timeline
|
338
|
+
sig { params(snapshots: T::Array[::Spoom::Coverage::Snapshot], title: ::String).void }
|
339
|
+
def initialize(snapshots:, title: T.unsafe(nil)); end
|
340
|
+
end
|
341
|
+
|
342
|
+
class Spoom::Coverage::Cards::Timeline::Sigs < ::Spoom::Coverage::Cards::Timeline
|
343
|
+
sig { params(snapshots: T::Array[::Spoom::Coverage::Snapshot], title: ::String).void }
|
344
|
+
def initialize(snapshots:, title: T.unsafe(nil)); end
|
345
|
+
end
|
346
|
+
|
347
|
+
class Spoom::Coverage::Cards::Timeline::Versions < ::Spoom::Coverage::Cards::Timeline
|
348
|
+
sig { params(snapshots: T::Array[::Spoom::Coverage::Snapshot], title: ::String).void }
|
349
|
+
def initialize(snapshots:, title: T.unsafe(nil)); end
|
350
|
+
end
|
351
|
+
|
352
|
+
module Spoom::Coverage::D3
|
353
|
+
class << self
|
354
|
+
sig { params(palette: ::Spoom::Coverage::D3::ColorPalette).returns(::String) }
|
355
|
+
def header_script(palette); end
|
356
|
+
|
357
|
+
sig { returns(::String) }
|
358
|
+
def header_style; end
|
359
|
+
end
|
360
|
+
end
|
361
|
+
|
362
|
+
# @abstract It cannont be directly instantiated. Subclasses must implement the `abstract` methods below.
|
363
|
+
class Spoom::Coverage::D3::Base
|
364
|
+
abstract!
|
365
|
+
|
366
|
+
sig { params(id: ::String, data: T.untyped).void }
|
367
|
+
def initialize(id, data); end
|
368
|
+
|
369
|
+
sig { returns(::String) }
|
370
|
+
def html; end
|
371
|
+
|
372
|
+
sig { returns(::String) }
|
373
|
+
def id; end
|
374
|
+
|
375
|
+
# @abstract
|
376
|
+
sig { abstract.returns(::String) }
|
377
|
+
def script; end
|
378
|
+
|
379
|
+
sig { returns(::String) }
|
380
|
+
def tooltip; end
|
381
|
+
|
382
|
+
class << self
|
383
|
+
sig { returns(::String) }
|
384
|
+
def header_script; end
|
385
|
+
|
386
|
+
sig { returns(::String) }
|
387
|
+
def header_style; end
|
388
|
+
end
|
389
|
+
end
|
390
|
+
|
391
|
+
Spoom::Coverage::D3::COLOR_FALSE = T.let(T.unsafe(nil), String)
|
392
|
+
Spoom::Coverage::D3::COLOR_IGNORE = T.let(T.unsafe(nil), String)
|
393
|
+
Spoom::Coverage::D3::COLOR_STRICT = T.let(T.unsafe(nil), String)
|
394
|
+
Spoom::Coverage::D3::COLOR_STRONG = T.let(T.unsafe(nil), String)
|
395
|
+
Spoom::Coverage::D3::COLOR_TRUE = T.let(T.unsafe(nil), String)
|
396
|
+
|
397
|
+
class Spoom::Coverage::D3::CircleMap < ::Spoom::Coverage::D3::Base
|
398
|
+
sig { override.returns(::String) }
|
399
|
+
def script; end
|
400
|
+
|
401
|
+
class << self
|
402
|
+
sig { returns(::String) }
|
403
|
+
def header_script; end
|
404
|
+
|
405
|
+
sig { returns(::String) }
|
406
|
+
def header_style; end
|
407
|
+
end
|
408
|
+
end
|
409
|
+
|
410
|
+
class Spoom::Coverage::D3::CircleMap::Sigils < ::Spoom::Coverage::D3::CircleMap
|
411
|
+
sig { params(id: ::String, sigils_tree: ::Spoom::FileTree).void }
|
412
|
+
def initialize(id, sigils_tree); end
|
413
|
+
|
414
|
+
sig { params(node: ::Spoom::FileTree::Node).returns(::Float) }
|
415
|
+
def tree_node_score(node); end
|
416
|
+
|
417
|
+
sig { params(node: ::Spoom::FileTree::Node).returns(T.nilable(::String)) }
|
418
|
+
def tree_node_strictness(node); end
|
419
|
+
|
420
|
+
sig { params(node: ::Spoom::FileTree::Node).returns(T::Hash[::Symbol, T.untyped]) }
|
421
|
+
def tree_node_to_json(node); end
|
422
|
+
end
|
423
|
+
|
424
|
+
class Spoom::Coverage::D3::ColorPalette < ::T::Struct
|
425
|
+
prop :false, ::String
|
426
|
+
prop :ignore, ::String
|
427
|
+
prop :strict, ::String
|
428
|
+
prop :strong, ::String
|
429
|
+
prop :true, ::String
|
430
|
+
|
431
|
+
class << self
|
432
|
+
def inherited(s); end
|
433
|
+
end
|
434
|
+
end
|
435
|
+
|
436
|
+
# @abstract It cannont be directly instantiated. Subclasses must implement the `abstract` methods below.
|
437
|
+
class Spoom::Coverage::D3::Pie < ::Spoom::Coverage::D3::Base
|
438
|
+
abstract!
|
439
|
+
|
440
|
+
sig { params(id: ::String, title: ::String, data: T.untyped).void }
|
441
|
+
def initialize(id, title, data); end
|
442
|
+
|
443
|
+
sig { override.returns(::String) }
|
444
|
+
def script; end
|
445
|
+
|
446
|
+
class << self
|
447
|
+
sig { returns(::String) }
|
448
|
+
def header_script; end
|
449
|
+
|
450
|
+
sig { returns(::String) }
|
451
|
+
def header_style; end
|
452
|
+
end
|
453
|
+
end
|
454
|
+
|
455
|
+
class Spoom::Coverage::D3::Pie::Calls < ::Spoom::Coverage::D3::Pie
|
456
|
+
sig { params(id: ::String, title: ::String, snapshot: ::Spoom::Coverage::Snapshot).void }
|
457
|
+
def initialize(id, title, snapshot); end
|
458
|
+
|
459
|
+
sig { override.returns(::String) }
|
460
|
+
def tooltip; end
|
461
|
+
end
|
462
|
+
|
463
|
+
class Spoom::Coverage::D3::Pie::Sigils < ::Spoom::Coverage::D3::Pie
|
464
|
+
sig { params(id: ::String, title: ::String, snapshot: ::Spoom::Coverage::Snapshot).void }
|
465
|
+
def initialize(id, title, snapshot); end
|
466
|
+
|
467
|
+
sig { override.returns(::String) }
|
468
|
+
def tooltip; end
|
469
|
+
end
|
470
|
+
|
471
|
+
class Spoom::Coverage::D3::Pie::Sigs < ::Spoom::Coverage::D3::Pie
|
472
|
+
sig { params(id: ::String, title: ::String, snapshot: ::Spoom::Coverage::Snapshot).void }
|
473
|
+
def initialize(id, title, snapshot); end
|
474
|
+
|
475
|
+
sig { override.returns(::String) }
|
476
|
+
def tooltip; end
|
477
|
+
end
|
478
|
+
|
479
|
+
# @abstract It cannont be directly instantiated. Subclasses must implement the `abstract` methods below.
|
480
|
+
class Spoom::Coverage::D3::Timeline < ::Spoom::Coverage::D3::Base
|
481
|
+
abstract!
|
482
|
+
|
483
|
+
sig { params(id: ::String, data: T.untyped, keys: T::Array[::String]).void }
|
484
|
+
def initialize(id, data, keys); end
|
485
|
+
|
486
|
+
sig { params(y: ::String, color: ::String, curve: ::String).returns(::String) }
|
487
|
+
def area(y:, color: T.unsafe(nil), curve: T.unsafe(nil)); end
|
488
|
+
|
489
|
+
sig { params(y: ::String, color: ::String, curve: ::String).returns(::String) }
|
490
|
+
def line(y:, color: T.unsafe(nil), curve: T.unsafe(nil)); end
|
491
|
+
|
492
|
+
# @abstract
|
493
|
+
sig { abstract.returns(::String) }
|
494
|
+
def plot; end
|
495
|
+
|
496
|
+
sig { params(y: ::String).returns(::String) }
|
497
|
+
def points(y:); end
|
498
|
+
|
499
|
+
sig { override.returns(::String) }
|
500
|
+
def script; end
|
501
|
+
|
502
|
+
sig { returns(::String) }
|
503
|
+
def x_scale; end
|
504
|
+
|
505
|
+
sig { returns(::String) }
|
506
|
+
def x_ticks; end
|
507
|
+
|
508
|
+
sig { params(min: ::String, max: ::String, ticks: ::String).returns(::String) }
|
509
|
+
def y_scale(min:, max:, ticks:); end
|
510
|
+
|
511
|
+
sig { params(ticks: ::String, format: ::String, padding: ::Integer).returns(::String) }
|
512
|
+
def y_ticks(ticks:, format:, padding:); end
|
513
|
+
|
514
|
+
class << self
|
515
|
+
sig { returns(::String) }
|
516
|
+
def header_script; end
|
517
|
+
|
518
|
+
sig { returns(::String) }
|
519
|
+
def header_style; end
|
520
|
+
end
|
521
|
+
end
|
522
|
+
|
523
|
+
class Spoom::Coverage::D3::Timeline::Calls < ::Spoom::Coverage::D3::Timeline::Stacked
|
524
|
+
sig { params(id: ::String, snapshots: T::Array[::Spoom::Coverage::Snapshot]).void }
|
525
|
+
def initialize(id, snapshots); end
|
526
|
+
|
527
|
+
sig { override.returns(::String) }
|
528
|
+
def tooltip; end
|
529
|
+
end
|
530
|
+
|
531
|
+
class Spoom::Coverage::D3::Timeline::RBIs < ::Spoom::Coverage::D3::Timeline::Stacked
|
532
|
+
sig { params(id: ::String, snapshots: T::Array[::Spoom::Coverage::Snapshot]).void }
|
533
|
+
def initialize(id, snapshots); end
|
534
|
+
|
535
|
+
sig { override.params(y: ::String, color: ::String, curve: ::String).returns(::String) }
|
536
|
+
def line(y:, color: T.unsafe(nil), curve: T.unsafe(nil)); end
|
537
|
+
|
538
|
+
sig { override.returns(::String) }
|
539
|
+
def plot; end
|
540
|
+
|
541
|
+
sig { override.returns(::String) }
|
542
|
+
def script; end
|
543
|
+
|
544
|
+
sig { override.returns(::String) }
|
545
|
+
def tooltip; end
|
546
|
+
end
|
547
|
+
|
548
|
+
class Spoom::Coverage::D3::Timeline::Runtimes < ::Spoom::Coverage::D3::Timeline
|
549
|
+
sig { params(id: ::String, snapshots: T::Array[::Spoom::Coverage::Snapshot]).void }
|
550
|
+
def initialize(id, snapshots); end
|
551
|
+
|
552
|
+
sig { override.returns(::String) }
|
553
|
+
def plot; end
|
554
|
+
|
555
|
+
sig { override.returns(::String) }
|
556
|
+
def tooltip; end
|
557
|
+
end
|
558
|
+
|
559
|
+
class Spoom::Coverage::D3::Timeline::Sigils < ::Spoom::Coverage::D3::Timeline::Stacked
|
560
|
+
sig { params(id: ::String, snapshots: T::Array[::Spoom::Coverage::Snapshot]).void }
|
561
|
+
def initialize(id, snapshots); end
|
562
|
+
|
563
|
+
sig { override.returns(::String) }
|
564
|
+
def tooltip; end
|
565
|
+
end
|
566
|
+
|
567
|
+
class Spoom::Coverage::D3::Timeline::Sigs < ::Spoom::Coverage::D3::Timeline::Stacked
|
568
|
+
sig { params(id: ::String, snapshots: T::Array[::Spoom::Coverage::Snapshot]).void }
|
569
|
+
def initialize(id, snapshots); end
|
570
|
+
|
571
|
+
sig { override.returns(::String) }
|
572
|
+
def tooltip; end
|
573
|
+
end
|
574
|
+
|
575
|
+
# @abstract It cannont be directly instantiated. Subclasses must implement the `abstract` methods below.
|
576
|
+
class Spoom::Coverage::D3::Timeline::Stacked < ::Spoom::Coverage::D3::Timeline
|
577
|
+
abstract!
|
578
|
+
|
579
|
+
def initialize(*args, **_arg1, &blk); end
|
580
|
+
|
581
|
+
sig { override.params(y: ::String, color: ::String, curve: ::String).returns(::String) }
|
582
|
+
def line(y:, color: T.unsafe(nil), curve: T.unsafe(nil)); end
|
583
|
+
|
584
|
+
sig { override.returns(::String) }
|
585
|
+
def plot; end
|
586
|
+
|
587
|
+
sig { override.returns(::String) }
|
588
|
+
def script; end
|
589
|
+
end
|
590
|
+
|
591
|
+
class Spoom::Coverage::D3::Timeline::Versions < ::Spoom::Coverage::D3::Timeline
|
592
|
+
sig { params(id: ::String, snapshots: T::Array[::Spoom::Coverage::Snapshot]).void }
|
593
|
+
def initialize(id, snapshots); end
|
594
|
+
|
595
|
+
sig { override.returns(::String) }
|
596
|
+
def plot; end
|
597
|
+
|
598
|
+
sig { override.returns(::String) }
|
599
|
+
def tooltip; end
|
600
|
+
end
|
601
|
+
|
602
|
+
# @abstract It cannont be directly instantiated. Subclasses must implement the `abstract` methods below.
|
603
|
+
class Spoom::Coverage::Page < ::Spoom::Coverage::Template
|
604
|
+
abstract!
|
605
|
+
|
606
|
+
sig { params(title: ::String, palette: ::Spoom::Coverage::D3::ColorPalette, template: ::String).void }
|
607
|
+
def initialize(title:, palette:, template: T.unsafe(nil)); end
|
608
|
+
|
609
|
+
sig { returns(::String) }
|
610
|
+
def body_html; end
|
611
|
+
|
612
|
+
# @abstract
|
613
|
+
sig { abstract.returns(T::Array[::Spoom::Coverage::Cards::Card]) }
|
614
|
+
def cards; end
|
615
|
+
|
616
|
+
sig { returns(::String) }
|
617
|
+
def footer_html; end
|
618
|
+
|
619
|
+
sig { returns(::String) }
|
620
|
+
def header_html; end
|
621
|
+
|
622
|
+
sig { returns(::String) }
|
623
|
+
def header_script; end
|
624
|
+
|
625
|
+
sig { returns(::String) }
|
626
|
+
def header_style; end
|
627
|
+
|
628
|
+
sig { returns(::Spoom::Coverage::D3::ColorPalette) }
|
629
|
+
def palette; end
|
630
|
+
|
631
|
+
sig { returns(::String) }
|
632
|
+
def title; end
|
633
|
+
end
|
634
|
+
|
635
|
+
Spoom::Coverage::Page::TEMPLATE = T.let(T.unsafe(nil), String)
|
636
|
+
|
637
|
+
class Spoom::Coverage::Report < ::Spoom::Coverage::Page
|
638
|
+
sig do
|
639
|
+
params(
|
640
|
+
project_name: ::String,
|
641
|
+
palette: ::Spoom::Coverage::D3::ColorPalette,
|
642
|
+
snapshots: T::Array[::Spoom::Coverage::Snapshot],
|
643
|
+
sigils_tree: ::Spoom::FileTree,
|
644
|
+
sorbet_intro_commit: T.nilable(::String),
|
645
|
+
sorbet_intro_date: T.nilable(::Time)
|
646
|
+
).void
|
647
|
+
end
|
648
|
+
def initialize(project_name:, palette:, snapshots:, sigils_tree:, sorbet_intro_commit: T.unsafe(nil), sorbet_intro_date: T.unsafe(nil)); end
|
649
|
+
|
650
|
+
sig { override.returns(T::Array[::Spoom::Coverage::Cards::Card]) }
|
651
|
+
def cards; end
|
652
|
+
|
653
|
+
sig { override.returns(::String) }
|
654
|
+
def header_html; end
|
655
|
+
|
656
|
+
sig { returns(::String) }
|
657
|
+
def project_name; end
|
658
|
+
|
659
|
+
sig { returns(::Spoom::FileTree) }
|
660
|
+
def sigils_tree; end
|
661
|
+
|
662
|
+
sig { returns(T::Array[::Spoom::Coverage::Snapshot]) }
|
663
|
+
def snapshots; end
|
664
|
+
|
665
|
+
sig { returns(T.nilable(::String)) }
|
666
|
+
def sorbet_intro_commit; end
|
667
|
+
|
668
|
+
sig { returns(T.nilable(::Time)) }
|
669
|
+
def sorbet_intro_date; end
|
670
|
+
end
|
671
|
+
|
672
|
+
class Spoom::Coverage::Snapshot < ::T::Struct
|
673
|
+
prop :calls_typed, ::Integer, default: T.unsafe(nil)
|
674
|
+
prop :calls_untyped, ::Integer, default: T.unsafe(nil)
|
675
|
+
prop :classes, ::Integer, default: T.unsafe(nil)
|
676
|
+
prop :commit_sha, T.nilable(::String), default: T.unsafe(nil)
|
677
|
+
prop :commit_timestamp, T.nilable(::Integer), default: T.unsafe(nil)
|
678
|
+
prop :duration, ::Integer, default: T.unsafe(nil)
|
679
|
+
prop :files, ::Integer, default: T.unsafe(nil)
|
680
|
+
prop :methods_with_sig, ::Integer, default: T.unsafe(nil)
|
681
|
+
prop :methods_without_sig, ::Integer, default: T.unsafe(nil)
|
682
|
+
prop :modules, ::Integer, default: T.unsafe(nil)
|
683
|
+
prop :rbi_files, ::Integer, default: T.unsafe(nil)
|
684
|
+
prop :sigils, T::Hash[::String, ::Integer], default: T.unsafe(nil)
|
685
|
+
prop :singleton_classes, ::Integer, default: T.unsafe(nil)
|
686
|
+
prop :timestamp, ::Integer, default: T.unsafe(nil)
|
687
|
+
prop :version_runtime, T.nilable(::String), default: T.unsafe(nil)
|
688
|
+
prop :version_static, T.nilable(::String), default: T.unsafe(nil)
|
689
|
+
|
690
|
+
sig { params(out: T.any(::IO, ::StringIO), colors: T::Boolean, indent_level: ::Integer).void }
|
691
|
+
def print(out: T.unsafe(nil), colors: T.unsafe(nil), indent_level: T.unsafe(nil)); end
|
692
|
+
|
693
|
+
sig { params(arg: T.untyped).returns(::String) }
|
694
|
+
def to_json(*arg); end
|
695
|
+
|
696
|
+
class << self
|
697
|
+
sig { params(json: ::String).returns(::Spoom::Coverage::Snapshot) }
|
698
|
+
def from_json(json); end
|
699
|
+
|
700
|
+
sig { params(obj: T::Hash[::String, T.untyped]).returns(::Spoom::Coverage::Snapshot) }
|
701
|
+
def from_obj(obj); end
|
702
|
+
|
703
|
+
def inherited(s); end
|
704
|
+
end
|
705
|
+
end
|
706
|
+
|
707
|
+
# The strictness name as found in the Sorbet metrics file
|
708
|
+
Spoom::Coverage::Snapshot::STRICTNESSES = T.let(T.unsafe(nil), Array)
|
709
|
+
|
710
|
+
class Spoom::Coverage::SnapshotPrinter < ::Spoom::Printer
|
711
|
+
sig { params(snapshot: ::Spoom::Coverage::Snapshot).void }
|
712
|
+
def print_snapshot(snapshot); end
|
713
|
+
|
714
|
+
private
|
715
|
+
|
716
|
+
sig { params(value: T.nilable(::Integer), total: T.nilable(::Integer)).returns(::String) }
|
717
|
+
def percent(value, total); end
|
718
|
+
|
719
|
+
sig { params(hash: T::Hash[::String, ::Integer], total: ::Integer).void }
|
720
|
+
def print_map(hash, total); end
|
721
|
+
end
|
722
|
+
|
723
|
+
# @abstract It cannont be directly instantiated. Subclasses must implement the `abstract` methods below.
|
724
|
+
class Spoom::Coverage::Template
|
725
|
+
abstract!
|
726
|
+
|
727
|
+
# Create a new template from an Erb file path
|
728
|
+
sig { params(template: ::String).void }
|
729
|
+
def initialize(template:); end
|
730
|
+
|
731
|
+
sig { returns(::String) }
|
732
|
+
def erb; end
|
733
|
+
|
734
|
+
sig { returns(::Binding) }
|
735
|
+
def get_binding; end
|
736
|
+
|
737
|
+
sig { returns(::String) }
|
738
|
+
def html; end
|
739
|
+
end
|
740
|
+
|
741
|
+
class Spoom::Error < ::StandardError; end
|
742
|
+
|
743
|
+
class Spoom::ExecResult < ::T::Struct
|
744
|
+
const :err, ::String
|
745
|
+
const :exit_code, ::Integer
|
746
|
+
const :out, ::String
|
747
|
+
const :status, T::Boolean
|
748
|
+
|
749
|
+
class << self
|
750
|
+
def inherited(s); end
|
751
|
+
end
|
752
|
+
end
|
753
|
+
|
754
|
+
# Build a file hierarchy from a set of file paths.
|
755
|
+
class Spoom::FileTree
|
756
|
+
sig { params(paths: T::Enumerable[::String], strip_prefix: T.nilable(::String)).void }
|
757
|
+
def initialize(paths = T.unsafe(nil), strip_prefix: T.unsafe(nil)); end
|
758
|
+
|
759
|
+
# Add a `path` to the tree
|
760
|
+
#
|
761
|
+
# This will create all nodes until the root of `path`.
|
762
|
+
sig { params(path: ::String).returns(::Spoom::FileTree::Node) }
|
763
|
+
def add_path(path); end
|
764
|
+
|
765
|
+
# Add all `paths` to the tree
|
766
|
+
sig { params(paths: T::Enumerable[::String]).void }
|
767
|
+
def add_paths(paths); end
|
768
|
+
|
769
|
+
# All the nodes in this tree
|
770
|
+
sig { returns(T::Array[::Spoom::FileTree::Node]) }
|
771
|
+
def nodes; end
|
772
|
+
|
773
|
+
# All the paths in this tree
|
774
|
+
sig { returns(T::Array[::String]) }
|
775
|
+
def paths; end
|
776
|
+
|
777
|
+
sig do
|
778
|
+
params(
|
779
|
+
out: T.any(::IO, ::StringIO),
|
780
|
+
show_strictness: T::Boolean,
|
781
|
+
colors: T::Boolean,
|
782
|
+
indent_level: ::Integer
|
783
|
+
).void
|
784
|
+
end
|
785
|
+
def print(out: T.unsafe(nil), show_strictness: T.unsafe(nil), colors: T.unsafe(nil), indent_level: T.unsafe(nil)); end
|
786
|
+
|
787
|
+
# All root nodes
|
788
|
+
sig { returns(T::Array[::Spoom::FileTree::Node]) }
|
789
|
+
def roots; end
|
790
|
+
|
791
|
+
sig { returns(T.nilable(::String)) }
|
792
|
+
def strip_prefix; end
|
793
|
+
|
794
|
+
private
|
795
|
+
|
796
|
+
sig do
|
797
|
+
params(
|
798
|
+
node: ::Spoom::FileTree::Node,
|
799
|
+
collected_nodes: T::Array[::Spoom::FileTree::Node]
|
800
|
+
).returns(T::Array[::Spoom::FileTree::Node])
|
801
|
+
end
|
802
|
+
def collect_nodes(node, collected_nodes = T.unsafe(nil)); end
|
803
|
+
end
|
804
|
+
|
805
|
+
# A node representing either a file or a directory inside a FileTree
|
806
|
+
class Spoom::FileTree::Node < ::T::Struct
|
807
|
+
const :children, T::Hash[::String, ::Spoom::FileTree::Node], default: T.unsafe(nil)
|
808
|
+
const :name, ::String
|
809
|
+
const :parent, T.nilable(::Spoom::FileTree::Node)
|
810
|
+
|
811
|
+
# Full path to this node from root
|
812
|
+
sig { returns(::String) }
|
813
|
+
def path; end
|
814
|
+
|
815
|
+
class << self
|
816
|
+
def inherited(s); end
|
817
|
+
end
|
818
|
+
end
|
819
|
+
|
820
|
+
# An internal class used to print a FileTree
|
821
|
+
#
|
822
|
+
# See `FileTree#print`
|
823
|
+
class Spoom::FileTree::TreePrinter < ::Spoom::Printer
|
824
|
+
sig do
|
825
|
+
params(
|
826
|
+
tree: ::Spoom::FileTree,
|
827
|
+
out: T.any(::IO, ::StringIO),
|
828
|
+
show_strictness: T::Boolean,
|
829
|
+
colors: T::Boolean,
|
830
|
+
indent_level: ::Integer
|
831
|
+
).void
|
832
|
+
end
|
833
|
+
def initialize(tree:, out: T.unsafe(nil), show_strictness: T.unsafe(nil), colors: T.unsafe(nil), indent_level: T.unsafe(nil)); end
|
834
|
+
|
835
|
+
sig { params(node: ::Spoom::FileTree::Node).void }
|
836
|
+
def print_node(node); end
|
837
|
+
|
838
|
+
sig { params(nodes: T::Array[::Spoom::FileTree::Node]).void }
|
839
|
+
def print_nodes(nodes); end
|
840
|
+
|
841
|
+
sig { void }
|
842
|
+
def print_tree; end
|
843
|
+
|
844
|
+
sig { returns(::Spoom::FileTree) }
|
845
|
+
def tree; end
|
846
|
+
|
847
|
+
private
|
848
|
+
|
849
|
+
sig { params(node: ::Spoom::FileTree::Node).returns(T.nilable(::String)) }
|
850
|
+
def node_strictness(node); end
|
851
|
+
|
852
|
+
sig { params(strictness: T.nilable(::String)).returns(::Spoom::Color) }
|
853
|
+
def strictness_color(strictness); end
|
854
|
+
end
|
855
|
+
|
856
|
+
# Execute git commands
|
857
|
+
module Spoom::Git
|
858
|
+
class << self
|
859
|
+
# Git commands
|
860
|
+
sig { params(arg: ::String, path: ::String).returns(::Spoom::ExecResult) }
|
861
|
+
def checkout(*arg, path: T.unsafe(nil)); end
|
862
|
+
|
863
|
+
# Get the commit Time for a `sha`
|
864
|
+
sig { params(sha: ::String, path: ::String).returns(T.nilable(::Time)) }
|
865
|
+
def commit_time(sha, path: T.unsafe(nil)); end
|
866
|
+
|
867
|
+
# Get the commit epoch timestamp for a `sha`
|
868
|
+
sig { params(sha: ::String, path: ::String).returns(T.nilable(::Integer)) }
|
869
|
+
def commit_timestamp(sha, path: T.unsafe(nil)); end
|
870
|
+
|
871
|
+
sig { params(path: ::String).returns(T.nilable(::String)) }
|
872
|
+
def current_branch(path: T.unsafe(nil)); end
|
873
|
+
|
874
|
+
sig { params(arg: ::String, path: ::String).returns(::Spoom::ExecResult) }
|
875
|
+
def diff(*arg, path: T.unsafe(nil)); end
|
876
|
+
|
877
|
+
# Translate a git epoch timestamp into a Time
|
878
|
+
sig { params(timestamp: ::String).returns(::Time) }
|
879
|
+
def epoch_to_time(timestamp); end
|
880
|
+
|
881
|
+
# Execute a `command`
|
882
|
+
sig { params(command: ::String, arg: ::String, path: ::String).returns(::Spoom::ExecResult) }
|
883
|
+
def exec(command, *arg, path: T.unsafe(nil)); end
|
884
|
+
|
885
|
+
# Get the last commit sha
|
886
|
+
sig { params(path: ::String).returns(T.nilable(::String)) }
|
887
|
+
def last_commit(path: T.unsafe(nil)); end
|
888
|
+
|
889
|
+
sig { params(arg: ::String, path: ::String).returns(::Spoom::ExecResult) }
|
890
|
+
def log(*arg, path: T.unsafe(nil)); end
|
891
|
+
|
892
|
+
sig { params(arg: ::String, path: ::String).returns(::Spoom::ExecResult) }
|
893
|
+
def rev_parse(*arg, path: T.unsafe(nil)); end
|
894
|
+
|
895
|
+
sig { params(arg: ::String, path: ::String).returns(::Spoom::ExecResult) }
|
896
|
+
def show(*arg, path: T.unsafe(nil)); end
|
897
|
+
|
898
|
+
# Get the hash of the commit introducing the `sorbet/config` file
|
899
|
+
sig { params(path: ::String).returns(T.nilable(::String)) }
|
900
|
+
def sorbet_intro_commit(path: T.unsafe(nil)); end
|
901
|
+
|
902
|
+
# Get the hash of the commit removing the `sorbet/config` file
|
903
|
+
sig { params(path: ::String).returns(T.nilable(::String)) }
|
904
|
+
def sorbet_removal_commit(path: T.unsafe(nil)); end
|
905
|
+
|
906
|
+
# Is there uncommited changes in `path`?
|
907
|
+
sig { params(path: ::String).returns(T::Boolean) }
|
908
|
+
def workdir_clean?(path: T.unsafe(nil)); end
|
909
|
+
end
|
910
|
+
end
|
911
|
+
|
912
|
+
module Spoom::LSP; end
|
913
|
+
|
914
|
+
class Spoom::LSP::Client
|
915
|
+
sig { params(sorbet_bin: ::String, sorbet_args: ::String, path: ::String).void }
|
916
|
+
def initialize(sorbet_bin, *sorbet_args, path: T.unsafe(nil)); end
|
917
|
+
|
918
|
+
sig { void }
|
919
|
+
def close; end
|
920
|
+
|
921
|
+
sig { params(uri: ::String, line: ::Integer, column: ::Integer).returns(T::Array[::Spoom::LSP::Location]) }
|
922
|
+
def definitions(uri, line, column); end
|
923
|
+
|
924
|
+
sig { params(uri: ::String).returns(T::Array[::Spoom::LSP::DocumentSymbol]) }
|
925
|
+
def document_symbols(uri); end
|
926
|
+
|
927
|
+
sig { params(uri: ::String, line: ::Integer, column: ::Integer).returns(T.nilable(::Spoom::LSP::Hover)) }
|
928
|
+
def hover(uri, line, column); end
|
929
|
+
|
930
|
+
sig { returns(::Integer) }
|
931
|
+
def next_id; end
|
932
|
+
|
933
|
+
# LSP requests
|
934
|
+
#
|
935
|
+
# @raise [Error::AlreadyOpen]
|
936
|
+
sig { params(workspace_path: ::String).void }
|
937
|
+
def open(workspace_path); end
|
938
|
+
|
939
|
+
sig { returns(T.nilable(T::Hash[T.untyped, T.untyped])) }
|
940
|
+
def read; end
|
941
|
+
|
942
|
+
# @raise [Error::BadHeaders]
|
943
|
+
sig { returns(T.nilable(::String)) }
|
944
|
+
def read_raw; end
|
945
|
+
|
946
|
+
sig do
|
947
|
+
params(
|
948
|
+
uri: ::String,
|
949
|
+
line: ::Integer,
|
950
|
+
column: ::Integer,
|
951
|
+
include_decl: T::Boolean
|
952
|
+
).returns(T::Array[::Spoom::LSP::Location])
|
953
|
+
end
|
954
|
+
def references(uri, line, column, include_decl = T.unsafe(nil)); end
|
955
|
+
|
956
|
+
sig { params(message: ::Spoom::LSP::Message).returns(T.nilable(T::Hash[T.untyped, T.untyped])) }
|
957
|
+
def send(message); end
|
958
|
+
|
959
|
+
sig { params(json_string: ::String).void }
|
960
|
+
def send_raw(json_string); end
|
961
|
+
|
962
|
+
sig { params(uri: ::String, line: ::Integer, column: ::Integer).returns(T::Array[::Spoom::LSP::SignatureHelp]) }
|
963
|
+
def signatures(uri, line, column); end
|
964
|
+
|
965
|
+
sig { params(query: ::String).returns(T::Array[::Spoom::LSP::DocumentSymbol]) }
|
966
|
+
def symbols(query); end
|
967
|
+
|
968
|
+
sig { params(uri: ::String, line: ::Integer, column: ::Integer).returns(T::Array[::Spoom::LSP::Location]) }
|
969
|
+
def type_definitions(uri, line, column); end
|
970
|
+
end
|
971
|
+
|
972
|
+
class Spoom::LSP::Diagnostic < ::T::Struct
|
973
|
+
include ::Spoom::LSP::PrintableSymbol
|
974
|
+
|
975
|
+
const :code, ::Integer
|
976
|
+
const :informations, ::Object
|
977
|
+
const :message, ::String
|
978
|
+
const :range, ::Spoom::LSP::Range
|
979
|
+
|
980
|
+
sig { override.params(printer: ::Spoom::LSP::SymbolPrinter).void }
|
981
|
+
def accept_printer(printer); end
|
982
|
+
|
983
|
+
sig { returns(::String) }
|
984
|
+
def to_s; end
|
985
|
+
|
986
|
+
class << self
|
987
|
+
sig { params(json: T::Hash[T.untyped, T.untyped]).returns(::Spoom::LSP::Diagnostic) }
|
988
|
+
def from_json(json); end
|
989
|
+
|
990
|
+
def inherited(s); end
|
991
|
+
end
|
992
|
+
end
|
993
|
+
|
994
|
+
class Spoom::LSP::DocumentSymbol < ::T::Struct
|
995
|
+
include ::Spoom::LSP::PrintableSymbol
|
996
|
+
|
997
|
+
const :children, T::Array[::Spoom::LSP::DocumentSymbol]
|
998
|
+
const :detail, T.nilable(::String)
|
999
|
+
const :kind, ::Integer
|
1000
|
+
const :location, T.nilable(::Spoom::LSP::Location)
|
1001
|
+
const :name, ::String
|
1002
|
+
const :range, T.nilable(::Spoom::LSP::Range)
|
1003
|
+
|
1004
|
+
sig { override.params(printer: ::Spoom::LSP::SymbolPrinter).void }
|
1005
|
+
def accept_printer(printer); end
|
1006
|
+
|
1007
|
+
sig { returns(::String) }
|
1008
|
+
def kind_string; end
|
1009
|
+
|
1010
|
+
sig { returns(::String) }
|
1011
|
+
def to_s; end
|
1012
|
+
|
1013
|
+
class << self
|
1014
|
+
sig { params(json: T::Hash[T.untyped, T.untyped]).returns(::Spoom::LSP::DocumentSymbol) }
|
1015
|
+
def from_json(json); end
|
1016
|
+
|
1017
|
+
def inherited(s); end
|
1018
|
+
end
|
1019
|
+
end
|
1020
|
+
|
1021
|
+
Spoom::LSP::DocumentSymbol::SYMBOL_KINDS = T.let(T.unsafe(nil), Hash)
|
1022
|
+
class Spoom::LSP::Error < ::StandardError; end
|
1023
|
+
class Spoom::LSP::Error::AlreadyOpen < ::Spoom::LSP::Error; end
|
1024
|
+
class Spoom::LSP::Error::BadHeaders < ::Spoom::LSP::Error; end
|
1025
|
+
|
1026
|
+
class Spoom::LSP::Error::Diagnostics < ::Spoom::LSP::Error
|
1027
|
+
sig { params(uri: ::String, diagnostics: T::Array[::Spoom::LSP::Diagnostic]).void }
|
1028
|
+
def initialize(uri, diagnostics); end
|
1029
|
+
|
1030
|
+
sig { returns(T::Array[::Spoom::LSP::Diagnostic]) }
|
1031
|
+
def diagnostics; end
|
1032
|
+
|
1033
|
+
sig { returns(::String) }
|
1034
|
+
def uri; end
|
1035
|
+
|
1036
|
+
class << self
|
1037
|
+
sig { params(json: T::Hash[T.untyped, T.untyped]).returns(::Spoom::LSP::Error::Diagnostics) }
|
1038
|
+
def from_json(json); end
|
1039
|
+
end
|
1040
|
+
end
|
1041
|
+
|
1042
|
+
class Spoom::LSP::Hover < ::T::Struct
|
1043
|
+
include ::Spoom::LSP::PrintableSymbol
|
1044
|
+
|
1045
|
+
const :contents, ::String
|
1046
|
+
const :range, T.nilable(T::Range[T.untyped])
|
1047
|
+
|
1048
|
+
sig { override.params(printer: ::Spoom::LSP::SymbolPrinter).void }
|
1049
|
+
def accept_printer(printer); end
|
1050
|
+
|
1051
|
+
sig { returns(::String) }
|
1052
|
+
def to_s; end
|
1053
|
+
|
1054
|
+
class << self
|
1055
|
+
sig { params(json: T::Hash[T.untyped, T.untyped]).returns(::Spoom::LSP::Hover) }
|
1056
|
+
def from_json(json); end
|
1057
|
+
|
1058
|
+
def inherited(s); end
|
1059
|
+
end
|
1060
|
+
end
|
1061
|
+
|
1062
|
+
class Spoom::LSP::Location < ::T::Struct
|
1063
|
+
include ::Spoom::LSP::PrintableSymbol
|
1064
|
+
|
1065
|
+
const :range, ::Spoom::LSP::Range
|
1066
|
+
const :uri, ::String
|
1067
|
+
|
1068
|
+
sig { override.params(printer: ::Spoom::LSP::SymbolPrinter).void }
|
1069
|
+
def accept_printer(printer); end
|
1070
|
+
|
1071
|
+
sig { returns(::String) }
|
1072
|
+
def to_s; end
|
1073
|
+
|
1074
|
+
class << self
|
1075
|
+
sig { params(json: T::Hash[T.untyped, T.untyped]).returns(::Spoom::LSP::Location) }
|
1076
|
+
def from_json(json); end
|
1077
|
+
|
1078
|
+
def inherited(s); end
|
1079
|
+
end
|
1080
|
+
end
|
1081
|
+
|
1082
|
+
# A general message as defined by JSON-RPC.
|
1083
|
+
#
|
1084
|
+
# The language server protocol always uses `"2.0"` as the `jsonrpc` version.
|
1085
|
+
class Spoom::LSP::Message
|
1086
|
+
sig { void }
|
1087
|
+
def initialize; end
|
1088
|
+
|
1089
|
+
sig { returns(T::Hash[T.untyped, T.untyped]) }
|
1090
|
+
def as_json; end
|
1091
|
+
|
1092
|
+
sig { returns(::String) }
|
1093
|
+
def jsonrpc; end
|
1094
|
+
|
1095
|
+
sig { params(args: T.untyped).returns(::String) }
|
1096
|
+
def to_json(*args); end
|
1097
|
+
end
|
1098
|
+
|
1099
|
+
# A notification message.
|
1100
|
+
#
|
1101
|
+
# A processed notification message must not send a response back. They work like events.
|
1102
|
+
class Spoom::LSP::Notification < ::Spoom::LSP::Message
|
1103
|
+
sig { params(method: ::String, params: T::Hash[T.untyped, T.untyped]).void }
|
1104
|
+
def initialize(method, params); end
|
1105
|
+
|
1106
|
+
sig { returns(::String) }
|
1107
|
+
def method; end
|
1108
|
+
|
1109
|
+
sig { returns(T::Hash[T.untyped, T.untyped]) }
|
1110
|
+
def params; end
|
1111
|
+
end
|
1112
|
+
|
1113
|
+
class Spoom::LSP::Position < ::T::Struct
|
1114
|
+
include ::Spoom::LSP::PrintableSymbol
|
1115
|
+
|
1116
|
+
const :char, ::Integer
|
1117
|
+
const :line, ::Integer
|
1118
|
+
|
1119
|
+
sig { override.params(printer: ::Spoom::LSP::SymbolPrinter).void }
|
1120
|
+
def accept_printer(printer); end
|
1121
|
+
|
1122
|
+
sig { returns(::String) }
|
1123
|
+
def to_s; end
|
1124
|
+
|
1125
|
+
class << self
|
1126
|
+
sig { params(json: T::Hash[T.untyped, T.untyped]).returns(::Spoom::LSP::Position) }
|
1127
|
+
def from_json(json); end
|
1128
|
+
|
1129
|
+
def inherited(s); end
|
1130
|
+
end
|
1131
|
+
end
|
1132
|
+
|
1133
|
+
# @abstract Subclasses must implement the `abstract` methods below.
|
1134
|
+
module Spoom::LSP::PrintableSymbol
|
1135
|
+
interface!
|
1136
|
+
|
1137
|
+
# @abstract
|
1138
|
+
sig { abstract.params(printer: ::Spoom::LSP::SymbolPrinter).void }
|
1139
|
+
def accept_printer(printer); end
|
1140
|
+
end
|
1141
|
+
|
1142
|
+
class Spoom::LSP::Range < ::T::Struct
|
1143
|
+
include ::Spoom::LSP::PrintableSymbol
|
1144
|
+
|
1145
|
+
const :end, ::Spoom::LSP::Position
|
1146
|
+
const :start, ::Spoom::LSP::Position
|
1147
|
+
|
1148
|
+
sig { override.params(printer: ::Spoom::LSP::SymbolPrinter).void }
|
1149
|
+
def accept_printer(printer); end
|
1150
|
+
|
1151
|
+
sig { returns(::String) }
|
1152
|
+
def to_s; end
|
1153
|
+
|
1154
|
+
class << self
|
1155
|
+
sig { params(json: T::Hash[T.untyped, T.untyped]).returns(::Spoom::LSP::Range) }
|
1156
|
+
def from_json(json); end
|
1157
|
+
|
1158
|
+
def inherited(s); end
|
1159
|
+
end
|
1160
|
+
end
|
1161
|
+
|
1162
|
+
# A request message to describe a request between the client and the server.
|
1163
|
+
#
|
1164
|
+
# Every processed request must send a response back to the sender of the request.
|
1165
|
+
class Spoom::LSP::Request < ::Spoom::LSP::Message
|
1166
|
+
sig { params(id: ::Integer, method: ::String, params: T::Hash[T.untyped, T.untyped]).void }
|
1167
|
+
def initialize(id, method, params); end
|
1168
|
+
|
1169
|
+
sig { returns(::Integer) }
|
1170
|
+
def id; end
|
1171
|
+
|
1172
|
+
sig { returns(::String) }
|
1173
|
+
def method; end
|
1174
|
+
|
1175
|
+
sig { returns(T::Hash[T.untyped, T.untyped]) }
|
1176
|
+
def params; end
|
1177
|
+
end
|
1178
|
+
|
1179
|
+
class Spoom::LSP::ResponseError < ::Spoom::LSP::Error
|
1180
|
+
sig { params(code: ::Integer, message: ::String, data: T::Hash[T.untyped, T.untyped]).void }
|
1181
|
+
def initialize(code, message, data); end
|
1182
|
+
|
1183
|
+
sig { returns(::Integer) }
|
1184
|
+
def code; end
|
1185
|
+
|
1186
|
+
sig { returns(T::Hash[T.untyped, T.untyped]) }
|
1187
|
+
def data; end
|
1188
|
+
|
1189
|
+
sig { returns(::String) }
|
1190
|
+
def message; end
|
1191
|
+
|
1192
|
+
class << self
|
1193
|
+
sig { params(json: T::Hash[T.untyped, T.untyped]).returns(::Spoom::LSP::ResponseError) }
|
1194
|
+
def from_json(json); end
|
1195
|
+
end
|
1196
|
+
end
|
1197
|
+
|
1198
|
+
class Spoom::LSP::SignatureHelp < ::T::Struct
|
1199
|
+
include ::Spoom::LSP::PrintableSymbol
|
1200
|
+
|
1201
|
+
const :doc, ::Object
|
1202
|
+
const :label, T.nilable(::String)
|
1203
|
+
const :params, T::Array[T.untyped]
|
1204
|
+
|
1205
|
+
sig { override.params(printer: ::Spoom::LSP::SymbolPrinter).void }
|
1206
|
+
def accept_printer(printer); end
|
1207
|
+
|
1208
|
+
sig { returns(::String) }
|
1209
|
+
def to_s; end
|
1210
|
+
|
1211
|
+
class << self
|
1212
|
+
sig { params(json: T::Hash[T.untyped, T.untyped]).returns(::Spoom::LSP::SignatureHelp) }
|
1213
|
+
def from_json(json); end
|
1214
|
+
|
1215
|
+
def inherited(s); end
|
1216
|
+
end
|
1217
|
+
end
|
1218
|
+
|
1219
|
+
class Spoom::LSP::SymbolPrinter < ::Spoom::Printer
|
1220
|
+
sig do
|
1221
|
+
params(
|
1222
|
+
out: T.any(::IO, ::StringIO),
|
1223
|
+
colors: T::Boolean,
|
1224
|
+
indent_level: ::Integer,
|
1225
|
+
prefix: T.nilable(::String)
|
1226
|
+
).void
|
1227
|
+
end
|
1228
|
+
def initialize(out: T.unsafe(nil), colors: T.unsafe(nil), indent_level: T.unsafe(nil), prefix: T.unsafe(nil)); end
|
1229
|
+
|
1230
|
+
sig { params(uri: ::String).returns(::String) }
|
1231
|
+
def clean_uri(uri); end
|
1232
|
+
|
1233
|
+
sig { returns(T.nilable(::String)) }
|
1234
|
+
def prefix; end
|
1235
|
+
|
1236
|
+
# @return [String, nil]
|
1237
|
+
def prefix=(_arg0); end
|
1238
|
+
|
1239
|
+
sig { params(objects: T::Array[::Spoom::LSP::PrintableSymbol]).void }
|
1240
|
+
def print_list(objects); end
|
1241
|
+
|
1242
|
+
sig { params(object: T.nilable(::Spoom::LSP::PrintableSymbol)).void }
|
1243
|
+
def print_object(object); end
|
1244
|
+
|
1245
|
+
sig { params(objects: T::Array[::Spoom::LSP::PrintableSymbol]).void }
|
1246
|
+
def print_objects(objects); end
|
1247
|
+
|
1248
|
+
sig { returns(T::Set[::Integer]) }
|
1249
|
+
def seen; end
|
1250
|
+
|
1251
|
+
# @return [Set<Integer>]
|
1252
|
+
def seen=(_arg0); end
|
1253
|
+
end
|
1254
|
+
|
1255
|
+
# @abstract It cannont be directly instantiated. Subclasses must implement the `abstract` methods below.
|
1256
|
+
class Spoom::Printer
|
1257
|
+
include ::Spoom::Colorize
|
1258
|
+
|
1259
|
+
abstract!
|
1260
|
+
|
1261
|
+
sig { params(out: T.any(::IO, ::StringIO), colors: T::Boolean, indent_level: ::Integer).void }
|
1262
|
+
def initialize(out: T.unsafe(nil), colors: T.unsafe(nil), indent_level: T.unsafe(nil)); end
|
1263
|
+
|
1264
|
+
# Colorize `string` with color if `@colors`
|
1265
|
+
sig { params(string: ::String, color: ::Spoom::Color).returns(::String) }
|
1266
|
+
def colorize(string, *color); end
|
1267
|
+
|
1268
|
+
# Decrease indent level
|
1269
|
+
sig { void }
|
1270
|
+
def dedent; end
|
1271
|
+
|
1272
|
+
# Increase indent level
|
1273
|
+
sig { void }
|
1274
|
+
def indent; end
|
1275
|
+
|
1276
|
+
sig { returns(T.any(::IO, ::StringIO)) }
|
1277
|
+
def out; end
|
1278
|
+
|
1279
|
+
# @return [IO, StringIO]
|
1280
|
+
def out=(_arg0); end
|
1281
|
+
|
1282
|
+
# Print `string` into `out`
|
1283
|
+
sig { params(string: T.nilable(::String)).void }
|
1284
|
+
def print(string); end
|
1285
|
+
|
1286
|
+
# Print `string` colored with `color` into `out`
|
1287
|
+
#
|
1288
|
+
# Does not use colors unless `@colors`.
|
1289
|
+
sig { params(string: T.nilable(::String), color: ::Spoom::Color).void }
|
1290
|
+
def print_colored(string, *color); end
|
1291
|
+
|
1292
|
+
# Print `string` with indent and newline
|
1293
|
+
sig { params(string: T.nilable(::String)).void }
|
1294
|
+
def printl(string); end
|
1295
|
+
|
1296
|
+
# Print a new line into `out`
|
1297
|
+
sig { void }
|
1298
|
+
def printn; end
|
1299
|
+
|
1300
|
+
# Print an indent space into `out`
|
1301
|
+
sig { void }
|
1302
|
+
def printt; end
|
1303
|
+
end
|
1304
|
+
|
1305
|
+
Spoom::SPOOM_PATH = T.let(T.unsafe(nil), String)
|
1306
|
+
|
1307
|
+
module Spoom::Sorbet
|
1308
|
+
class << self
|
1309
|
+
sig do
|
1310
|
+
params(
|
1311
|
+
arg: ::String,
|
1312
|
+
path: ::String,
|
1313
|
+
capture_err: T::Boolean,
|
1314
|
+
sorbet_bin: T.nilable(::String)
|
1315
|
+
).returns(::Spoom::ExecResult)
|
1316
|
+
end
|
1317
|
+
def srb(*arg, path: T.unsafe(nil), capture_err: T.unsafe(nil), sorbet_bin: T.unsafe(nil)); end
|
1318
|
+
|
1319
|
+
# List all files typechecked by Sorbet from its `config`
|
1320
|
+
sig { params(config: ::Spoom::Sorbet::Config, path: ::String).returns(T::Array[::String]) }
|
1321
|
+
def srb_files(config, path: T.unsafe(nil)); end
|
1322
|
+
|
1323
|
+
sig do
|
1324
|
+
params(
|
1325
|
+
arg: ::String,
|
1326
|
+
path: ::String,
|
1327
|
+
capture_err: T::Boolean,
|
1328
|
+
sorbet_bin: T.nilable(::String)
|
1329
|
+
).returns(T.nilable(T::Hash[::String, ::Integer]))
|
1330
|
+
end
|
1331
|
+
def srb_metrics(*arg, path: T.unsafe(nil), capture_err: T.unsafe(nil), sorbet_bin: T.unsafe(nil)); end
|
1332
|
+
|
1333
|
+
sig do
|
1334
|
+
params(
|
1335
|
+
arg: ::String,
|
1336
|
+
path: ::String,
|
1337
|
+
capture_err: T::Boolean,
|
1338
|
+
sorbet_bin: T.nilable(::String)
|
1339
|
+
).returns(::Spoom::ExecResult)
|
1340
|
+
end
|
1341
|
+
def srb_tc(*arg, path: T.unsafe(nil), capture_err: T.unsafe(nil), sorbet_bin: T.unsafe(nil)); end
|
1342
|
+
|
1343
|
+
sig do
|
1344
|
+
params(
|
1345
|
+
arg: ::String,
|
1346
|
+
path: ::String,
|
1347
|
+
capture_err: T::Boolean,
|
1348
|
+
sorbet_bin: T.nilable(::String)
|
1349
|
+
).returns(T.nilable(::String))
|
1350
|
+
end
|
1351
|
+
def srb_version(*arg, path: T.unsafe(nil), capture_err: T.unsafe(nil), sorbet_bin: T.unsafe(nil)); end
|
1352
|
+
|
1353
|
+
# Get `gem` version from the `Gemfile.lock` content
|
1354
|
+
#
|
1355
|
+
# Returns `nil` if `gem` cannot be found in the Gemfile.
|
1356
|
+
sig { params(gem: ::String, path: ::String).returns(T.nilable(::String)) }
|
1357
|
+
def version_from_gemfile_lock(gem: T.unsafe(nil), path: T.unsafe(nil)); end
|
1358
|
+
end
|
1359
|
+
end
|
1360
|
+
|
1361
|
+
Spoom::Sorbet::BIN_PATH = T.let(T.unsafe(nil), String)
|
1362
|
+
Spoom::Sorbet::CONFIG_PATH = T.let(T.unsafe(nil), String)
|
1363
|
+
|
1364
|
+
# Parse Sorbet config files
|
1365
|
+
#
|
1366
|
+
# Parses a Sorbet config file:
|
1367
|
+
#
|
1368
|
+
# ```ruby
|
1369
|
+
# config = Spoom::Sorbet::Config.parse_file("sorbet/config")
|
1370
|
+
# puts config.paths # "."
|
1371
|
+
# ```
|
1372
|
+
#
|
1373
|
+
# Parses a Sorbet config string:
|
1374
|
+
#
|
1375
|
+
# ```ruby
|
1376
|
+
# config = Spoom::Sorbet::Config.parse_string(<<~CONFIG)
|
1377
|
+
# a
|
1378
|
+
# --file=b
|
1379
|
+
# --ignore=c
|
1380
|
+
# CONFIG
|
1381
|
+
# puts config.paths # "a", "b"
|
1382
|
+
# puts config.ignore # "c"
|
1383
|
+
# ```
|
1384
|
+
class Spoom::Sorbet::Config
|
1385
|
+
sig { void }
|
1386
|
+
def initialize; end
|
1387
|
+
|
1388
|
+
# @return [Array<String>]
|
1389
|
+
def allowed_extensions; end
|
1390
|
+
|
1391
|
+
sig { returns(::Spoom::Sorbet::Config) }
|
1392
|
+
def copy; end
|
1393
|
+
|
1394
|
+
# @return [Array<String>]
|
1395
|
+
def ignore; end
|
1396
|
+
|
1397
|
+
sig { returns(T::Boolean) }
|
1398
|
+
def no_stdlib; end
|
1399
|
+
|
1400
|
+
# @return [Boolean]
|
1401
|
+
def no_stdlib=(_arg0); end
|
1402
|
+
|
1403
|
+
# Returns self as a string of options that can be passed to Sorbet
|
1404
|
+
#
|
1405
|
+
# Example:
|
1406
|
+
# ~~~rb
|
1407
|
+
# config = Sorbet::Config.new
|
1408
|
+
# config.paths << "/foo"
|
1409
|
+
# config.paths << "/bar"
|
1410
|
+
# config.ignore << "/baz"
|
1411
|
+
# config.allowed_extensions << ".rb"
|
1412
|
+
#
|
1413
|
+
# puts config.options_string # "/foo /bar --ignore /baz --allowed-extension .rb"
|
1414
|
+
# ~~~
|
1415
|
+
sig { returns(::String) }
|
1416
|
+
def options_string; end
|
1417
|
+
|
1418
|
+
sig { returns(T::Array[::String]) }
|
1419
|
+
def paths; end
|
1420
|
+
|
1421
|
+
class << self
|
1422
|
+
sig { params(sorbet_config_path: ::String).returns(::Spoom::Sorbet::Config) }
|
1423
|
+
def parse_file(sorbet_config_path); end
|
1424
|
+
|
1425
|
+
sig { params(sorbet_config: ::String).returns(::Spoom::Sorbet::Config) }
|
1426
|
+
def parse_string(sorbet_config); end
|
1427
|
+
|
1428
|
+
private
|
1429
|
+
|
1430
|
+
sig { params(line: ::String).returns(::String) }
|
1431
|
+
def parse_option(line); end
|
1432
|
+
end
|
1433
|
+
end
|
1434
|
+
|
1435
|
+
module Spoom::Sorbet::Errors
|
1436
|
+
class << self
|
1437
|
+
sig { params(errors: T::Array[::Spoom::Sorbet::Errors::Error]).returns(T::Array[::Spoom::Sorbet::Errors::Error]) }
|
1438
|
+
def sort_errors_by_code(errors); end
|
1439
|
+
end
|
1440
|
+
end
|
1441
|
+
|
1442
|
+
Spoom::Sorbet::Errors::DEFAULT_ERROR_URL_BASE = T.let(T.unsafe(nil), String)
|
1443
|
+
|
1444
|
+
class Spoom::Sorbet::Errors::Error
|
1445
|
+
include ::Comparable
|
1446
|
+
|
1447
|
+
sig do
|
1448
|
+
params(
|
1449
|
+
file: T.nilable(::String),
|
1450
|
+
line: T.nilable(::Integer),
|
1451
|
+
message: T.nilable(::String),
|
1452
|
+
code: T.nilable(::Integer),
|
1453
|
+
more: T::Array[::String]
|
1454
|
+
).void
|
1455
|
+
end
|
1456
|
+
def initialize(file, line, message, code, more = T.unsafe(nil)); end
|
1457
|
+
|
1458
|
+
# By default errors are sorted by location
|
1459
|
+
sig { params(other: T.untyped).returns(::Integer) }
|
1460
|
+
def <=>(other); end
|
1461
|
+
|
1462
|
+
# @return [Integer, nil]
|
1463
|
+
def code; end
|
1464
|
+
|
1465
|
+
sig { returns(T.nilable(::String)) }
|
1466
|
+
def file; end
|
1467
|
+
|
1468
|
+
sig { returns(T.nilable(::Integer)) }
|
1469
|
+
def line; end
|
1470
|
+
|
1471
|
+
# @return [String, nil]
|
1472
|
+
def message; end
|
1473
|
+
|
1474
|
+
sig { returns(T::Array[::String]) }
|
1475
|
+
def more; end
|
1476
|
+
|
1477
|
+
sig { returns(::String) }
|
1478
|
+
def to_s; end
|
1479
|
+
end
|
1480
|
+
|
1481
|
+
# Parse errors from Sorbet output
|
1482
|
+
class Spoom::Sorbet::Errors::Parser
|
1483
|
+
sig { params(error_url_base: ::String).void }
|
1484
|
+
def initialize(error_url_base: T.unsafe(nil)); end
|
1485
|
+
|
1486
|
+
sig { params(output: ::String).returns(T::Array[::Spoom::Sorbet::Errors::Error]) }
|
1487
|
+
def parse(output); end
|
1488
|
+
|
1489
|
+
private
|
1490
|
+
|
1491
|
+
sig { params(line: ::String).void }
|
1492
|
+
def append_error(line); end
|
1493
|
+
|
1494
|
+
sig { void }
|
1495
|
+
def close_error; end
|
1496
|
+
|
1497
|
+
sig { params(error_url_base: ::String).returns(::Regexp) }
|
1498
|
+
def error_line_match_regexp(error_url_base); end
|
1499
|
+
|
1500
|
+
sig { params(line: ::String).returns(T.nilable(::Spoom::Sorbet::Errors::Error)) }
|
1501
|
+
def match_error_line(line); end
|
1502
|
+
|
1503
|
+
sig { params(error: ::Spoom::Sorbet::Errors::Error).void }
|
1504
|
+
def open_error(error); end
|
1505
|
+
|
1506
|
+
class << self
|
1507
|
+
sig { params(output: ::String, error_url_base: ::String).returns(T::Array[::Spoom::Sorbet::Errors::Error]) }
|
1508
|
+
def parse_string(output, error_url_base: T.unsafe(nil)); end
|
1509
|
+
end
|
1510
|
+
end
|
1511
|
+
|
1512
|
+
Spoom::Sorbet::Errors::Parser::HEADER = T.let(T.unsafe(nil), Array)
|
1513
|
+
Spoom::Sorbet::GEM_PATH = T.let(T.unsafe(nil), String)
|
1514
|
+
|
1515
|
+
module Spoom::Sorbet::MetricsParser
|
1516
|
+
class << self
|
1517
|
+
sig { params(path: ::String, prefix: ::String).returns(T::Hash[::String, ::Integer]) }
|
1518
|
+
def parse_file(path, prefix = T.unsafe(nil)); end
|
1519
|
+
|
1520
|
+
sig { params(obj: T::Hash[::String, T.untyped], prefix: ::String).returns(T::Hash[::String, ::Integer]) }
|
1521
|
+
def parse_hash(obj, prefix = T.unsafe(nil)); end
|
1522
|
+
|
1523
|
+
sig { params(string: ::String, prefix: ::String).returns(T::Hash[::String, ::Integer]) }
|
1524
|
+
def parse_string(string, prefix = T.unsafe(nil)); end
|
1525
|
+
end
|
1526
|
+
end
|
1527
|
+
|
1528
|
+
Spoom::Sorbet::MetricsParser::DEFAULT_PREFIX = T.let(T.unsafe(nil), String)
|
1529
|
+
Spoom::Sorbet::SEGFAULT_CODE = T.let(T.unsafe(nil), Integer)
|
1530
|
+
|
1531
|
+
module Spoom::Sorbet::Sigils
|
1532
|
+
class << self
|
1533
|
+
# changes the sigil in the file at the passed path to the specified new strictness
|
1534
|
+
sig { params(path: T.any(::Pathname, ::String), new_strictness: ::String).returns(T::Boolean) }
|
1535
|
+
def change_sigil_in_file(path, new_strictness); end
|
1536
|
+
|
1537
|
+
# changes the sigil to have a new strictness in a list of files
|
1538
|
+
sig { params(path_list: T::Array[::String], new_strictness: ::String).returns(T::Array[::String]) }
|
1539
|
+
def change_sigil_in_files(path_list, new_strictness); end
|
1540
|
+
|
1541
|
+
# returns a string containing the strictness of a sigil in a file at the passed path
|
1542
|
+
# * returns nil if no sigil
|
1543
|
+
sig { params(path: T.any(::Pathname, ::String)).returns(T.nilable(::String)) }
|
1544
|
+
def file_strictness(path); end
|
1545
|
+
|
1546
|
+
# finds all files in the specified directory with the passed strictness
|
1547
|
+
sig do
|
1548
|
+
params(
|
1549
|
+
directory: T.any(::Pathname, ::String),
|
1550
|
+
strictness: ::String,
|
1551
|
+
extension: ::String
|
1552
|
+
).returns(T::Array[::String])
|
1553
|
+
end
|
1554
|
+
def files_with_sigil_strictness(directory, strictness, extension: T.unsafe(nil)); end
|
1555
|
+
|
1556
|
+
# returns the full sigil comment string for the passed strictness
|
1557
|
+
sig { params(strictness: ::String).returns(::String) }
|
1558
|
+
def sigil_string(strictness); end
|
1559
|
+
|
1560
|
+
# returns the strictness of a sigil in the passed file content string (nil if no sigil)
|
1561
|
+
sig { params(content: ::String).returns(T.nilable(::String)) }
|
1562
|
+
def strictness_in_content(content); end
|
1563
|
+
|
1564
|
+
# returns a string which is the passed content but with the sigil updated to a new strictness
|
1565
|
+
sig { params(content: ::String, new_strictness: ::String).returns(::String) }
|
1566
|
+
def update_sigil(content, new_strictness); end
|
1567
|
+
|
1568
|
+
# returns true if the passed string is a valid strictness (else false)
|
1569
|
+
sig { params(strictness: ::String).returns(T::Boolean) }
|
1570
|
+
def valid_strictness?(strictness); end
|
1571
|
+
end
|
1572
|
+
end
|
1573
|
+
|
1574
|
+
Spoom::Sorbet::Sigils::SIGIL_REGEXP = T.let(T.unsafe(nil), Regexp)
|
1575
|
+
Spoom::Sorbet::Sigils::STRICTNESS_FALSE = T.let(T.unsafe(nil), String)
|
1576
|
+
Spoom::Sorbet::Sigils::STRICTNESS_IGNORE = T.let(T.unsafe(nil), String)
|
1577
|
+
Spoom::Sorbet::Sigils::STRICTNESS_INTERNAL = T.let(T.unsafe(nil), String)
|
1578
|
+
Spoom::Sorbet::Sigils::STRICTNESS_STRICT = T.let(T.unsafe(nil), String)
|
1579
|
+
Spoom::Sorbet::Sigils::STRICTNESS_STRONG = T.let(T.unsafe(nil), String)
|
1580
|
+
Spoom::Sorbet::Sigils::STRICTNESS_TRUE = T.let(T.unsafe(nil), String)
|
1581
|
+
Spoom::Sorbet::Sigils::VALID_STRICTNESS = T.let(T.unsafe(nil), Array)
|
1582
|
+
|
1583
|
+
class Spoom::Timeline
|
1584
|
+
sig { params(from: ::Time, to: ::Time, path: ::String).void }
|
1585
|
+
def initialize(from, to, path: T.unsafe(nil)); end
|
1586
|
+
|
1587
|
+
# Return one commit for each date in `dates`
|
1588
|
+
sig { params(dates: T::Array[::Time]).returns(T::Array[::String]) }
|
1589
|
+
def commits_for_dates(dates); end
|
1590
|
+
|
1591
|
+
# Return all months between `from` and `to`
|
1592
|
+
sig { returns(T::Array[::Time]) }
|
1593
|
+
def months; end
|
1594
|
+
|
1595
|
+
# Return one commit for each month between `from` and `to`
|
1596
|
+
sig { returns(T::Array[::String]) }
|
1597
|
+
def ticks; end
|
1598
|
+
end
|
1599
|
+
|
1600
|
+
Spoom::VERSION = T.let(T.unsafe(nil), String)
|