packwerk 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (153) hide show
  1. checksums.yaml +7 -0
  2. data/.github/ISSUE_TEMPLATE/bug_report.md +27 -0
  3. data/.github/probots.yml +2 -0
  4. data/.github/pull_request_template.md +27 -0
  5. data/.github/workflows/ci.yml +50 -0
  6. data/.gitignore +12 -0
  7. data/.rubocop.yml +46 -0
  8. data/.ruby-version +1 -0
  9. data/CODEOWNERS +1 -0
  10. data/CODE_OF_CONDUCT.md +76 -0
  11. data/CONTRIBUTING.md +17 -0
  12. data/Gemfile +22 -0
  13. data/Gemfile.lock +236 -0
  14. data/LICENSE.md +7 -0
  15. data/README.md +73 -0
  16. data/Rakefile +13 -0
  17. data/TROUBLESHOOT.md +67 -0
  18. data/USAGE.md +250 -0
  19. data/bin/console +15 -0
  20. data/bin/setup +8 -0
  21. data/dev.yml +32 -0
  22. data/docs/cohesion.png +0 -0
  23. data/exe/packwerk +6 -0
  24. data/lib/packwerk.rb +44 -0
  25. data/lib/packwerk/application_validator.rb +343 -0
  26. data/lib/packwerk/association_inspector.rb +44 -0
  27. data/lib/packwerk/checking_deprecated_references.rb +40 -0
  28. data/lib/packwerk/cli.rb +238 -0
  29. data/lib/packwerk/configuration.rb +82 -0
  30. data/lib/packwerk/const_node_inspector.rb +44 -0
  31. data/lib/packwerk/constant_discovery.rb +60 -0
  32. data/lib/packwerk/constant_name_inspector.rb +22 -0
  33. data/lib/packwerk/dependency_checker.rb +28 -0
  34. data/lib/packwerk/deprecated_references.rb +92 -0
  35. data/lib/packwerk/file_processor.rb +43 -0
  36. data/lib/packwerk/files_for_processing.rb +67 -0
  37. data/lib/packwerk/formatters/progress_formatter.rb +46 -0
  38. data/lib/packwerk/generators/application_validation.rb +62 -0
  39. data/lib/packwerk/generators/configuration_file.rb +69 -0
  40. data/lib/packwerk/generators/inflections_file.rb +43 -0
  41. data/lib/packwerk/generators/root_package.rb +37 -0
  42. data/lib/packwerk/generators/templates/inflections.yml +6 -0
  43. data/lib/packwerk/generators/templates/package.yml +17 -0
  44. data/lib/packwerk/generators/templates/packwerk +23 -0
  45. data/lib/packwerk/generators/templates/packwerk.yml.erb +23 -0
  46. data/lib/packwerk/generators/templates/packwerk_validator_test.rb +11 -0
  47. data/lib/packwerk/graph.rb +74 -0
  48. data/lib/packwerk/inflections/custom.rb +33 -0
  49. data/lib/packwerk/inflections/default.rb +73 -0
  50. data/lib/packwerk/inflector.rb +41 -0
  51. data/lib/packwerk/node.rb +259 -0
  52. data/lib/packwerk/node_processor.rb +49 -0
  53. data/lib/packwerk/node_visitor.rb +22 -0
  54. data/lib/packwerk/offense.rb +44 -0
  55. data/lib/packwerk/output_styles.rb +41 -0
  56. data/lib/packwerk/package.rb +56 -0
  57. data/lib/packwerk/package_set.rb +59 -0
  58. data/lib/packwerk/parsed_constant_definitions.rb +62 -0
  59. data/lib/packwerk/parsers.rb +23 -0
  60. data/lib/packwerk/parsers/erb.rb +66 -0
  61. data/lib/packwerk/parsers/factory.rb +34 -0
  62. data/lib/packwerk/parsers/ruby.rb +42 -0
  63. data/lib/packwerk/privacy_checker.rb +45 -0
  64. data/lib/packwerk/reference.rb +6 -0
  65. data/lib/packwerk/reference_extractor.rb +81 -0
  66. data/lib/packwerk/reference_lister.rb +23 -0
  67. data/lib/packwerk/run_context.rb +103 -0
  68. data/lib/packwerk/sanity_checker.rb +10 -0
  69. data/lib/packwerk/spring_command.rb +28 -0
  70. data/lib/packwerk/updating_deprecated_references.rb +51 -0
  71. data/lib/packwerk/version.rb +6 -0
  72. data/lib/packwerk/violation_type.rb +13 -0
  73. data/library.yml +6 -0
  74. data/packwerk.gemspec +58 -0
  75. data/service.yml +6 -0
  76. data/shipit.rubygems.yml +1 -0
  77. data/sorbet/config +2 -0
  78. data/sorbet/rbi/gems/actioncable@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +840 -0
  79. data/sorbet/rbi/gems/actionmailbox@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +571 -0
  80. data/sorbet/rbi/gems/actionmailer@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +568 -0
  81. data/sorbet/rbi/gems/actionpack@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +5216 -0
  82. data/sorbet/rbi/gems/actiontext@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +663 -0
  83. data/sorbet/rbi/gems/actionview@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +2504 -0
  84. data/sorbet/rbi/gems/activejob@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +635 -0
  85. data/sorbet/rbi/gems/activemodel@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +1201 -0
  86. data/sorbet/rbi/gems/activerecord@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +8011 -0
  87. data/sorbet/rbi/gems/activestorage@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +904 -0
  88. data/sorbet/rbi/gems/activesupport@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +3888 -0
  89. data/sorbet/rbi/gems/ast@2.4.1.rbi +54 -0
  90. data/sorbet/rbi/gems/better_html@1.0.15.rbi +317 -0
  91. data/sorbet/rbi/gems/builder@3.2.4.rbi +8 -0
  92. data/sorbet/rbi/gems/byebug@11.1.3.rbi +8 -0
  93. data/sorbet/rbi/gems/coderay@1.1.3.rbi +8 -0
  94. data/sorbet/rbi/gems/colorize@0.8.1.rbi +40 -0
  95. data/sorbet/rbi/gems/commander@4.5.2.rbi +8 -0
  96. data/sorbet/rbi/gems/concurrent-ruby@1.1.6.rbi +1966 -0
  97. data/sorbet/rbi/gems/constant_resolver@0.1.5.rbi +26 -0
  98. data/sorbet/rbi/gems/crass@1.0.6.rbi +138 -0
  99. data/sorbet/rbi/gems/erubi@1.9.0.rbi +39 -0
  100. data/sorbet/rbi/gems/globalid@0.4.2.rbi +178 -0
  101. data/sorbet/rbi/gems/highline@2.0.3.rbi +8 -0
  102. data/sorbet/rbi/gems/html_tokenizer@0.0.7.rbi +46 -0
  103. data/sorbet/rbi/gems/i18n@1.8.2.rbi +633 -0
  104. data/sorbet/rbi/gems/jaro_winkler@1.5.4.rbi +8 -0
  105. data/sorbet/rbi/gems/loofah@2.5.0.rbi +272 -0
  106. data/sorbet/rbi/gems/m@1.5.1.rbi +108 -0
  107. data/sorbet/rbi/gems/mail@2.7.1.rbi +2490 -0
  108. data/sorbet/rbi/gems/marcel@0.3.3.rbi +30 -0
  109. data/sorbet/rbi/gems/method_source@1.0.0.rbi +76 -0
  110. data/sorbet/rbi/gems/mimemagic@0.3.5.rbi +47 -0
  111. data/sorbet/rbi/gems/mini_mime@1.0.2.rbi +71 -0
  112. data/sorbet/rbi/gems/mini_portile2@2.4.0.rbi +8 -0
  113. data/sorbet/rbi/gems/minitest@5.14.0.rbi +542 -0
  114. data/sorbet/rbi/gems/mocha@1.11.2.rbi +964 -0
  115. data/sorbet/rbi/gems/nio4r@2.5.2.rbi +89 -0
  116. data/sorbet/rbi/gems/nokogiri@1.10.9.rbi +1608 -0
  117. data/sorbet/rbi/gems/parallel@1.19.1.rbi +8 -0
  118. data/sorbet/rbi/gems/parlour@4.0.1.rbi +561 -0
  119. data/sorbet/rbi/gems/parser@2.7.1.4.rbi +1632 -0
  120. data/sorbet/rbi/gems/pry@0.13.1.rbi +8 -0
  121. data/sorbet/rbi/gems/rack-test@1.1.0.rbi +335 -0
  122. data/sorbet/rbi/gems/rack@2.2.2.rbi +1730 -0
  123. data/sorbet/rbi/gems/rails-dom-testing@2.0.3.rbi +123 -0
  124. data/sorbet/rbi/gems/rails-html-sanitizer@1.3.0.rbi +213 -0
  125. data/sorbet/rbi/gems/rails@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +8 -0
  126. data/sorbet/rbi/gems/railties@6.1.0.alpha-d80c18a391e33552ae2d943e68af56946f883f65.rbi +869 -0
  127. data/sorbet/rbi/gems/rainbow@3.0.0.rbi +155 -0
  128. data/sorbet/rbi/gems/rake@13.0.1.rbi +841 -0
  129. data/sorbet/rbi/gems/rexml@3.2.4.rbi +8 -0
  130. data/sorbet/rbi/gems/rubocop-performance@1.5.2.rbi +8 -0
  131. data/sorbet/rbi/gems/rubocop-shopify@1.0.2.rbi +8 -0
  132. data/sorbet/rbi/gems/rubocop-sorbet@0.3.7.rbi +8 -0
  133. data/sorbet/rbi/gems/rubocop@0.82.0.rbi +8 -0
  134. data/sorbet/rbi/gems/ruby-progressbar@1.10.1.rbi +8 -0
  135. data/sorbet/rbi/gems/smart_properties@1.15.0.rbi +168 -0
  136. data/sorbet/rbi/gems/spoom@1.0.4.rbi +418 -0
  137. data/sorbet/rbi/gems/spring@2.1.0.rbi +160 -0
  138. data/sorbet/rbi/gems/sprockets-rails@3.2.1.rbi +431 -0
  139. data/sorbet/rbi/gems/sprockets@4.0.0.rbi +1132 -0
  140. data/sorbet/rbi/gems/tapioca@0.4.5.rbi +518 -0
  141. data/sorbet/rbi/gems/thor@1.0.1.rbi +892 -0
  142. data/sorbet/rbi/gems/tzinfo@2.0.2.rbi +547 -0
  143. data/sorbet/rbi/gems/unicode-display_width@1.7.0.rbi +8 -0
  144. data/sorbet/rbi/gems/websocket-driver@0.7.1.rbi +438 -0
  145. data/sorbet/rbi/gems/websocket-extensions@0.1.4.rbi +71 -0
  146. data/sorbet/rbi/gems/zeitwerk@2.3.0.rbi +8 -0
  147. data/sorbet/tapioca/require.rb +25 -0
  148. data/static/packwerk-check-demo.png +0 -0
  149. data/static/packwerk_check.gif +0 -0
  150. data/static/packwerk_check_violation.gif +0 -0
  151. data/static/packwerk_update.gif +0 -0
  152. data/static/packwerk_validate.gif +0 -0
  153. metadata +341 -0
