rbs 4.1.0.pre.2-java

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 (574) hide show
  1. checksums.yaml +7 -0
  2. data/.clang-format +75 -0
  3. data/.clangd +2 -0
  4. data/.github/dependabot.yml +24 -0
  5. data/.github/workflows/bundle-update.yml +63 -0
  6. data/.github/workflows/c-check.yml +61 -0
  7. data/.github/workflows/comments.yml +37 -0
  8. data/.github/workflows/dependabot.yml +30 -0
  9. data/.github/workflows/jruby.yml +67 -0
  10. data/.github/workflows/milestone.yml +83 -0
  11. data/.github/workflows/ruby.yml +158 -0
  12. data/.github/workflows/rust.yml +184 -0
  13. data/.github/workflows/truffleruby.yml +54 -0
  14. data/.github/workflows/typecheck.yml +39 -0
  15. data/.github/workflows/wasm.yml +53 -0
  16. data/.github/workflows/windows.yml +49 -0
  17. data/.gitignore +38 -0
  18. data/.rubocop.yml +72 -0
  19. data/BSDL +22 -0
  20. data/CHANGELOG.md +2292 -0
  21. data/COPYING +56 -0
  22. data/README.md +240 -0
  23. data/Rakefile +869 -0
  24. data/Steepfile +53 -0
  25. data/config.yml +913 -0
  26. data/core/array.rbs +4142 -0
  27. data/core/basic_object.rbs +376 -0
  28. data/core/binding.rbs +148 -0
  29. data/core/builtin.rbs +278 -0
  30. data/core/class.rbs +223 -0
  31. data/core/comparable.rbs +192 -0
  32. data/core/complex.rbs +812 -0
  33. data/core/constants.rbs +96 -0
  34. data/core/data.rbs +415 -0
  35. data/core/dir.rbs +993 -0
  36. data/core/encoding.rbs +1368 -0
  37. data/core/enumerable.rbs +2506 -0
  38. data/core/enumerator/arithmetic_sequence.rbs +70 -0
  39. data/core/enumerator/product.rbs +92 -0
  40. data/core/enumerator.rbs +705 -0
  41. data/core/env.rbs +6 -0
  42. data/core/errno.rbs +682 -0
  43. data/core/errors.rbs +789 -0
  44. data/core/exception.rbs +485 -0
  45. data/core/false_class.rbs +82 -0
  46. data/core/fiber.rbs +570 -0
  47. data/core/fiber_error.rbs +11 -0
  48. data/core/file.rbs +2045 -0
  49. data/core/file_constants.rbs +463 -0
  50. data/core/file_stat.rbs +534 -0
  51. data/core/file_test.rbs +331 -0
  52. data/core/float.rbs +1316 -0
  53. data/core/gc.rbs +788 -0
  54. data/core/global_variables.rbs +184 -0
  55. data/core/hash.rbs +2183 -0
  56. data/core/integer.rbs +1374 -0
  57. data/core/io/buffer.rbs +995 -0
  58. data/core/io/wait.rbs +48 -0
  59. data/core/io.rbs +3472 -0
  60. data/core/kernel.rbs +3172 -0
  61. data/core/marshal.rbs +207 -0
  62. data/core/match_data.rbs +637 -0
  63. data/core/math.rbs +770 -0
  64. data/core/method.rbs +422 -0
  65. data/core/module.rbs +1856 -0
  66. data/core/nil_class.rbs +210 -0
  67. data/core/numeric.rbs +832 -0
  68. data/core/object.rbs +108 -0
  69. data/core/object_space/weak_key_map.rbs +166 -0
  70. data/core/object_space.rbs +197 -0
  71. data/core/pathname.rbs +1322 -0
  72. data/core/proc.rbs +905 -0
  73. data/core/process.rbs +2316 -0
  74. data/core/ractor.rbs +924 -0
  75. data/core/random.rbs +255 -0
  76. data/core/range.rbs +1209 -0
  77. data/core/rational.rbs +502 -0
  78. data/core/rb_config.rbs +88 -0
  79. data/core/rbs/ops.rbs +154 -0
  80. data/core/rbs/unnamed/argf.rbs +1236 -0
  81. data/core/rbs/unnamed/env_class.rbs +1214 -0
  82. data/core/rbs/unnamed/main_class.rbs +123 -0
  83. data/core/rbs/unnamed/random.rbs +186 -0
  84. data/core/refinement.rbs +59 -0
  85. data/core/regexp.rbs +1974 -0
  86. data/core/ruby.rbs +53 -0
  87. data/core/ruby_vm.rbs +809 -0
  88. data/core/rubygems/basic_specification.rbs +6 -0
  89. data/core/rubygems/config_file.rbs +38 -0
  90. data/core/rubygems/dependency_installer.rbs +6 -0
  91. data/core/rubygems/errors.rbs +109 -0
  92. data/core/rubygems/installer.rbs +15 -0
  93. data/core/rubygems/path_support.rbs +6 -0
  94. data/core/rubygems/platform.rbs +7 -0
  95. data/core/rubygems/request_set.rbs +49 -0
  96. data/core/rubygems/requirement.rbs +148 -0
  97. data/core/rubygems/rubygems.rbs +1105 -0
  98. data/core/rubygems/source_list.rbs +15 -0
  99. data/core/rubygems/specification.rbs +23 -0
  100. data/core/rubygems/stream_ui.rbs +5 -0
  101. data/core/rubygems/uninstaller.rbs +10 -0
  102. data/core/rubygems/version.rbs +293 -0
  103. data/core/set.rbs +751 -0
  104. data/core/signal.rbs +110 -0
  105. data/core/string.rbs +5532 -0
  106. data/core/struct.rbs +668 -0
  107. data/core/symbol.rbs +482 -0
  108. data/core/thread.rbs +1826 -0
  109. data/core/thread_group.rbs +79 -0
  110. data/core/time.rbs +1793 -0
  111. data/core/trace_point.rbs +483 -0
  112. data/core/true_class.rbs +98 -0
  113. data/core/unbound_method.rbs +337 -0
  114. data/core/warning.rbs +87 -0
  115. data/docs/CONTRIBUTING.md +107 -0
  116. data/docs/aliases.md +79 -0
  117. data/docs/architecture.md +110 -0
  118. data/docs/collection.md +192 -0
  119. data/docs/config.md +171 -0
  120. data/docs/data_and_struct.md +86 -0
  121. data/docs/encoding.md +56 -0
  122. data/docs/gem.md +56 -0
  123. data/docs/inline.md +634 -0
  124. data/docs/rbs_by_example.md +309 -0
  125. data/docs/repo.md +125 -0
  126. data/docs/rust.md +96 -0
  127. data/docs/sigs.md +167 -0
  128. data/docs/stdlib.md +147 -0
  129. data/docs/syntax.md +940 -0
  130. data/docs/tools.md +17 -0
  131. data/docs/type_fingerprint.md +21 -0
  132. data/docs/wasm_serialization.md +80 -0
  133. data/exe/rbs +7 -0
  134. data/ext/rbs_extension/ast_translation.c +1855 -0
  135. data/ext/rbs_extension/ast_translation.h +41 -0
  136. data/ext/rbs_extension/class_constants.c +187 -0
  137. data/ext/rbs_extension/class_constants.h +104 -0
  138. data/ext/rbs_extension/compat.h +10 -0
  139. data/ext/rbs_extension/extconf.rb +40 -0
  140. data/ext/rbs_extension/legacy_location.c +294 -0
  141. data/ext/rbs_extension/legacy_location.h +82 -0
  142. data/ext/rbs_extension/main.c +613 -0
  143. data/ext/rbs_extension/rbs_extension.h +16 -0
  144. data/ext/rbs_extension/rbs_string_bridging.c +9 -0
  145. data/ext/rbs_extension/rbs_string_bridging.h +24 -0
  146. data/goodcheck.yml +91 -0
  147. data/include/rbs/ast.h +1047 -0
  148. data/include/rbs/defines.h +99 -0
  149. data/include/rbs/lexer.h +207 -0
  150. data/include/rbs/location.h +40 -0
  151. data/include/rbs/parser.h +153 -0
  152. data/include/rbs/serialize.h +39 -0
  153. data/include/rbs/string.h +47 -0
  154. data/include/rbs/util/rbs_allocator.h +59 -0
  155. data/include/rbs/util/rbs_assert.h +20 -0
  156. data/include/rbs/util/rbs_buffer.h +83 -0
  157. data/include/rbs/util/rbs_constant_pool.h +155 -0
  158. data/include/rbs/util/rbs_encoding.h +282 -0
  159. data/include/rbs/util/rbs_unescape.h +24 -0
  160. data/include/rbs.h +14 -0
  161. data/lib/rbs/ancestor_graph.rb +92 -0
  162. data/lib/rbs/annotate/annotations.rb +199 -0
  163. data/lib/rbs/annotate/formatter.rb +82 -0
  164. data/lib/rbs/annotate/rdoc_annotator.rb +398 -0
  165. data/lib/rbs/annotate/rdoc_source.rb +131 -0
  166. data/lib/rbs/annotate.rb +8 -0
  167. data/lib/rbs/ast/annotation.rb +29 -0
  168. data/lib/rbs/ast/comment.rb +29 -0
  169. data/lib/rbs/ast/declarations.rb +472 -0
  170. data/lib/rbs/ast/directives.rb +49 -0
  171. data/lib/rbs/ast/members.rb +451 -0
  172. data/lib/rbs/ast/ruby/annotations.rb +451 -0
  173. data/lib/rbs/ast/ruby/comment_block.rb +247 -0
  174. data/lib/rbs/ast/ruby/declarations.rb +291 -0
  175. data/lib/rbs/ast/ruby/helpers/constant_helper.rb +28 -0
  176. data/lib/rbs/ast/ruby/helpers/location_helper.rb +15 -0
  177. data/lib/rbs/ast/ruby/members.rb +762 -0
  178. data/lib/rbs/ast/type_param.rb +235 -0
  179. data/lib/rbs/ast/visitor.rb +137 -0
  180. data/lib/rbs/buffer.rb +189 -0
  181. data/lib/rbs/builtin_names.rb +58 -0
  182. data/lib/rbs/cli/colored_io.rb +48 -0
  183. data/lib/rbs/cli/diff.rb +84 -0
  184. data/lib/rbs/cli/validate.rb +294 -0
  185. data/lib/rbs/cli.rb +1253 -0
  186. data/lib/rbs/collection/cleaner.rb +38 -0
  187. data/lib/rbs/collection/config/lockfile.rb +92 -0
  188. data/lib/rbs/collection/config/lockfile_generator.rb +269 -0
  189. data/lib/rbs/collection/config.rb +81 -0
  190. data/lib/rbs/collection/installer.rb +32 -0
  191. data/lib/rbs/collection/sources/base.rb +14 -0
  192. data/lib/rbs/collection/sources/git.rb +265 -0
  193. data/lib/rbs/collection/sources/local.rb +81 -0
  194. data/lib/rbs/collection/sources/rubygems.rb +48 -0
  195. data/lib/rbs/collection/sources/stdlib.rb +50 -0
  196. data/lib/rbs/collection/sources.rb +38 -0
  197. data/lib/rbs/collection.rb +16 -0
  198. data/lib/rbs/constant.rb +28 -0
  199. data/lib/rbs/definition.rb +415 -0
  200. data/lib/rbs/definition_builder/ancestor_builder.rb +678 -0
  201. data/lib/rbs/definition_builder/method_builder.rb +295 -0
  202. data/lib/rbs/definition_builder.rb +1054 -0
  203. data/lib/rbs/diff.rb +131 -0
  204. data/lib/rbs/environment/class_entry.rb +69 -0
  205. data/lib/rbs/environment/module_entry.rb +66 -0
  206. data/lib/rbs/environment/use_map.rb +77 -0
  207. data/lib/rbs/environment.rb +1028 -0
  208. data/lib/rbs/environment_loader.rb +167 -0
  209. data/lib/rbs/environment_walker.rb +155 -0
  210. data/lib/rbs/errors.rb +634 -0
  211. data/lib/rbs/factory.rb +18 -0
  212. data/lib/rbs/file_finder.rb +28 -0
  213. data/lib/rbs/inline_parser/comment_association.rb +117 -0
  214. data/lib/rbs/inline_parser.rb +568 -0
  215. data/lib/rbs/location_aux.rb +170 -0
  216. data/lib/rbs/locator.rb +247 -0
  217. data/lib/rbs/method_type.rb +145 -0
  218. data/lib/rbs/namespace.rb +154 -0
  219. data/lib/rbs/parser/lex_result.rb +15 -0
  220. data/lib/rbs/parser/token.rb +23 -0
  221. data/lib/rbs/parser_aux.rb +142 -0
  222. data/lib/rbs/prototype/helpers.rb +197 -0
  223. data/lib/rbs/prototype/node_usage.rb +99 -0
  224. data/lib/rbs/prototype/rb.rb +816 -0
  225. data/lib/rbs/prototype/rbi.rb +625 -0
  226. data/lib/rbs/prototype/runtime/helpers.rb +59 -0
  227. data/lib/rbs/prototype/runtime/reflection.rb +19 -0
  228. data/lib/rbs/prototype/runtime/value_object_generator.rb +279 -0
  229. data/lib/rbs/prototype/runtime.rb +680 -0
  230. data/lib/rbs/repository.rb +127 -0
  231. data/lib/rbs/resolver/constant_resolver.rb +219 -0
  232. data/lib/rbs/resolver/type_name_resolver.rb +167 -0
  233. data/lib/rbs/rewriter.rb +70 -0
  234. data/lib/rbs/sorter.rb +198 -0
  235. data/lib/rbs/source.rb +99 -0
  236. data/lib/rbs/substitution.rb +83 -0
  237. data/lib/rbs/subtractor.rb +204 -0
  238. data/lib/rbs/test/errors.rb +80 -0
  239. data/lib/rbs/test/guaranteed.rb +30 -0
  240. data/lib/rbs/test/hook.rb +212 -0
  241. data/lib/rbs/test/observer.rb +19 -0
  242. data/lib/rbs/test/setup.rb +84 -0
  243. data/lib/rbs/test/setup_helper.rb +50 -0
  244. data/lib/rbs/test/tester.rb +167 -0
  245. data/lib/rbs/test/type_check.rb +457 -0
  246. data/lib/rbs/test.rb +112 -0
  247. data/lib/rbs/type_alias_dependency.rb +100 -0
  248. data/lib/rbs/type_alias_regularity.rb +126 -0
  249. data/lib/rbs/type_name.rb +122 -0
  250. data/lib/rbs/types.rb +1604 -0
  251. data/lib/rbs/unit_test/convertibles.rb +177 -0
  252. data/lib/rbs/unit_test/spy.rb +138 -0
  253. data/lib/rbs/unit_test/type_assertions.rb +383 -0
  254. data/lib/rbs/unit_test/with_aliases.rb +145 -0
  255. data/lib/rbs/unit_test.rb +6 -0
  256. data/lib/rbs/validator.rb +186 -0
  257. data/lib/rbs/variance_calculator.rb +189 -0
  258. data/lib/rbs/vendorer.rb +71 -0
  259. data/lib/rbs/version.rb +5 -0
  260. data/lib/rbs/wasm/deserializer.rb +213 -0
  261. data/lib/rbs/wasm/jars/asm-analysis.jar +0 -0
  262. data/lib/rbs/wasm/jars/asm-commons.jar +0 -0
  263. data/lib/rbs/wasm/jars/asm-tree.jar +0 -0
  264. data/lib/rbs/wasm/jars/asm-util.jar +0 -0
  265. data/lib/rbs/wasm/jars/asm.jar +0 -0
  266. data/lib/rbs/wasm/jars/compiler.jar +0 -0
  267. data/lib/rbs/wasm/jars/log.jar +0 -0
  268. data/lib/rbs/wasm/jars/runtime.jar +0 -0
  269. data/lib/rbs/wasm/jars/wasi.jar +0 -0
  270. data/lib/rbs/wasm/jars/wasm.jar +0 -0
  271. data/lib/rbs/wasm/location.rb +61 -0
  272. data/lib/rbs/wasm/parser.rb +137 -0
  273. data/lib/rbs/wasm/rbs_parser.wasm +0 -0
  274. data/lib/rbs/wasm/runtime.rb +217 -0
  275. data/lib/rbs/wasm/serialization_schema.rb +110 -0
  276. data/lib/rbs/writer.rb +424 -0
  277. data/lib/rbs.rb +117 -0
  278. data/lib/rdoc/discover.rb +20 -0
  279. data/lib/rdoc_plugin/parser.rb +163 -0
  280. data/rbs.gemspec +68 -0
  281. data/schema/annotation.json +14 -0
  282. data/schema/comment.json +26 -0
  283. data/schema/decls.json +326 -0
  284. data/schema/function.json +87 -0
  285. data/schema/location.json +56 -0
  286. data/schema/members.json +266 -0
  287. data/schema/methodType.json +50 -0
  288. data/schema/typeParam.json +52 -0
  289. data/schema/types.json +317 -0
  290. data/sig/ancestor_builder.rbs +163 -0
  291. data/sig/ancestor_graph.rbs +60 -0
  292. data/sig/annotate/annotations.rbs +102 -0
  293. data/sig/annotate/formatter.rbs +24 -0
  294. data/sig/annotate/rdoc_annotater.rbs +85 -0
  295. data/sig/annotate/rdoc_source.rbs +32 -0
  296. data/sig/annotation.rbs +27 -0
  297. data/sig/ast/ruby/annotations.rbs +470 -0
  298. data/sig/ast/ruby/comment_block.rbs +127 -0
  299. data/sig/ast/ruby/declarations.rbs +158 -0
  300. data/sig/ast/ruby/helpers/constant_helper.rbs +11 -0
  301. data/sig/ast/ruby/helpers/location_helper.rbs +15 -0
  302. data/sig/ast/ruby/members.rbs +198 -0
  303. data/sig/buffer.rbs +108 -0
  304. data/sig/builtin_names.rbs +44 -0
  305. data/sig/cli/colored_io.rbs +15 -0
  306. data/sig/cli/diff.rbs +15 -0
  307. data/sig/cli/validate.rbs +47 -0
  308. data/sig/cli.rbs +89 -0
  309. data/sig/collection/cleaner.rbs +13 -0
  310. data/sig/collection/config/lockfile.rbs +74 -0
  311. data/sig/collection/config/lockfile_generator.rbs +68 -0
  312. data/sig/collection/config.rbs +46 -0
  313. data/sig/collection/installer.rbs +17 -0
  314. data/sig/collection/sources.rbs +214 -0
  315. data/sig/collection.rbs +4 -0
  316. data/sig/comment.rbs +26 -0
  317. data/sig/constant.rbs +21 -0
  318. data/sig/declarations.rbs +274 -0
  319. data/sig/definition.rbs +232 -0
  320. data/sig/definition_builder.rbs +181 -0
  321. data/sig/diff.rbs +28 -0
  322. data/sig/directives.rbs +77 -0
  323. data/sig/environment/class_entry.rbs +50 -0
  324. data/sig/environment/module_entry.rbs +50 -0
  325. data/sig/environment.rbs +286 -0
  326. data/sig/environment_loader.rbs +111 -0
  327. data/sig/environment_walker.rbs +65 -0
  328. data/sig/errors.rbs +408 -0
  329. data/sig/factory.rbs +5 -0
  330. data/sig/file_finder.rbs +28 -0
  331. data/sig/inline_parser/comment_association.rbs +71 -0
  332. data/sig/inline_parser.rbs +126 -0
  333. data/sig/location.rbs +135 -0
  334. data/sig/locator.rbs +56 -0
  335. data/sig/manifest.yaml +5 -0
  336. data/sig/members.rbs +258 -0
  337. data/sig/method_builder.rbs +89 -0
  338. data/sig/method_types.rbs +58 -0
  339. data/sig/namespace.rbs +161 -0
  340. data/sig/parser.rbs +164 -0
  341. data/sig/prototype/helpers.rbs +29 -0
  342. data/sig/prototype/node_usage.rbs +20 -0
  343. data/sig/prototype/rb.rbs +96 -0
  344. data/sig/prototype/rbi.rbs +75 -0
  345. data/sig/prototype/runtime.rbs +182 -0
  346. data/sig/rbs.rbs +21 -0
  347. data/sig/rdoc/rbs.rbs +67 -0
  348. data/sig/repository.rbs +85 -0
  349. data/sig/resolver/constant_resolver.rbs +92 -0
  350. data/sig/resolver/context.rbs +34 -0
  351. data/sig/resolver/type_name_resolver.rbs +61 -0
  352. data/sig/rewriter.rbs +45 -0
  353. data/sig/shims/bundler.rbs +38 -0
  354. data/sig/shims/enumerable.rbs +5 -0
  355. data/sig/shims/rubygems.rbs +19 -0
  356. data/sig/sorter.rbs +41 -0
  357. data/sig/source.rbs +48 -0
  358. data/sig/substitution.rbs +48 -0
  359. data/sig/subtractor.rbs +37 -0
  360. data/sig/test/errors.rbs +52 -0
  361. data/sig/test/guranteed.rbs +9 -0
  362. data/sig/test/type_check.rbs +19 -0
  363. data/sig/test.rbs +82 -0
  364. data/sig/type_alias_dependency.rbs +53 -0
  365. data/sig/type_alias_regularity.rbs +98 -0
  366. data/sig/type_param.rbs +115 -0
  367. data/sig/typename.rbs +89 -0
  368. data/sig/types.rbs +578 -0
  369. data/sig/unit_test/convertibles.rbs +154 -0
  370. data/sig/unit_test/spy.rbs +22 -0
  371. data/sig/unit_test/type_assertions.rbs +211 -0
  372. data/sig/unit_test/with_aliases.rbs +136 -0
  373. data/sig/use_map.rbs +35 -0
  374. data/sig/util.rbs +9 -0
  375. data/sig/validator.rbs +63 -0
  376. data/sig/variance_calculator.rbs +87 -0
  377. data/sig/vendorer.rbs +51 -0
  378. data/sig/version.rbs +3 -0
  379. data/sig/visitor.rbs +47 -0
  380. data/sig/wasm/deserializer.rbs +66 -0
  381. data/sig/wasm/serialization_schema.rbs +13 -0
  382. data/sig/writer.rbs +127 -0
  383. data/src/ast.c +1628 -0
  384. data/src/lexer.c +3217 -0
  385. data/src/lexer.re +155 -0
  386. data/src/lexstate.c +217 -0
  387. data/src/location.c +31 -0
  388. data/src/parser.c +4255 -0
  389. data/src/serialize.c +958 -0
  390. data/src/string.c +41 -0
  391. data/src/util/rbs_allocator.c +162 -0
  392. data/src/util/rbs_assert.c +19 -0
  393. data/src/util/rbs_buffer.c +54 -0
  394. data/src/util/rbs_constant_pool.c +268 -0
  395. data/src/util/rbs_encoding.c +21308 -0
  396. data/src/util/rbs_unescape.c +167 -0
  397. data/stdlib/abbrev/0/abbrev.rbs +66 -0
  398. data/stdlib/abbrev/0/array.rbs +26 -0
  399. data/stdlib/base64/0/base64.rbs +355 -0
  400. data/stdlib/benchmark/0/benchmark.rbs +452 -0
  401. data/stdlib/bigdecimal/0/big_decimal.rbs +1647 -0
  402. data/stdlib/bigdecimal-math/0/big_math.rbs +280 -0
  403. data/stdlib/bigdecimal-math/0/manifest.yaml +2 -0
  404. data/stdlib/cgi/0/core.rbs +911 -0
  405. data/stdlib/cgi/0/manifest.yaml +4 -0
  406. data/stdlib/cgi-escape/0/escape.rbs +171 -0
  407. data/stdlib/coverage/0/coverage.rbs +266 -0
  408. data/stdlib/csv/0/csv.rbs +3776 -0
  409. data/stdlib/csv/0/manifest.yaml +3 -0
  410. data/stdlib/date/0/date.rbs +1598 -0
  411. data/stdlib/date/0/date_time.rbs +617 -0
  412. data/stdlib/date/0/time.rbs +26 -0
  413. data/stdlib/dbm/0/dbm.rbs +421 -0
  414. data/stdlib/delegate/0/delegator.rbs +187 -0
  415. data/stdlib/delegate/0/kernel.rbs +47 -0
  416. data/stdlib/delegate/0/simple_delegator.rbs +96 -0
  417. data/stdlib/did_you_mean/0/did_you_mean.rbs +344 -0
  418. data/stdlib/digest/0/digest.rbs +687 -0
  419. data/stdlib/erb/0/erb.rbs +933 -0
  420. data/stdlib/etc/0/etc.rbs +884 -0
  421. data/stdlib/fileutils/0/fileutils.rbs +1753 -0
  422. data/stdlib/find/0/find.rbs +49 -0
  423. data/stdlib/forwardable/0/forwardable.rbs +271 -0
  424. data/stdlib/io-console/0/io-console.rbs +414 -0
  425. data/stdlib/ipaddr/0/ipaddr.rbs +436 -0
  426. data/stdlib/json/0/json.rbs +1963 -0
  427. data/stdlib/kconv/0/kconv.rbs +166 -0
  428. data/stdlib/logger/0/formatter.rbs +45 -0
  429. data/stdlib/logger/0/log_device.rbs +100 -0
  430. data/stdlib/logger/0/logger.rbs +796 -0
  431. data/stdlib/logger/0/manifest.yaml +2 -0
  432. data/stdlib/logger/0/period.rbs +17 -0
  433. data/stdlib/logger/0/severity.rbs +34 -0
  434. data/stdlib/minitest/0/kernel.rbs +42 -0
  435. data/stdlib/minitest/0/minitest/abstract_reporter.rbs +52 -0
  436. data/stdlib/minitest/0/minitest/assertion.rbs +17 -0
  437. data/stdlib/minitest/0/minitest/assertions.rbs +590 -0
  438. data/stdlib/minitest/0/minitest/backtrace_filter.rbs +23 -0
  439. data/stdlib/minitest/0/minitest/bench_spec.rbs +102 -0
  440. data/stdlib/minitest/0/minitest/benchmark.rbs +259 -0
  441. data/stdlib/minitest/0/minitest/composite_reporter.rbs +25 -0
  442. data/stdlib/minitest/0/minitest/compress.rbs +13 -0
  443. data/stdlib/minitest/0/minitest/error_on_warning.rbs +3 -0
  444. data/stdlib/minitest/0/minitest/expectation.rbs +2 -0
  445. data/stdlib/minitest/0/minitest/expectations.rbs +21 -0
  446. data/stdlib/minitest/0/minitest/guard.rbs +64 -0
  447. data/stdlib/minitest/0/minitest/mock.rbs +64 -0
  448. data/stdlib/minitest/0/minitest/parallel/executor.rbs +46 -0
  449. data/stdlib/minitest/0/minitest/parallel/test/class_methods.rbs +5 -0
  450. data/stdlib/minitest/0/minitest/parallel/test.rbs +3 -0
  451. data/stdlib/minitest/0/minitest/parallel.rbs +2 -0
  452. data/stdlib/minitest/0/minitest/pride_io.rbs +62 -0
  453. data/stdlib/minitest/0/minitest/pride_lol.rbs +19 -0
  454. data/stdlib/minitest/0/minitest/progress_reporter.rbs +11 -0
  455. data/stdlib/minitest/0/minitest/reportable.rbs +53 -0
  456. data/stdlib/minitest/0/minitest/reporter.rbs +5 -0
  457. data/stdlib/minitest/0/minitest/result.rbs +28 -0
  458. data/stdlib/minitest/0/minitest/runnable.rbs +163 -0
  459. data/stdlib/minitest/0/minitest/skip.rbs +6 -0
  460. data/stdlib/minitest/0/minitest/spec/dsl/instance_methods.rbs +48 -0
  461. data/stdlib/minitest/0/minitest/spec/dsl.rbs +129 -0
  462. data/stdlib/minitest/0/minitest/spec.rbs +11 -0
  463. data/stdlib/minitest/0/minitest/statistics_reporter.rbs +81 -0
  464. data/stdlib/minitest/0/minitest/summary_reporter.rbs +18 -0
  465. data/stdlib/minitest/0/minitest/test/lifecycle_hooks.rbs +92 -0
  466. data/stdlib/minitest/0/minitest/test.rbs +69 -0
  467. data/stdlib/minitest/0/minitest/unexpected_error.rbs +12 -0
  468. data/stdlib/minitest/0/minitest/unexpected_warning.rbs +6 -0
  469. data/stdlib/minitest/0/minitest/unit/test_case.rbs +3 -0
  470. data/stdlib/minitest/0/minitest/unit.rbs +4 -0
  471. data/stdlib/minitest/0/minitest.rbs +115 -0
  472. data/stdlib/monitor/0/monitor.rbs +363 -0
  473. data/stdlib/mutex_m/0/mutex_m.rbs +104 -0
  474. data/stdlib/net-http/0/manifest.yaml +3 -0
  475. data/stdlib/net-http/0/net-http.rbs +5580 -0
  476. data/stdlib/net-protocol/0/manifest.yaml +2 -0
  477. data/stdlib/net-protocol/0/net-protocol.rbs +56 -0
  478. data/stdlib/net-smtp/0/manifest.yaml +2 -0
  479. data/stdlib/net-smtp/0/net-smtp.rbs +55 -0
  480. data/stdlib/nkf/0/nkf.rbs +402 -0
  481. data/stdlib/objspace/0/objspace.rbs +470 -0
  482. data/stdlib/observable/0/observable.rbs +217 -0
  483. data/stdlib/open-uri/0/manifest.yaml +4 -0
  484. data/stdlib/open-uri/0/open-uri.rbs +433 -0
  485. data/stdlib/open3/0/open3.rbs +606 -0
  486. data/stdlib/openssl/0/manifest.yaml +3 -0
  487. data/stdlib/openssl/0/openssl.rbs +12231 -0
  488. data/stdlib/optparse/0/optparse.rbs +1734 -0
  489. data/stdlib/pathname/0/pathname.rbs +36 -0
  490. data/stdlib/pp/0/manifest.yaml +2 -0
  491. data/stdlib/pp/0/pp.rbs +301 -0
  492. data/stdlib/prettyprint/0/prettyprint.rbs +383 -0
  493. data/stdlib/pstore/0/pstore.rbs +608 -0
  494. data/stdlib/psych/0/core_ext.rbs +12 -0
  495. data/stdlib/psych/0/dbm.rbs +237 -0
  496. data/stdlib/psych/0/manifest.yaml +3 -0
  497. data/stdlib/psych/0/psych.rbs +455 -0
  498. data/stdlib/psych/0/store.rbs +57 -0
  499. data/stdlib/pty/0/pty.rbs +240 -0
  500. data/stdlib/random-formatter/0/random-formatter.rbs +277 -0
  501. data/stdlib/rdoc/0/code_object.rbs +52 -0
  502. data/stdlib/rdoc/0/comment.rbs +61 -0
  503. data/stdlib/rdoc/0/context.rbs +153 -0
  504. data/stdlib/rdoc/0/markup.rbs +117 -0
  505. data/stdlib/rdoc/0/options.rbs +76 -0
  506. data/stdlib/rdoc/0/parser.rbs +56 -0
  507. data/stdlib/rdoc/0/rdoc.rbs +393 -0
  508. data/stdlib/rdoc/0/ri.rbs +17 -0
  509. data/stdlib/rdoc/0/store.rbs +48 -0
  510. data/stdlib/rdoc/0/top_level.rbs +97 -0
  511. data/stdlib/resolv/0/manifest.yaml +3 -0
  512. data/stdlib/resolv/0/resolv.rbs +1787 -0
  513. data/stdlib/ripper/0/ripper.rbs +1654 -0
  514. data/stdlib/securerandom/0/manifest.yaml +2 -0
  515. data/stdlib/securerandom/0/securerandom.rbs +49 -0
  516. data/stdlib/shellwords/0/shellwords.rbs +229 -0
  517. data/stdlib/singleton/0/singleton.rbs +134 -0
  518. data/stdlib/socket/0/addrinfo.rbs +666 -0
  519. data/stdlib/socket/0/basic_socket.rbs +590 -0
  520. data/stdlib/socket/0/constants.rbs +2295 -0
  521. data/stdlib/socket/0/ip_socket.rbs +94 -0
  522. data/stdlib/socket/0/socket.rbs +4170 -0
  523. data/stdlib/socket/0/socket_error.rbs +5 -0
  524. data/stdlib/socket/0/tcp_server.rbs +192 -0
  525. data/stdlib/socket/0/tcp_socket.rbs +87 -0
  526. data/stdlib/socket/0/udp_socket.rbs +133 -0
  527. data/stdlib/socket/0/unix_server.rbs +169 -0
  528. data/stdlib/socket/0/unix_socket.rbs +172 -0
  529. data/stdlib/stringio/0/stringio.rbs +1681 -0
  530. data/stdlib/strscan/0/string_scanner.rbs +1648 -0
  531. data/stdlib/tempfile/0/tempfile.rbs +483 -0
  532. data/stdlib/time/0/time.rbs +434 -0
  533. data/stdlib/timeout/0/timeout.rbs +137 -0
  534. data/stdlib/tmpdir/0/tmpdir.rbs +69 -0
  535. data/stdlib/tsort/0/cyclic.rbs +8 -0
  536. data/stdlib/tsort/0/interfaces.rbs +20 -0
  537. data/stdlib/tsort/0/tsort.rbs +410 -0
  538. data/stdlib/uri/0/common.rbs +621 -0
  539. data/stdlib/uri/0/file.rbs +118 -0
  540. data/stdlib/uri/0/ftp.rbs +13 -0
  541. data/stdlib/uri/0/generic.rbs +1116 -0
  542. data/stdlib/uri/0/http.rbs +104 -0
  543. data/stdlib/uri/0/https.rbs +14 -0
  544. data/stdlib/uri/0/ldap.rbs +230 -0
  545. data/stdlib/uri/0/ldaps.rbs +14 -0
  546. data/stdlib/uri/0/mailto.rbs +92 -0
  547. data/stdlib/uri/0/rfc2396_parser.rbs +189 -0
  548. data/stdlib/uri/0/rfc3986_parser.rbs +2 -0
  549. data/stdlib/uri/0/ws.rbs +13 -0
  550. data/stdlib/uri/0/wss.rbs +9 -0
  551. data/stdlib/yaml/0/manifest.yaml +2 -0
  552. data/stdlib/yaml/0/yaml.rbs +1 -0
  553. data/stdlib/zlib/0/buf_error.rbs +10 -0
  554. data/stdlib/zlib/0/data_error.rbs +10 -0
  555. data/stdlib/zlib/0/deflate.rbs +211 -0
  556. data/stdlib/zlib/0/error.rbs +20 -0
  557. data/stdlib/zlib/0/gzip_file/crc_error.rbs +12 -0
  558. data/stdlib/zlib/0/gzip_file/error.rbs +23 -0
  559. data/stdlib/zlib/0/gzip_file/length_error.rbs +12 -0
  560. data/stdlib/zlib/0/gzip_file/no_footer.rbs +11 -0
  561. data/stdlib/zlib/0/gzip_file.rbs +156 -0
  562. data/stdlib/zlib/0/gzip_reader.rbs +293 -0
  563. data/stdlib/zlib/0/gzip_writer.rbs +168 -0
  564. data/stdlib/zlib/0/inflate.rbs +180 -0
  565. data/stdlib/zlib/0/mem_error.rbs +10 -0
  566. data/stdlib/zlib/0/need_dict.rbs +13 -0
  567. data/stdlib/zlib/0/stream_end.rbs +11 -0
  568. data/stdlib/zlib/0/stream_error.rbs +11 -0
  569. data/stdlib/zlib/0/version_error.rbs +11 -0
  570. data/stdlib/zlib/0/zlib.rbs +449 -0
  571. data/stdlib/zlib/0/zstream.rbs +201 -0
  572. data/wasm/README.md +59 -0
  573. data/wasm/rbs_wasm.c +411 -0
  574. metadata +660 -0
