packwerk 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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