@@ -0,0 +1,892 @@
1
+ # DO NOT EDIT MANUALLY
2
+ # This is an autogenerated file for types exported from the `thor` gem.
3
+ # Please instead update this file by running `dev typecheck update`.
4
+
5
+ # typed: true
6
+
7
+ class Thor
8
+ include(::Thor::Base)
9
+ include(::Thor::Invocation)
10
+ include(::Thor::Shell)
11
+ extend(::Thor::Base::ClassMethods)
12
+ extend(::Thor::Invocation::ClassMethods)
13
+
14
+ def help(command = T.unsafe(nil), subcommand = T.unsafe(nil)); end
15
+
16
+ class << self
17
+ def check_unknown_options!(options = T.unsafe(nil)); end
18
+ def check_unknown_options?(config); end
19
+ def command_help(shell, command_name); end
20
+ def default_command(meth = T.unsafe(nil)); end
21
+ def default_task(meth = T.unsafe(nil)); end
22
+ def deprecation_warning(message); end
23
+ def desc(usage, description, options = T.unsafe(nil)); end
24
+ def disable_required_check!(*command_names); end
25
+ def disable_required_check?(command); end
26
+ def help(shell, subcommand = T.unsafe(nil)); end
27
+ def long_desc(long_description, options = T.unsafe(nil)); end
28
+ def map(mappings = T.unsafe(nil), **kw); end
29
+ def method_option(name, options = T.unsafe(nil)); end
30
+ def method_options(options = T.unsafe(nil)); end
31
+ def option(name, options = T.unsafe(nil)); end
32
+ def options(options = T.unsafe(nil)); end
33
+ def package_name(name, _ = T.unsafe(nil)); end
34
+ def printable_commands(all = T.unsafe(nil), subcommand = T.unsafe(nil)); end
35
+ def printable_tasks(all = T.unsafe(nil), subcommand = T.unsafe(nil)); end
36
+ def register(klass, subcommand_name, usage, description, options = T.unsafe(nil)); end
37
+ def stop_on_unknown_option!(*command_names); end
38
+ def stop_on_unknown_option?(command); end
39
+ def subcommand(subcommand, subcommand_class); end
40
+ def subcommand_classes; end
41
+ def subcommands; end
42
+ def subtask(subcommand, subcommand_class); end
43
+ def subtasks; end
44
+ def task_help(shell, command_name); end
45
+
46
+ protected
47
+
48
+ def banner(command, namespace = T.unsafe(nil), subcommand = T.unsafe(nil)); end
49
+ def baseclass; end
50
+ def create_command(meth); end
51
+ def create_task(meth); end
52
+ def disable_required_check; end
53
+ def dispatch(meth, given_args, given_opts, config); end
54
+ def dynamic_command_class; end
55
+ def find_command_possibilities(meth); end
56
+ def find_task_possibilities(meth); end
57
+ def initialize_added; end
58
+ def normalize_command_name(meth); end
59
+ def normalize_task_name(meth); end
60
+ def retrieve_command_name(args); end
61
+ def retrieve_task_name(args); end
62
+ def stop_on_unknown_option; end
63
+ def subcommand_help(cmd); end
64
+ def subtask_help(cmd); end
65
+ end
66
+ end
67
+
68
+ module Thor::Actions
69
+ mixes_in_class_methods(::Thor::Actions::ClassMethods)
70
+
71
+ def initialize(args = T.unsafe(nil), options = T.unsafe(nil), config = T.unsafe(nil)); end
72
+
73
+ def action(instance); end
74
+ def add_file(destination, *args, &block); end
75
+ def add_link(destination, *args); end
76
+ def append_file(path, *args, &block); end
77
+ def append_to_file(path, *args, &block); end
78
+ def apply(path, config = T.unsafe(nil)); end
79
+ def behavior; end
80
+ def behavior=(_); end
81
+ def chmod(path, mode, config = T.unsafe(nil)); end
82
+ def comment_lines(path, flag, *args); end
83
+ def copy_file(source, *args, &block); end
84
+ def create_file(destination, *args, &block); end
85
+ def create_link(destination, *args); end
86
+ def destination_root; end
87
+ def destination_root=(root); end
88
+ def directory(source, *args, &block); end
89
+ def empty_directory(destination, config = T.unsafe(nil)); end
90
+ def find_in_source_paths(file); end
91
+ def get(source, *args, &block); end
92
+ def gsub_file(path, flag, *args, &block); end
93
+ def in_root; end
94
+ def inject_into_class(path, klass, *args, &block); end
95
+ def inject_into_file(destination, *args, &block); end
96
+ def inject_into_module(path, module_name, *args, &block); end
97
+ def insert_into_file(destination, *args, &block); end
98
+ def inside(dir = T.unsafe(nil), config = T.unsafe(nil), &block); end
99
+ def link_file(source, *args); end
100
+ def prepend_file(path, *args, &block); end
101
+ def prepend_to_file(path, *args, &block); end
102
+ def relative_to_original_destination_root(path, remove_dot = T.unsafe(nil)); end
103
+ def remove_dir(path, config = T.unsafe(nil)); end
104
+ def remove_file(path, config = T.unsafe(nil)); end
105
+ def run(command, config = T.unsafe(nil)); end
106
+ def run_ruby_script(command, config = T.unsafe(nil)); end
107
+ def source_paths; end
108
+ def template(source, *args, &block); end
109
+ def thor(command, *args); end
110
+ def uncomment_lines(path, flag, *args); end
111
+
112
+ protected
113
+
114
+ def _cleanup_options_and_set(options, key); end
115
+ def _shared_configuration; end
116
+
117
+ private
118
+
119
+ def capture(*args); end
120
+ def concat(string); end
121
+ def output_buffer; end
122
+ def output_buffer=(_); end
123
+ def with_output_buffer(buf = T.unsafe(nil)); end
124
+
125
+ class << self
126
+ def included(base); end
127
+ end
128
+ end
129
+
130
+ class Thor::Actions::CapturableERB < ::ERB
131
+ def set_eoutvar(compiler, eoutvar = T.unsafe(nil)); end
132
+ end
133
+
134
+ module Thor::Actions::ClassMethods
135
+ def add_runtime_options!; end
136
+ def source_paths; end
137
+ def source_paths_for_search; end
138
+ def source_root(path = T.unsafe(nil)); end
139
+ end
140
+
141
+ class Thor::Actions::CreateFile < ::Thor::Actions::EmptyDirectory
142
+ def initialize(base, destination, data, config = T.unsafe(nil)); end
143
+
144
+ def data; end
145
+ def identical?; end
146
+ def invoke!; end
147
+ def render; end
148
+
149
+ protected
150
+
151
+ def force_on_collision?; end
152
+ def force_or_skip_or_conflict(force, skip, &block); end
153
+ def on_conflict_behavior(&block); end
154
+ end
155
+
156
+ class Thor::Actions::CreateLink < ::Thor::Actions::CreateFile
157
+ def data; end
158
+ def exists?; end
159
+ def identical?; end
160
+ def invoke!; end
161
+ end
162
+
163
+ class Thor::Actions::Directory < ::Thor::Actions::EmptyDirectory
164
+ def initialize(base, source, destination = T.unsafe(nil), config = T.unsafe(nil), &block); end
165
+
166
+ def invoke!; end
167
+ def revoke!; end
168
+ def source; end
169
+
170
+ protected
171
+
172
+ def execute!; end
173
+ def file_level_lookup(previous_lookup); end
174
+ def files(lookup); end
175
+ end
176
+
177
+ class Thor::Actions::EmptyDirectory
178
+ def initialize(base, destination, config = T.unsafe(nil)); end
179
+
180
+ def base; end
181
+ def config; end
182
+ def destination; end
183
+ def exists?; end
184
+ def given_destination; end
185
+ def invoke!; end
186
+ def relative_destination; end
187
+ def revoke!; end
188
+
189
+ protected
190
+
191
+ def convert_encoded_instructions(filename); end
192
+ def destination=(destination); end
193
+ def invoke_with_conflict_check(&block); end
194
+ def on_conflict_behavior; end
195
+ def on_file_clash_behavior; end
196
+ def pretend?; end
197
+ def say_status(status, color); end
198
+ end
199
+
200
+ class Thor::Actions::InjectIntoFile < ::Thor::Actions::EmptyDirectory
201
+ def initialize(base, destination, data, config); end
202
+
203
+ def behavior; end
204
+ def flag; end
205
+ def invoke!; end
206
+ def replacement; end
207
+ def revoke!; end
208
+
209
+ protected
210
+
211
+ def replace!(regexp, string, force); end
212
+ def say_status(behavior, warning: T.unsafe(nil), color: T.unsafe(nil)); end
213
+ end
214
+
215
+ Thor::Actions::WARNINGS = T.let(T.unsafe(nil), Hash)
216
+
217
+ class Thor::AmbiguousCommandError < ::Thor::Error
218
+ end
219
+
220
+ Thor::AmbiguousTaskError = Thor::AmbiguousCommandError
221
+
222
+ class Thor::Argument
223
+ def initialize(name, options = T.unsafe(nil)); end
224
+
225
+ def banner; end
226
+ def default; end
227
+ def description; end
228
+ def enum; end
229
+ def human_name; end
230
+ def name; end
231
+ def required; end
232
+ def required?; end
233
+ def show_default?; end
234
+ def type; end
235
+ def usage; end
236
+
237
+ protected
238
+
239
+ def default_banner; end
240
+ def valid_type?(type); end
241
+ def validate!; end
242
+ end
243
+
244
+ Thor::Argument::VALID_TYPES = T.let(T.unsafe(nil), Array)
245
+
246
+ class Thor::Arguments
247
+ def initialize(arguments = T.unsafe(nil)); end
248
+
249
+ def parse(args); end
250
+ def remaining; end
251
+
252
+ private
253
+
254
+ def check_requirement!; end
255
+ def current_is_value?; end
256
+ def last?; end
257
+ def no_or_skip?(arg); end
258
+ def parse_array(name); end
259
+ def parse_hash(name); end
260
+ def parse_numeric(name); end
261
+ def parse_string(name); end
262
+ def peek; end
263
+ def shift; end
264
+ def unshift(arg); end
265
+
266
+ class << self
267
+ def parse(*args); end
268
+ def split(args); end
269
+ end
270
+ end
271
+
272
+ Thor::Arguments::NUMERIC = T.let(T.unsafe(nil), Regexp)
273
+
274
+ module Thor::Base
275
+ include(::Thor::Invocation)
276
+ include(::Thor::Shell)
277
+
278
+ mixes_in_class_methods(::Thor::Base::ClassMethods)
279
+
280
+ def initialize(args = T.unsafe(nil), local_options = T.unsafe(nil), config = T.unsafe(nil)); end
281
+
282
+ def args; end
283
+ def args=(_); end
284
+ def options; end
285
+ def options=(_); end
286
+ def parent_options; end
287
+ def parent_options=(_); end
288
+
289
+ class << self
290
+ def included(base); end
291
+ def register_klass_file(klass); end
292
+ def shell; end
293
+ def shell=(_); end
294
+ def subclass_files; end
295
+ def subclasses; end
296
+ end
297
+ end
298
+
299
+ module Thor::Base::ClassMethods
300
+ def all_commands; end
301
+ def all_tasks; end
302
+ def allow_incompatible_default_type!; end
303
+ def argument(name, options = T.unsafe(nil)); end
304
+ def arguments; end
305
+ def attr_accessor(*_); end
306
+ def attr_reader(*_); end
307
+ def attr_writer(*_); end
308
+ def check_default_type; end
309
+ def check_default_type!; end
310
+ def check_unknown_options; end
311
+ def check_unknown_options!; end
312
+ def check_unknown_options?(config); end
313
+ def class_option(name, options = T.unsafe(nil)); end
314
+ def class_options(options = T.unsafe(nil)); end
315
+ def commands; end
316
+ def disable_required_check?(command_name); end
317
+ def exit_on_failure?; end
318
+ def group(name = T.unsafe(nil)); end
319
+ def handle_argument_error(command, error, args, arity); end
320
+ def handle_no_command_error(command, has_namespace = T.unsafe(nil)); end
321
+ def handle_no_task_error(command, has_namespace = T.unsafe(nil)); end
322
+ def namespace(name = T.unsafe(nil)); end
323
+ def no_commands(&block); end
324
+ def no_commands?; end
325
+ def no_commands_context; end
326
+ def no_tasks(&block); end
327
+ def public_command(*names); end
328
+ def public_task(*names); end
329
+ def remove_argument(*names); end
330
+ def remove_class_option(*names); end
331
+ def remove_command(*names); end
332
+ def remove_task(*names); end
333
+ def start(given_args = T.unsafe(nil), config = T.unsafe(nil)); end
334
+ def stop_on_unknown_option?(command_name); end
335
+ def strict_args_position; end
336
+ def strict_args_position!; end
337
+ def strict_args_position?(config); end
338
+ def tasks; end
339
+
340
+ protected
341
+
342
+ def baseclass; end
343
+ def basename; end
344
+ def build_option(name, options, scope); end
345
+ def build_options(options, scope); end
346
+ def class_options_help(shell, groups = T.unsafe(nil)); end
347
+ def create_command(meth); end
348
+ def create_task(meth); end
349
+ def dispatch(command, given_args, given_opts, config); end
350
+ def find_and_refresh_command(name); end
351
+ def find_and_refresh_task(name); end
352
+ def from_superclass(method, default = T.unsafe(nil)); end
353
+ def inherited(klass); end
354
+ def initialize_added; end
355
+ def is_thor_reserved_word?(word, type); end
356
+ def method_added(meth); end
357
+ def print_options(shell, options, group_name = T.unsafe(nil)); end
358
+ end
359
+
360
+ class Thor::Command < ::Struct
361
+ def initialize(name, description, long_description, usage, options = T.unsafe(nil)); end
362
+
363
+ def formatted_usage(klass, namespace = T.unsafe(nil), subcommand = T.unsafe(nil)); end
364
+ def hidden?; end
365
+ def run(instance, args = T.unsafe(nil)); end
366
+
367
+ protected
368
+
369
+ def handle_argument_error?(instance, error, caller); end
370
+ def handle_no_method_error?(instance, error, caller); end
371
+ def local_method?(instance, name); end
372
+ def not_debugging?(instance); end
373
+ def private_method?(instance); end
374
+ def public_method?(instance); end
375
+ def required_arguments_for(klass, usage); end
376
+ def required_options; end
377
+ def sans_backtrace(backtrace, caller); end
378
+
379
+ private
380
+
381
+ def initialize_copy(other); end
382
+ end
383
+
384
+ Thor::Command::FILE_REGEXP = T.let(T.unsafe(nil), Regexp)
385
+
386
+ module Thor::CoreExt
387
+ end
388
+
389
+ class Thor::CoreExt::HashWithIndifferentAccess < ::Hash
390
+ def initialize(hash = T.unsafe(nil)); end
391
+
392
+ def [](key); end
393
+ def []=(key, value); end
394
+ def delete(key); end
395
+ def fetch(key, *args); end
396
+ def key?(key); end
397
+ def merge(other); end
398
+ def merge!(other); end
399
+ def replace(other_hash); end
400
+ def reverse_merge(other); end
401
+ def reverse_merge!(other_hash); end
402
+ def to_hash; end
403
+ def values_at(*indices); end
404
+
405
+ protected
406
+
407
+ def convert_key(key); end
408
+ def method_missing(method, *args); end
409
+ end
410
+
411
+ Thor::Correctable = DidYouMean::Correctable
412
+
413
+ class Thor::DynamicCommand < ::Thor::Command
414
+ def initialize(name, options = T.unsafe(nil)); end
415
+
416
+ def run(instance, args = T.unsafe(nil)); end
417
+ end
418
+
419
+ Thor::DynamicTask = Thor::DynamicCommand
420
+
421
+ class Thor::Error < ::StandardError
422
+ end
423
+
424
+ class Thor::Group
425
+ include(::Thor::Base)
426
+ include(::Thor::Invocation)
427
+ include(::Thor::Shell)
428
+ extend(::Thor::Base::ClassMethods)
429
+ extend(::Thor::Invocation::ClassMethods)
430
+
431
+
432
+ protected
433
+
434
+ def _invoke_for_class_method(klass, command = T.unsafe(nil), *args, &block); end
435
+
436
+ class << self
437
+ def class_options_help(shell, groups = T.unsafe(nil)); end
438
+ def desc(description = T.unsafe(nil)); end
439
+ def get_options_from_invocations(group_options, base_options); end
440
+ def handle_argument_error(command, error, _args, arity); end
441
+ def help(shell); end
442
+ def invocation_blocks; end
443
+ def invocations; end
444
+ def invoke(*names, &block); end
445
+ def invoke_from_option(*names, &block); end
446
+ def printable_commands(*_); end
447
+ def printable_tasks(*_); end
448
+ def remove_invocation(*names); end
449
+
450
+ protected
451
+
452
+ def banner; end
453
+ def baseclass; end
454
+ def create_command(meth); end
455
+ def create_task(meth); end
456
+ def dispatch(command, given_args, given_opts, config); end
457
+ def self_command; end
458
+ def self_task; end
459
+ end
460
+ end
461
+
462
+ Thor::HELP_MAPPINGS = T.let(T.unsafe(nil), Array)
463
+
464
+ class Thor::HiddenCommand < ::Thor::Command
465
+ def hidden?; end
466
+ end
467
+
468
+ Thor::HiddenTask = Thor::HiddenCommand
469
+
470
+ module Thor::Invocation
471
+ mixes_in_class_methods(::Thor::Invocation::ClassMethods)
472
+
473
+ def initialize(args = T.unsafe(nil), options = T.unsafe(nil), config = T.unsafe(nil), &block); end
474
+
475
+ def current_command_chain; end
476
+ def invoke(name = T.unsafe(nil), *args); end
477
+ def invoke_all; end
478
+ def invoke_command(command, *args); end
479
+ def invoke_task(command, *args); end
480
+ def invoke_with_padding(*args); end
481
+
482
+ protected
483
+
484
+ def _parse_initialization_options(args, opts, config); end
485
+ def _retrieve_class_and_command(name, sent_command = T.unsafe(nil)); end
486
+ def _retrieve_class_and_task(name, sent_command = T.unsafe(nil)); end
487
+ def _shared_configuration; end
488
+
489
+ class << self
490
+ def included(base); end
491
+ end
492
+ end
493
+
494
+ module Thor::Invocation::ClassMethods
495
+ def prepare_for_invocation(key, name); end
496
+ end
497
+
498
+ class Thor::InvocationError < ::Thor::Error
499
+ end
500
+
501
+ module Thor::LineEditor
502
+ class << self
503
+ def best_available; end
504
+ def readline(prompt, options = T.unsafe(nil)); end
505
+ end
506
+ end
507
+
508
+ class Thor::LineEditor::Basic
509
+ def initialize(prompt, options); end
510
+
511
+ def options; end
512
+ def prompt; end
513
+ def readline; end
514
+
515
+ private
516
+
517
+ def echo?; end
518
+ def get_input; end
519
+
520
+ class << self
521
+ def available?; end
522
+ end
523
+ end
524
+
525
+ class Thor::LineEditor::Readline < ::Thor::LineEditor::Basic
526
+ def readline; end
527
+
528
+ private
529
+
530
+ def add_to_history?; end
531
+ def completion_options; end
532
+ def completion_proc; end
533
+ def use_path_completion?; end
534
+
535
+ class << self
536
+ def available?; end
537
+ end
538
+ end
539
+
540
+ class Thor::LineEditor::Readline::PathCompletion
541
+ def initialize(text); end
542
+
543
+ def matches; end
544
+
545
+ private
546
+
547
+ def absolute_matches; end
548
+ def base_path; end
549
+ def glob_pattern; end
550
+ def relative_matches; end
551
+ def text; end
552
+ end
553
+
554
+ class Thor::MalformattedArgumentError < ::Thor::InvocationError
555
+ end
556
+
557
+ class Thor::NestedContext
558
+ def initialize; end
559
+
560
+ def enter; end
561
+ def entered?; end
562
+
563
+ private
564
+
565
+ def pop; end
566
+ def push; end
567
+ end
568
+
569
+ class Thor::NoKwargSpellChecker < ::DidYouMean::SpellChecker
570
+ def initialize(dictionary); end
571
+ end
572
+
573
+ class Thor::Option < ::Thor::Argument
574
+ def initialize(name, options = T.unsafe(nil)); end
575
+
576
+ def aliases; end
577
+ def array?; end
578
+ def boolean?; end
579
+ def group; end
580
+ def hash?; end
581
+ def hide; end
582
+ def human_name; end
583
+ def lazy_default; end
584
+ def numeric?; end
585
+ def repeatable; end
586
+ def string?; end
587
+ def switch_name; end
588
+ def usage(padding = T.unsafe(nil)); end
589
+
590
+ protected
591
+
592
+ def dasherize(str); end
593
+ def dasherized?; end
594
+ def undasherize(str); end
595
+ def validate!; end
596
+ def validate_default_type!; end
597
+
598
+ class << self
599
+ def parse(key, value); end
600
+ end
601
+ end
602
+
603
+ Thor::Option::VALID_TYPES = T.let(T.unsafe(nil), Array)
604
+
605
+ class Thor::Options < ::Thor::Arguments
606
+ def initialize(hash_options = T.unsafe(nil), defaults = T.unsafe(nil), stop_on_unknown = T.unsafe(nil), disable_required_check = T.unsafe(nil)); end
607
+
608
+ def check_unknown!; end
609
+ def parse(args); end
610
+ def peek; end
611
+ def remaining; end
612
+
613
+ protected
614
+
615
+ def assign_result!(option, result); end
616
+ def current_is_switch?; end
617
+ def current_is_switch_formatted?; end
618
+ def current_is_value?; end
619
+ def normalize_switch(arg); end
620
+ def parse_boolean(switch); end
621
+ def parse_peek(switch, option); end
622
+ def parsing_options?; end
623
+ def switch?(arg); end
624
+ def switch_option(arg); end
625
+
626
+ class << self
627
+ def to_switches(options); end
628
+ end
629
+ end
630
+
631
+ Thor::Options::EQ_RE = T.let(T.unsafe(nil), Regexp)
632
+
633
+ Thor::Options::LONG_RE = T.let(T.unsafe(nil), Regexp)
634
+
635
+ Thor::Options::OPTS_END = T.let(T.unsafe(nil), String)
636
+
637
+ Thor::Options::SHORT_NUM = T.let(T.unsafe(nil), Regexp)
638
+
639
+ Thor::Options::SHORT_RE = T.let(T.unsafe(nil), Regexp)
640
+
641
+ Thor::Options::SHORT_SQ_RE = T.let(T.unsafe(nil), Regexp)
642
+
643
+ module Thor::RakeCompat
644
+ include(::FileUtils::StreamUtils_)
645
+ include(::FileUtils)
646
+ include(::Rake::FileUtilsExt)
647
+ include(::Rake::DSL)
648
+
649
+ class << self
650
+ def included(base); end
651
+ def rake_classes; end
652
+ end
653
+ end
654
+
655
+ class Thor::RequiredArgumentMissingError < ::Thor::InvocationError
656
+ end
657
+
658
+ module Thor::Sandbox
659
+ end
660
+
661
+ module Thor::Shell
662
+ def initialize(args = T.unsafe(nil), options = T.unsafe(nil), config = T.unsafe(nil)); end
663
+
664
+ def ask(*args, &block); end
665
+ def error(*args, &block); end
666
+ def file_collision(*args, &block); end
667
+ def no?(*args, &block); end
668
+ def print_in_columns(*args, &block); end
669
+ def print_table(*args, &block); end
670
+ def print_wrapped(*args, &block); end
671
+ def say(*args, &block); end
672
+ def say_status(*args, &block); end
673
+ def set_color(*args, &block); end
674
+ def shell; end
675
+ def shell=(_); end
676
+ def terminal_width(*args, &block); end
677
+ def with_padding; end
678
+ def yes?(*args, &block); end
679
+
680
+ protected
681
+
682
+ def _shared_configuration; end
683
+ end
684
+
685
+ class Thor::Shell::Basic
686
+ def initialize; end
687
+
688
+ def ask(statement, *args); end
689
+ def base; end
690
+ def base=(_); end
691
+ def error(statement); end
692
+ def file_collision(destination); end
693
+ def indent(count = T.unsafe(nil)); end
694
+ def mute; end
695
+ def mute?; end
696
+ def no?(statement, color = T.unsafe(nil)); end
697
+ def padding; end
698
+ def padding=(value); end
699
+ def print_in_columns(array); end
700
+ def print_table(array, options = T.unsafe(nil)); end
701
+ def print_wrapped(message, options = T.unsafe(nil)); end
702
+ def say(message = T.unsafe(nil), color = T.unsafe(nil), force_new_line = T.unsafe(nil)); end
703
+ def say_status(status, message, log_status = T.unsafe(nil)); end
704
+ def set_color(string, *_); end
705
+ def terminal_width; end
706
+ def yes?(statement, color = T.unsafe(nil)); end
707
+
708
+ protected
709
+
710
+ def answer_match(possibilities, answer, case_insensitive); end
711
+ def as_unicode; end
712
+ def ask_filtered(statement, color, options); end
713
+ def ask_simply(statement, color, options); end
714
+ def can_display_colors?; end
715
+ def dynamic_width; end
716
+ def dynamic_width_stty; end
717
+ def dynamic_width_tput; end
718
+ def file_collision_help; end
719
+ def git_merge_tool; end
720
+ def is?(value); end
721
+ def lookup_color(color); end
722
+ def merge(destination, content); end
723
+ def merge_tool; end
724
+ def prepare_message(message, *color); end
725
+ def quiet?; end
726
+ def show_diff(destination, content); end
727
+ def stderr; end
728
+ def stdout; end
729
+ def truncate(string, width); end
730
+ def unix?; end
731
+ end
732
+
733
+ Thor::Shell::Basic::DEFAULT_TERMINAL_WIDTH = T.let(T.unsafe(nil), Integer)
734
+
735
+ class Thor::Shell::Color < ::Thor::Shell::Basic
736
+ def set_color(string, *colors); end
737
+
738
+ protected
739
+
740
+ def are_colors_disabled?; end
741
+ def can_display_colors?; end
742
+ def diff_lcs_loaded?; end
743
+ def output_diff_line(diff); end
744
+ def show_diff(destination, content); end
745
+ end
746
+
747
+ Thor::Shell::Color::BLACK = T.let(T.unsafe(nil), String)
748
+
749
+ Thor::Shell::Color::BLUE = T.let(T.unsafe(nil), String)
750
+
751
+ Thor::Shell::Color::BOLD = T.let(T.unsafe(nil), String)
752
+
753
+ Thor::Shell::Color::CLEAR = T.let(T.unsafe(nil), String)
754
+
755
+ Thor::Shell::Color::CYAN = T.let(T.unsafe(nil), String)
756
+
757
+ Thor::Shell::Color::GREEN = T.let(T.unsafe(nil), String)
758
+
759
+ Thor::Shell::Color::MAGENTA = T.let(T.unsafe(nil), String)
760
+
761
+ Thor::Shell::Color::ON_BLACK = T.let(T.unsafe(nil), String)
762
+
763
+ Thor::Shell::Color::ON_BLUE = T.let(T.unsafe(nil), String)
764
+
765
+ Thor::Shell::Color::ON_CYAN = T.let(T.unsafe(nil), String)
766
+
767
+ Thor::Shell::Color::ON_GREEN = T.let(T.unsafe(nil), String)
768
+
769
+ Thor::Shell::Color::ON_MAGENTA = T.let(T.unsafe(nil), String)
770
+
771
+ Thor::Shell::Color::ON_RED = T.let(T.unsafe(nil), String)
772
+
773
+ Thor::Shell::Color::ON_WHITE = T.let(T.unsafe(nil), String)
774
+
775
+ Thor::Shell::Color::ON_YELLOW = T.let(T.unsafe(nil), String)
776
+
777
+ Thor::Shell::Color::RED = T.let(T.unsafe(nil), String)
778
+
779
+ Thor::Shell::Color::WHITE = T.let(T.unsafe(nil), String)
780
+
781
+ Thor::Shell::Color::YELLOW = T.let(T.unsafe(nil), String)
782
+
783
+ class Thor::Shell::HTML < ::Thor::Shell::Basic
784
+ def ask(statement, color = T.unsafe(nil)); end
785
+ def set_color(string, *colors); end
786
+
787
+ protected
788
+
789
+ def can_display_colors?; end
790
+ def diff_lcs_loaded?; end
791
+ def output_diff_line(diff); end
792
+ def show_diff(destination, content); end
793
+ end
794
+
795
+ Thor::Shell::HTML::BLACK = T.let(T.unsafe(nil), String)
796
+
797
+ Thor::Shell::HTML::BLUE = T.let(T.unsafe(nil), String)
798
+
799
+ Thor::Shell::HTML::BOLD = T.let(T.unsafe(nil), String)
800
+
801
+ Thor::Shell::HTML::CYAN = T.let(T.unsafe(nil), String)
802
+
803
+ Thor::Shell::HTML::GREEN = T.let(T.unsafe(nil), String)
804
+
805
+ Thor::Shell::HTML::MAGENTA = T.let(T.unsafe(nil), String)
806
+
807
+ Thor::Shell::HTML::ON_BLACK = T.let(T.unsafe(nil), String)
808
+
809
+ Thor::Shell::HTML::ON_BLUE = T.let(T.unsafe(nil), String)
810
+
811
+ Thor::Shell::HTML::ON_CYAN = T.let(T.unsafe(nil), String)
812
+
813
+ Thor::Shell::HTML::ON_GREEN = T.let(T.unsafe(nil), String)
814
+
815
+ Thor::Shell::HTML::ON_MAGENTA = T.let(T.unsafe(nil), String)
816
+
817
+ Thor::Shell::HTML::ON_RED = T.let(T.unsafe(nil), String)
818
+
819
+ Thor::Shell::HTML::ON_WHITE = T.let(T.unsafe(nil), String)
820
+
821
+ Thor::Shell::HTML::ON_YELLOW = T.let(T.unsafe(nil), String)
822
+
823
+ Thor::Shell::HTML::RED = T.let(T.unsafe(nil), String)
824
+
825
+ Thor::Shell::HTML::WHITE = T.let(T.unsafe(nil), String)
826
+
827
+ Thor::Shell::HTML::YELLOW = T.let(T.unsafe(nil), String)
828
+
829
+ Thor::Shell::SHELL_DELEGATED_METHODS = T.let(T.unsafe(nil), Array)
830
+
831
+ Thor::TEMPLATE_EXTNAME = T.let(T.unsafe(nil), String)
832
+
833
+ Thor::THOR_RESERVED_WORDS = T.let(T.unsafe(nil), Array)
834
+
835
+ Thor::Task = Thor::Command
836
+
837
+ class Thor::UndefinedCommandError < ::Thor::Error
838
+ include(::DidYouMean::Correctable)
839
+
840
+ def initialize(command, all_commands, namespace); end
841
+
842
+ def all_commands; end
843
+ def command; end
844
+ end
845
+
846
+ class Thor::UndefinedCommandError::SpellChecker
847
+ def initialize(error); end
848
+
849
+ def corrections; end
850
+ def error; end
851
+ def spell_checker; end
852
+ end
853
+
854
+ Thor::UndefinedTaskError = Thor::UndefinedCommandError
855
+
856
+ class Thor::UnknownArgumentError < ::Thor::Error
857
+ include(::DidYouMean::Correctable)
858
+
859
+ def initialize(switches, unknown); end
860
+
861
+ def switches; end
862
+ def unknown; end
863
+ end
864
+
865
+ class Thor::UnknownArgumentError::SpellChecker
866
+ def initialize(error); end
867
+
868
+ def corrections; end
869
+ def error; end
870
+ def spell_checker; end
871
+ end
872
+
873
+ module Thor::Util
874
+ class << self
875
+ def camel_case(str); end
876
+ def escape_globs(path); end
877
+ def escape_html(string); end
878
+ def find_by_namespace(namespace); end
879
+ def find_class_and_command_by_namespace(namespace, fallback = T.unsafe(nil)); end
880
+ def find_class_and_task_by_namespace(namespace, fallback = T.unsafe(nil)); end
881
+ def globs_for(path); end
882
+ def load_thorfile(path, content = T.unsafe(nil), debug = T.unsafe(nil)); end
883
+ def namespace_from_thor_class(constant); end
884
+ def namespaces_in_content(contents, file = T.unsafe(nil)); end
885
+ def ruby_command; end
886
+ def snake_case(str); end
887
+ def thor_classes_in(klass); end
888
+ def thor_root; end
889
+ def thor_root_glob; end
890
+ def user_home; end
891
+ end
892
+ end