@@ -0,0 +1,606 @@
1
+ # <!-- rdoc-file=lib/open3.rb -->
2
+ # Module Open3 supports creating child processes with access to their $stdin,
3
+ # $stdout, and $stderr streams.
4
+ #
5
+ # ## What's Here
6
+ #
7
+ # Each of these methods executes a given command in a new process or subshell,
8
+ # or multiple commands in new processes and/or subshells:
9
+ #
10
+ # * Each of these methods executes a single command in a process or subshell,
11
+ # accepts a string for input to $stdin, and returns string output from
12
+ # $stdout, $stderr, or both:
13
+ #
14
+ # * Open3.capture2: Executes the command; returns the string from $stdout.
15
+ # * Open3.capture2e: Executes the command; returns the string from merged
16
+ # $stdout and $stderr.
17
+ # * Open3.capture3: Executes the command; returns strings from $stdout and
18
+ # $stderr.
19
+ #
20
+ # * Each of these methods executes a single command in a process or subshell,
21
+ # and returns pipes for $stdin, $stdout, and/or $stderr:
22
+ #
23
+ # * Open3.popen2: Executes the command; returns pipes for $stdin and
24
+ # $stdout.
25
+ # * Open3.popen2e: Executes the command; returns pipes for $stdin and
26
+ # merged $stdout and $stderr.
27
+ # * Open3.popen3: Executes the command; returns pipes for $stdin, $stdout,
28
+ # and $stderr.
29
+ #
30
+ # * Each of these methods executes one or more commands in processes and/or
31
+ # subshells, returns pipes for the first $stdin, the last $stdout, or both:
32
+ #
33
+ # * Open3.pipeline_r: Returns a pipe for the last $stdout.
34
+ # * Open3.pipeline_rw: Returns pipes for the first $stdin and the last
35
+ # $stdout.
36
+ # * Open3.pipeline_w: Returns a pipe for the first $stdin.
37
+ # * Open3.pipeline_start: Does not wait for processes to complete.
38
+ # * Open3.pipeline: Waits for processes to complete.
39
+ #
40
+ # Each of the methods above accepts:
41
+ #
42
+ # * An optional hash of environment variable names and values; see [Execution
43
+ # Environment](rdoc-ref:Process@Execution+Environment).
44
+ # * A required string argument that is a `command_line` or `exe_path`; see
45
+ # [Argument command_line or
46
+ # exe_path](rdoc-ref:Process@Argument+command_line+or+exe_path).
47
+ # * An optional hash of execution options; see [Execution
48
+ # Options](rdoc-ref:Process@Execution+Options).
49
+ #
50
+ module Open3
51
+ type env = Hash[String, String]
52
+
53
+ # <!--
54
+ # rdoc-file=lib/open3.rb
55
+ # - Open3.capture2([env, ] command_line, options = {}) -> [stdout_s, status]
56
+ # - Open3.capture2([env, ] exe_path, *args, options = {}) -> [stdout_s, status]
57
+ # -->
58
+ # Basically a wrapper for Open3.popen3 that:
59
+ #
60
+ # * Creates a child process, by calling Open3.popen3 with the given arguments
61
+ # (except for certain entries in hash `options`; see below).
62
+ # * Returns as string `stdout_s` the standard output of the child process.
63
+ # * Returns as `status` a <code>Process::Status</code> object that represents
64
+ # the exit status of the child process.
65
+ #
66
+ # Returns the array <code>[stdout_s, status]</code>:
67
+ #
68
+ # stdout_s, status = Open3.capture2('echo "Foo"')
69
+ # # => ["Foo\n", #<Process::Status: pid 2326047 exit 0>]
70
+ #
71
+ # Like Process.spawn, this method has potential security vulnerabilities if
72
+ # called with untrusted input; see [Command
73
+ # Injection](rdoc-ref:command_injection.rdoc@Command+Injection).
74
+ #
75
+ # Unlike Process.spawn, this method waits for the child process to exit before
76
+ # returning, so the caller need not do so.
77
+ #
78
+ # If the first argument is a hash, it becomes leading argument `env` in the call
79
+ # to Open3.popen3; see [Execution
80
+ # Environment](rdoc-ref:Process@Execution+Environment).
81
+ #
82
+ # If the last argument is a hash, it becomes trailing argument `options` in the
83
+ # call to Open3.popen3; see [Execution
84
+ # Options](rdoc-ref:Process@Execution+Options).
85
+ #
86
+ # The hash `options` is given; two options have local effect in method
87
+ # Open3.capture2:
88
+ #
89
+ # * If entry <code>options[:stdin_data]</code> exists, the entry is removed
90
+ # and its string value is sent to the command's standard input:
91
+ #
92
+ # Open3.capture2('tee', stdin_data: 'Foo')
93
+ #
94
+ # # => ["Foo", #<Process::Status: pid 2326087 exit 0>]
95
+ #
96
+ # * If entry <code>options[:binmode]</code> exists, the entry is removed and
97
+ # the internal streams are set to binary mode.
98
+ #
99
+ # The single required argument is one of the following:
100
+ #
101
+ # * `command_line` if it is a string, and if it begins with a shell reserved
102
+ # word or special built-in, or if it contains one or more metacharacters.
103
+ # * `exe_path` otherwise.
104
+ #
105
+ # <strong>Argument `command_line`</strong>
106
+ #
107
+ # String argument `command_line` is a command line to be passed to a shell; it
108
+ # must begin with a shell reserved word, begin with a special built-in, or
109
+ # contain meta characters:
110
+ #
111
+ # Open3.capture2('if true; then echo "Foo"; fi') # Shell reserved word.
112
+ # # => ["Foo\n", #<Process::Status: pid 2326131 exit 0>]
113
+ # Open3.capture2('echo') # Built-in.
114
+ # # => ["\n", #<Process::Status: pid 2326139 exit 0>]
115
+ # Open3.capture2('date > date.tmp') # Contains meta character.
116
+ # # => ["", #<Process::Status: pid 2326174 exit 0>]
117
+ #
118
+ # The command line may also contain arguments and options for the command:
119
+ #
120
+ # Open3.capture2('echo "Foo"')
121
+ # # => ["Foo\n", #<Process::Status: pid 2326183 exit 0>]
122
+ #
123
+ # <strong>Argument `exe_path`</strong>
124
+ #
125
+ # Argument `exe_path` is one of the following:
126
+ #
127
+ # * The string path to an executable to be called.
128
+ # * A 2-element array containing the path to an executable and the string to
129
+ # be used as the name of the executing process.
130
+ #
131
+ # Example:
132
+ #
133
+ # Open3.capture2('/usr/bin/date')
134
+ # # => ["Fri Sep 29 01:00:39 PM CDT 2023\n", #<Process::Status: pid 2326222 exit 0>]
135
+ #
136
+ # Ruby invokes the executable directly, with no shell and no shell expansion:
137
+ #
138
+ # Open3.capture2('doesnt_exist') # Raises Errno::ENOENT
139
+ #
140
+ # If one or more `args` is given, each is an argument or option to be passed to
141
+ # the executable:
142
+ #
143
+ # Open3.capture2('echo', 'C #')
144
+ # # => ["C #\n", #<Process::Status: pid 2326267 exit 0>]
145
+ # Open3.capture2('echo', 'hello', 'world')
146
+ # # => ["hello world\n", #<Process::Status: pid 2326299 exit 0>]
147
+ #
148
+ def self?.capture2: (*String, ?stdin_data: String, ?binmode: boolish) -> [String, Process::Status]
149
+ | (env, *String, ?stdin_data: String, ?binmode: boolish) -> [String, Process::Status]
150
+
151
+ # <!--
152
+ # rdoc-file=lib/open3.rb
153
+ # - Open3.capture2e([env, ] command_line, options = {}) -> [stdout_and_stderr_s, status]
154
+ # - Open3.capture2e([env, ] exe_path, *args, options = {}) -> [stdout_and_stderr_s, status]
155
+ # -->
156
+ # Basically a wrapper for Open3.popen3 that:
157
+ #
158
+ # * Creates a child process, by calling Open3.popen3 with the given arguments
159
+ # (except for certain entries in hash `options`; see below).
160
+ # * Returns as string `stdout_and_stderr_s` the merged standard output and
161
+ # standard error of the child process.
162
+ # * Returns as `status` a <code>Process::Status</code> object that represents
163
+ # the exit status of the child process.
164
+ #
165
+ # Returns the array <code>[stdout_and_stderr_s, status]</code>:
166
+ #
167
+ # stdout_and_stderr_s, status = Open3.capture2e('echo "Foo"')
168
+ # # => ["Foo\n", #<Process::Status: pid 2371692 exit 0>]
169
+ #
170
+ # Like Process.spawn, this method has potential security vulnerabilities if
171
+ # called with untrusted input; see [Command
172
+ # Injection](rdoc-ref:command_injection.rdoc@Command+Injection).
173
+ #
174
+ # Unlike Process.spawn, this method waits for the child process to exit before
175
+ # returning, so the caller need not do so.
176
+ #
177
+ # If the first argument is a hash, it becomes leading argument `env` in the call
178
+ # to Open3.popen3; see [Execution
179
+ # Environment](rdoc-ref:Process@Execution+Environment).
180
+ #
181
+ # If the last argument is a hash, it becomes trailing argument `options` in the
182
+ # call to Open3.popen3; see [Execution
183
+ # Options](rdoc-ref:Process@Execution+Options).
184
+ #
185
+ # The hash `options` is given; two options have local effect in method
186
+ # Open3.capture2e:
187
+ #
188
+ # * If entry <code>options[:stdin_data]</code> exists, the entry is removed
189
+ # and its string value is sent to the command's standard input:
190
+ #
191
+ # Open3.capture2e('tee', stdin_data: 'Foo')
192
+ # # => ["Foo", #<Process::Status: pid 2371732 exit 0>]
193
+ #
194
+ # * If entry <code>options[:binmode]</code> exists, the entry is removed and
195
+ # the internal streams are set to binary mode.
196
+ #
197
+ # The single required argument is one of the following:
198
+ #
199
+ # * `command_line` if it is a string, and if it begins with a shell reserved
200
+ # word or special built-in, or if it contains one or more metacharacters.
201
+ # * `exe_path` otherwise.
202
+ #
203
+ # <strong>Argument `command_line`</strong>
204
+ #
205
+ # String argument `command_line` is a command line to be passed to a shell; it
206
+ # must begin with a shell reserved word, begin with a special built-in, or
207
+ # contain meta characters:
208
+ #
209
+ # Open3.capture2e('if true; then echo "Foo"; fi') # Shell reserved word.
210
+ # # => ["Foo\n", #<Process::Status: pid 2371740 exit 0>]
211
+ # Open3.capture2e('echo') # Built-in.
212
+ # # => ["\n", #<Process::Status: pid 2371774 exit 0>]
213
+ # Open3.capture2e('date > date.tmp') # Contains meta character.
214
+ # # => ["", #<Process::Status: pid 2371812 exit 0>]
215
+ #
216
+ # The command line may also contain arguments and options for the command:
217
+ #
218
+ # Open3.capture2e('echo "Foo"')
219
+ # # => ["Foo\n", #<Process::Status: pid 2326183 exit 0>]
220
+ #
221
+ # <strong>Argument `exe_path`</strong>
222
+ #
223
+ # Argument `exe_path` is one of the following:
224
+ #
225
+ # * The string path to an executable to be called.
226
+ # * A 2-element array containing the path to an executable and the string to
227
+ # be used as the name of the executing process.
228
+ #
229
+ # Example:
230
+ #
231
+ # Open3.capture2e('/usr/bin/date')
232
+ # # => ["Sat Sep 30 09:01:46 AM CDT 2023\n", #<Process::Status: pid 2371820 exit 0>]
233
+ #
234
+ # Ruby invokes the executable directly, with no shell and no shell expansion:
235
+ #
236
+ # Open3.capture2e('doesnt_exist') # Raises Errno::ENOENT
237
+ #
238
+ # If one or more `args` is given, each is an argument or option to be passed to
239
+ # the executable:
240
+ #
241
+ # Open3.capture2e('echo', 'C #')
242
+ # # => ["C #\n", #<Process::Status: pid 2371856 exit 0>]
243
+ # Open3.capture2e('echo', 'hello', 'world')
244
+ # # => ["hello world\n", #<Process::Status: pid 2371894 exit 0>]
245
+ #
246
+ def self?.capture2e: (*String, ?stdin_data: String, ?binmode: boolish) -> [String, Process::Status]
247
+ | (env, *String, ?stdin_data: String, ?binmode: boolish) -> [String, Process::Status]
248
+
249
+ # <!--
250
+ # rdoc-file=lib/open3.rb
251
+ # - Open3.capture3([env, ] command_line, options = {}) -> [stdout_s, stderr_s, status]
252
+ # - Open3.capture3([env, ] exe_path, *args, options = {}) -> [stdout_s, stderr_s, status]
253
+ # -->
254
+ # Basically a wrapper for Open3.popen3 that:
255
+ #
256
+ # * Creates a child process, by calling Open3.popen3 with the given arguments
257
+ # (except for certain entries in hash `options`; see below).
258
+ # * Returns as strings `stdout_s` and `stderr_s` the standard output and
259
+ # standard error of the child process.
260
+ # * Returns as `status` a <code>Process::Status</code> object that represents
261
+ # the exit status of the child process.
262
+ #
263
+ # Returns the array <code>[stdout_s, stderr_s, status]</code>:
264
+ #
265
+ # stdout_s, stderr_s, status = Open3.capture3('echo "Foo"')
266
+ # # => ["Foo\n", "", #<Process::Status: pid 2281954 exit 0>]
267
+ #
268
+ # Like Process.spawn, this method has potential security vulnerabilities if
269
+ # called with untrusted input; see [Command
270
+ # Injection](rdoc-ref:command_injection.rdoc@Command+Injection).
271
+ #
272
+ # Unlike Process.spawn, this method waits for the child process to exit before
273
+ # returning, so the caller need not do so.
274
+ #
275
+ # If the first argument is a hash, it becomes leading argument `env` in the call
276
+ # to Open3.popen3; see [Execution
277
+ # Environment](rdoc-ref:Process@Execution+Environment).
278
+ #
279
+ # If the last argument is a hash, it becomes trailing argument `options` in the
280
+ # call to Open3.popen3; see [Execution
281
+ # Options](rdoc-ref:Process@Execution+Options).
282
+ #
283
+ # The hash `options` is given; two options have local effect in method
284
+ # Open3.capture3:
285
+ #
286
+ # * If entry <code>options[:stdin_data]</code> exists, the entry is removed
287
+ # and its string value is sent to the command's standard input:
288
+ #
289
+ # Open3.capture3('tee', stdin_data: 'Foo')
290
+ # # => ["Foo", "", #<Process::Status: pid 2319575 exit 0>]
291
+ #
292
+ # * If entry <code>options[:binmode]</code> exists, the entry is removed and
293
+ # the internal streams are set to binary mode.
294
+ #
295
+ # The single required argument is one of the following:
296
+ #
297
+ # * `command_line` if it is a string, and if it begins with a shell reserved
298
+ # word or special built-in, or if it contains one or more metacharacters.
299
+ # * `exe_path` otherwise.
300
+ #
301
+ # <strong>Argument `command_line`</strong>
302
+ #
303
+ # String argument `command_line` is a command line to be passed to a shell; it
304
+ # must begin with a shell reserved word, begin with a special built-in, or
305
+ # contain meta characters:
306
+ #
307
+ # Open3.capture3('if true; then echo "Foo"; fi') # Shell reserved word.
308
+ # # => ["Foo\n", "", #<Process::Status: pid 2282025 exit 0>]
309
+ # Open3.capture3('echo') # Built-in.
310
+ # # => ["\n", "", #<Process::Status: pid 2282092 exit 0>]
311
+ # Open3.capture3('date > date.tmp') # Contains meta character.
312
+ # # => ["", "", #<Process::Status: pid 2282110 exit 0>]
313
+ #
314
+ # The command line may also contain arguments and options for the command:
315
+ #
316
+ # Open3.capture3('echo "Foo"')
317
+ # # => ["Foo\n", "", #<Process::Status: pid 2282092 exit 0>]
318
+ #
319
+ # <strong>Argument `exe_path`</strong>
320
+ #
321
+ # Argument `exe_path` is one of the following:
322
+ #
323
+ # * The string path to an executable to be called.
324
+ # * A 2-element array containing the path to an executable and the string to
325
+ # be used as the name of the executing process.
326
+ #
327
+ # Example:
328
+ #
329
+ # Open3.capture3('/usr/bin/date')
330
+ # # => ["Thu Sep 28 05:03:51 PM CDT 2023\n", "", #<Process::Status: pid 2282300 exit 0>]
331
+ #
332
+ # Ruby invokes the executable directly, with no shell and no shell expansion:
333
+ #
334
+ # Open3.capture3('doesnt_exist') # Raises Errno::ENOENT
335
+ #
336
+ # If one or more `args` is given, each is an argument or option to be passed to
337
+ # the executable:
338
+ #
339
+ # Open3.capture3('echo', 'C #')
340
+ # # => ["C #\n", "", #<Process::Status: pid 2282368 exit 0>]
341
+ # Open3.capture3('echo', 'hello', 'world')
342
+ # # => ["hello world\n", "", #<Process::Status: pid 2282372 exit 0>]
343
+ #
344
+ def self?.capture3: (*String, ?stdin_data: String, ?binmode: boolish) -> [String, String, Process::Status]
345
+ | (env, *String, ?stdin_data: String, ?binmode: boolish) -> [String, String, Process::Status]
346
+
347
+ # <!--
348
+ # rdoc-file=lib/open3.rb
349
+ # - Open3.popen2([env, ] command_line, options = {}) -> [stdin, stdout, wait_thread]
350
+ # - Open3.popen2([env, ] exe_path, *args, options = {}) -> [stdin, stdout, wait_thread]
351
+ # - Open3.popen2([env, ] command_line, options = {}) {|stdin, stdout, wait_thread| ... } -> object
352
+ # - Open3.popen2([env, ] exe_path, *args, options = {}) {|stdin, stdout, wait_thread| ... } -> object
353
+ # -->
354
+ # Basically a wrapper for [Process.spawn](rdoc-ref:Process.spawn) that:
355
+ #
356
+ # * Creates a child process, by calling Process.spawn with the given
357
+ # arguments.
358
+ # * Creates streams `stdin` and `stdout`, which are the standard input and
359
+ # standard output streams in the child process.
360
+ # * Creates thread `wait_thread` that waits for the child process to exit; the
361
+ # thread has method `pid`, which returns the process ID of the child
362
+ # process.
363
+ #
364
+ # With no block given, returns the array <code>[stdin, stdout,
365
+ # wait_thread]</code>. The caller should close each of the two returned streams.
366
+ #
367
+ # stdin, stdout, wait_thread = Open3.popen2('echo')
368
+ # # => [#<IO:fd 6>, #<IO:fd 7>, #<Process::Waiter:0x00007f58d52dbe98 run>]
369
+ # stdin.close
370
+ # stdout.close
371
+ # wait_thread.pid # => 2263572
372
+ # wait_thread.value # => #<Process::Status: pid 2263572 exit 0>
373
+ #
374
+ # With a block given, calls the block with the three variables (two streams and
375
+ # the wait thread) and returns the block's return value. The caller need not
376
+ # close the streams:
377
+ #
378
+ # Open3.popen2('echo') do |stdin, stdout, wait_thread|
379
+ # p stdin
380
+ # p stdout
381
+ # p wait_thread
382
+ # p wait_thread.pid
383
+ # p wait_thread.value
384
+ # end
385
+ #
386
+ # Output:
387
+ #
388
+ # #<IO:fd 6>
389
+ # #<IO:fd 7>
390
+ # #<Process::Waiter:0x00007f58d59a34b0 sleep>
391
+ # 2263636
392
+ # #<Process::Status: pid 2263636 exit 0>
393
+ #
394
+ # Like Process.spawn, this method has potential security vulnerabilities if
395
+ # called with untrusted input; see [Command
396
+ # Injection](rdoc-ref:command_injection.rdoc@Command+Injection).
397
+ #
398
+ # Unlike Process.spawn, this method waits for the child process to exit before
399
+ # returning, so the caller need not do so.
400
+ #
401
+ # If the first argument is a hash, it becomes leading argument `env` in the call
402
+ # to Process.spawn; see [Execution
403
+ # Environment](rdoc-ref:Process@Execution+Environment).
404
+ #
405
+ # If the last argument is a hash, it becomes trailing argument `options` in the
406
+ # call to Process.spawn; see [Execution
407
+ # Options](rdoc-ref:Process@Execution+Options).
408
+ #
409
+ # The single required argument is one of the following:
410
+ #
411
+ # * `command_line` if it is a string, and if it begins with a shell reserved
412
+ # word or special built-in, or if it contains one or more metacharacters.
413
+ # * `exe_path` otherwise.
414
+ #
415
+ # <strong>Argument `command_line`</strong>
416
+ #
417
+ # String argument `command_line` is a command line to be passed to a shell; it
418
+ # must begin with a shell reserved word, begin with a special built-in, or
419
+ # contain meta characters:
420
+ #
421
+ # Open3.popen2('if true; then echo "Foo"; fi') {|*args| p args } # Shell reserved word.
422
+ # Open3.popen2('echo') {|*args| p args } # Built-in.
423
+ # Open3.popen2('date > date.tmp') {|*args| p args } # Contains meta character.
424
+ #
425
+ # Output (similar for each call above):
426
+ #
427
+ # # => [#<IO:(closed)>, #<IO:(closed)>, #<Process::Waiter:0x00007f7577dfe410 dead>]
428
+ #
429
+ # The command line may also contain arguments and options for the command:
430
+ #
431
+ # Open3.popen2('echo "Foo"') { |i, o, t| o.gets }
432
+ # "Foo\n"
433
+ #
434
+ # <strong>Argument `exe_path`</strong>
435
+ #
436
+ # Argument `exe_path` is one of the following:
437
+ #
438
+ # * The string path to an executable to be called.
439
+ # * A 2-element array containing the path to an executable and the string to
440
+ # be used as the name of the executing process.
441
+ #
442
+ # Example:
443
+ #
444
+ # Open3.popen2('/usr/bin/date') { |i, o, t| o.gets }
445
+ # # => "Thu Sep 28 09:41:06 AM CDT 2023\n"
446
+ #
447
+ # Ruby invokes the executable directly, with no shell and no shell expansion:
448
+ #
449
+ # Open3.popen2('doesnt_exist') { |i, o, t| o.gets } # Raises Errno::ENOENT
450
+ #
451
+ # If one or more `args` is given, each is an argument or option to be passed to
452
+ # the executable:
453
+ #
454
+ # Open3.popen2('echo', 'C #') { |i, o, t| o.gets }
455
+ # # => "C #\n"
456
+ # Open3.popen2('echo', 'hello', 'world') { |i, o, t| o.gets }
457
+ # # => "hello world\n"
458
+ #
459
+ # Related:
460
+ #
461
+ # * Open3.popen2e: Makes the standard input and the merge of the standard
462
+ # output and standard error streams of the child process available as
463
+ # separate streams.
464
+ # * Open3.popen3: Makes the standard input, standard output, and standard
465
+ # error streams of the child process available as separate streams.
466
+ #
467
+ def self?.popen2: (*String, ?unsetenv_others: bool, ?pgroup: true | Integer, ?umask: Integer, ?close_others: bool, ?chdir: String) -> [IO, IO, Process::Waiter]
468
+ | (env, *String, ?unsetenv_others: bool, ?pgroup: true | Integer, ?umask: Integer, ?close_others: bool, ?chdir: String) -> [IO, IO, Process::Waiter]
469
+ | [T] (*String, ?unsetenv_others: bool, ?pgroup: true | Integer, ?umask: Integer, ?close_others: bool, ?chdir: String) { (IO, IO, Process::Waiter) -> T } -> T
470
+ | [T] (env, *String, ?unsetenv_others: bool, ?pgroup: true | Integer, ?umask: Integer, ?close_others: bool, ?chdir: String) { (IO, IO, Process::Waiter) -> T } -> T
471
+
472
+ # <!--
473
+ # rdoc-file=lib/open3.rb
474
+ # - Open3.popen3([env, ] command_line, options = {}) -> [stdin, stdout, stderr, wait_thread]
475
+ # - Open3.popen3([env, ] exe_path, *args, options = {}) -> [stdin, stdout, stderr, wait_thread]
476
+ # - Open3.popen3([env, ] command_line, options = {}) {|stdin, stdout, stderr, wait_thread| ... } -> object
477
+ # - Open3.popen3([env, ] exe_path, *args, options = {}) {|stdin, stdout, stderr, wait_thread| ... } -> object
478
+ # -->
479
+ # Basically a wrapper for [Process.spawn](rdoc-ref:Process.spawn) that:
480
+ #
481
+ # * Creates a child process, by calling Process.spawn with the given
482
+ # arguments.
483
+ # * Creates streams `stdin`, `stdout`, and `stderr`, which are the standard
484
+ # input, standard output, and standard error streams in the child process.
485
+ # * Creates thread `wait_thread` that waits for the child process to exit; the
486
+ # thread has method `pid`, which returns the process ID of the child
487
+ # process.
488
+ #
489
+ # With no block given, returns the array <code>[stdin, stdout, stderr,
490
+ # wait_thread]</code>. The caller should close each of the three returned
491
+ # streams.
492
+ #
493
+ # stdin, stdout, stderr, wait_thread = Open3.popen3('echo')
494
+ # # => [#<IO:fd 8>, #<IO:fd 10>, #<IO:fd 12>, #<Process::Waiter:0x00007f58d5428f58 run>]
495
+ # stdin.close
496
+ # stdout.close
497
+ # stderr.close
498
+ # wait_thread.pid # => 2210481
499
+ # wait_thread.value # => #<Process::Status: pid 2210481 exit 0>
500
+ #
501
+ # With a block given, calls the block with the four variables (three streams and
502
+ # the wait thread) and returns the block's return value. The caller need not
503
+ # close the streams:
504
+ #
505
+ # Open3.popen3('echo') do |stdin, stdout, stderr, wait_thread|
506
+ # p stdin
507
+ # p stdout
508
+ # p stderr
509
+ # p wait_thread
510
+ # p wait_thread.pid
511
+ # p wait_thread.value
512
+ # end
513
+ #
514
+ # Output:
515
+ #
516
+ # #<IO:fd 6>
517
+ # #<IO:fd 7>
518
+ # #<IO:fd 9>
519
+ # #<Process::Waiter:0x00007f58d53606e8 sleep>
520
+ # 2211047
521
+ # #<Process::Status: pid 2211047 exit 0>
522
+ #
523
+ # Like Process.spawn, this method has potential security vulnerabilities if
524
+ # called with untrusted input; see [Command
525
+ # Injection](rdoc-ref:command_injection.rdoc@Command+Injection).
526
+ #
527
+ # Unlike Process.spawn, this method waits for the child process to exit before
528
+ # returning, so the caller need not do so.
529
+ #
530
+ # If the first argument is a hash, it becomes leading argument `env` in the call
531
+ # to Process.spawn; see [Execution
532
+ # Environment](rdoc-ref:Process@Execution+Environment).
533
+ #
534
+ # If the last argument is a hash, it becomes trailing argument `options` in the
535
+ # call to Process.spawn; see [Execution
536
+ # Options](rdoc-ref:Process@Execution+Options).
537
+ #
538
+ # The single required argument is one of the following:
539
+ #
540
+ # * `command_line` if it is a string, and if it begins with a shell reserved
541
+ # word or special built-in, or if it contains one or more metacharacters.
542
+ # * `exe_path` otherwise.
543
+ #
544
+ # <strong>Argument `command_line`</strong>
545
+ #
546
+ # String argument `command_line` is a command line to be passed to a shell; it
547
+ # must begin with a shell reserved word, begin with a special built-in, or
548
+ # contain meta characters:
549
+ #
550
+ # Open3.popen3('if true; then echo "Foo"; fi') {|*args| p args } # Shell reserved word.
551
+ # Open3.popen3('echo') {|*args| p args } # Built-in.
552
+ # Open3.popen3('date > date.tmp') {|*args| p args } # Contains meta character.
553
+ #
554
+ # Output (similar for each call above):
555
+ #
556
+ # [#<IO:(closed)>, #<IO:(closed)>, #<IO:(closed)>, #<Process::Waiter:0x00007f58d52f28c8 dead>]
557
+ #
558
+ # The command line may also contain arguments and options for the command:
559
+ #
560
+ # Open3.popen3('echo "Foo"') { |i, o, e, t| o.gets }
561
+ # "Foo\n"
562
+ #
563
+ # <strong>Argument `exe_path`</strong>
564
+ #
565
+ # Argument `exe_path` is one of the following:
566
+ #
567
+ # * The string path to an executable to be called.
568
+ # * A 2-element array containing the path to an executable and the string to
569
+ # be used as the name of the executing process.
570
+ #
571
+ # Example:
572
+ #
573
+ # Open3.popen3('/usr/bin/date') { |i, o, e, t| o.gets }
574
+ # # => "Wed Sep 27 02:56:44 PM CDT 2023\n"
575
+ #
576
+ # Ruby invokes the executable directly, with no shell and no shell expansion:
577
+ #
578
+ # Open3.popen3('doesnt_exist') { |i, o, e, t| o.gets } # Raises Errno::ENOENT
579
+ #
580
+ # If one or more `args` is given, each is an argument or option to be passed to
581
+ # the executable:
582
+ #
583
+ # Open3.popen3('echo', 'C #') { |i, o, e, t| o.gets }
584
+ # # => "C #\n"
585
+ # Open3.popen3('echo', 'hello', 'world') { |i, o, e, t| o.gets }
586
+ # # => "hello world\n"
587
+ #
588
+ # Take care to avoid deadlocks. Output streams `stdout` and `stderr` have
589
+ # fixed-size buffers, so reading extensively from one but not the other can
590
+ # cause a deadlock when the unread buffer fills. To avoid that, `stdout` and
591
+ # `stderr` should be read simultaneously (using threads or IO.select).
592
+ #
593
+ # Related:
594
+ #
595
+ # * Open3.popen2: Makes the standard input and standard output streams of the
596
+ # child process available as separate streams, with no access to the
597
+ # standard error stream.
598
+ # * Open3.popen2e: Makes the standard input and the merge of the standard
599
+ # output and standard error streams of the child process available as
600
+ # separate streams.
601
+ #
602
+ def self?.popen3: (*String, ?unsetenv_others: bool, ?pgroup: true | Integer, ?umask: Integer, ?close_others: bool, ?chdir: String) -> [IO, IO, IO, Process::Waiter]
603
+ | (env, *String, ?unsetenv_others: bool, ?pgroup: true | Integer, ?umask: Integer, ?close_others: bool, ?chdir: String) -> [IO, IO, IO, Process::Waiter]
604
+ | [T] (*String, ?unsetenv_others: bool, ?pgroup: true | Integer, ?umask: Integer, ?close_others: bool, ?chdir: String) { (IO, IO, IO, Process::Waiter) -> T } -> T
605
+ | [T] (env, *String, ?unsetenv_others: bool, ?pgroup: true | Integer, ?umask: Integer, ?close_others: bool, ?chdir: String) { (IO, IO, IO, Process::Waiter) -> T } -> T
606
+ end
@@ -0,0 +1,3 @@
1
+ dependencies:
2
+ - name: socket
3
+ - name: digest