automerge-rb 0.1.1

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 (481) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +22 -0
  3. data/README.md +175 -0
  4. data/ext/automerge_ext/automerge_ext.c +1805 -0
  5. data/ext/automerge_ext/extconf.rb +132 -0
  6. data/lib/automerge/version.rb +6 -0
  7. data/lib/automerge.rb +110 -0
  8. data/rust-toolchain.toml +4 -0
  9. data/vendor/automerge-rust/Cargo.lock +1909 -0
  10. data/vendor/automerge-rust/Cargo.toml +15 -0
  11. data/vendor/automerge-rust/automerge/Cargo.toml +78 -0
  12. data/vendor/automerge-rust/automerge/README.md +5 -0
  13. data/vendor/automerge-rust/automerge/benches/load_save.rs +102 -0
  14. data/vendor/automerge-rust/automerge/benches/map.rs +260 -0
  15. data/vendor/automerge-rust/automerge/benches/range.rs +37 -0
  16. data/vendor/automerge-rust/automerge/benches/sync.rs +95 -0
  17. data/vendor/automerge-rust/automerge/examples/README.md +7 -0
  18. data/vendor/automerge-rust/automerge/examples/quickstart.rs +57 -0
  19. data/vendor/automerge-rust/automerge/examples/watch.rs +94 -0
  20. data/vendor/automerge-rust/automerge/fuzz/Cargo.toml +29 -0
  21. data/vendor/automerge-rust/automerge/fuzz/fuzz_targets/load.rs +37 -0
  22. data/vendor/automerge-rust/automerge/src/autocommit.rs +1286 -0
  23. data/vendor/automerge-rust/automerge/src/automerge/current_state.rs +546 -0
  24. data/vendor/automerge-rust/automerge/src/automerge/tests.rs +2023 -0
  25. data/vendor/automerge-rust/automerge/src/automerge.rs +2071 -0
  26. data/vendor/automerge-rust/automerge/src/autoserde.rs +128 -0
  27. data/vendor/automerge-rust/automerge/src/change.rs +357 -0
  28. data/vendor/automerge-rust/automerge/src/change_graph.rs +1215 -0
  29. data/vendor/automerge-rust/automerge/src/change_queue.rs +46 -0
  30. data/vendor/automerge-rust/automerge/src/clock.rs +206 -0
  31. data/vendor/automerge-rust/automerge/src/columnar/column_range/boolean.rs +83 -0
  32. data/vendor/automerge-rust/automerge/src/columnar/column_range/delta.rs +148 -0
  33. data/vendor/automerge-rust/automerge/src/columnar/column_range/generic/group.rs +138 -0
  34. data/vendor/automerge-rust/automerge/src/columnar/column_range/generic/simple.rs +76 -0
  35. data/vendor/automerge-rust/automerge/src/columnar/column_range/generic.rs +93 -0
  36. data/vendor/automerge-rust/automerge/src/columnar/column_range/key.rs +272 -0
  37. data/vendor/automerge-rust/automerge/src/columnar/column_range/obj_id.rs +202 -0
  38. data/vendor/automerge-rust/automerge/src/columnar/column_range/opid_list.rs +329 -0
  39. data/vendor/automerge-rust/automerge/src/columnar/column_range/raw.rs +38 -0
  40. data/vendor/automerge-rust/automerge/src/columnar/column_range/rle.rs +216 -0
  41. data/vendor/automerge-rust/automerge/src/columnar/column_range/value.rs +547 -0
  42. data/vendor/automerge-rust/automerge/src/columnar/column_range.rs +17 -0
  43. data/vendor/automerge-rust/automerge/src/columnar/encoding/boolean.rs +197 -0
  44. data/vendor/automerge-rust/automerge/src/columnar/encoding/col_error.rs +88 -0
  45. data/vendor/automerge-rust/automerge/src/columnar/encoding/column_decoder.rs +133 -0
  46. data/vendor/automerge-rust/automerge/src/columnar/encoding/decodable_impls.rs +175 -0
  47. data/vendor/automerge-rust/automerge/src/columnar/encoding/delta.rs +96 -0
  48. data/vendor/automerge-rust/automerge/src/columnar/encoding/encodable_impls.rs +200 -0
  49. data/vendor/automerge-rust/automerge/src/columnar/encoding/leb128.rs +82 -0
  50. data/vendor/automerge-rust/automerge/src/columnar/encoding/properties.rs +178 -0
  51. data/vendor/automerge-rust/automerge/src/columnar/encoding/raw.rs +101 -0
  52. data/vendor/automerge-rust/automerge/src/columnar/encoding/rle.rs +239 -0
  53. data/vendor/automerge-rust/automerge/src/columnar/encoding.rs +67 -0
  54. data/vendor/automerge-rust/automerge/src/columnar/splice_error.rs +47 -0
  55. data/vendor/automerge-rust/automerge/src/columnar.rs +14 -0
  56. data/vendor/automerge-rust/automerge/src/convert.rs +112 -0
  57. data/vendor/automerge-rust/automerge/src/cursor.rs +296 -0
  58. data/vendor/automerge-rust/automerge/src/decoding.rs +475 -0
  59. data/vendor/automerge-rust/automerge/src/error.rs +159 -0
  60. data/vendor/automerge-rust/automerge/src/exid.rs +238 -0
  61. data/vendor/automerge-rust/automerge/src/hydrate/list.rs +140 -0
  62. data/vendor/automerge-rust/automerge/src/hydrate/map.rs +132 -0
  63. data/vendor/automerge-rust/automerge/src/hydrate/tests.rs +40 -0
  64. data/vendor/automerge-rust/automerge/src/hydrate/text.rs +89 -0
  65. data/vendor/automerge-rust/automerge/src/hydrate.rs +368 -0
  66. data/vendor/automerge-rust/automerge/src/indexed_cache.rs +113 -0
  67. data/vendor/automerge-rust/automerge/src/iter/doc.rs +603 -0
  68. data/vendor/automerge-rust/automerge/src/iter/keys.rs +93 -0
  69. data/vendor/automerge-rust/automerge/src/iter/list_range.rs +433 -0
  70. data/vendor/automerge-rust/automerge/src/iter/map_range.rs +316 -0
  71. data/vendor/automerge-rust/automerge/src/iter/spans.rs +601 -0
  72. data/vendor/automerge-rust/automerge/src/iter/tools.rs +427 -0
  73. data/vendor/automerge-rust/automerge/src/iter/values.rs +36 -0
  74. data/vendor/automerge-rust/automerge/src/iter.rs +25 -0
  75. data/vendor/automerge-rust/automerge/src/legacy/mod.rs +364 -0
  76. data/vendor/automerge-rust/automerge/src/legacy/serde_impls/actor_id.rs +25 -0
  77. data/vendor/automerge-rust/automerge/src/legacy/serde_impls/change_hash.rs +29 -0
  78. data/vendor/automerge-rust/automerge/src/legacy/serde_impls/element_id.rs +27 -0
  79. data/vendor/automerge-rust/automerge/src/legacy/serde_impls/mod.rs +31 -0
  80. data/vendor/automerge-rust/automerge/src/legacy/serde_impls/object_id.rs +36 -0
  81. data/vendor/automerge-rust/automerge/src/legacy/serde_impls/op.rs +668 -0
  82. data/vendor/automerge-rust/automerge/src/legacy/serde_impls/op_type.rs +26 -0
  83. data/vendor/automerge-rust/automerge/src/legacy/serde_impls/opid.rs +25 -0
  84. data/vendor/automerge-rust/automerge/src/legacy/serde_impls/scalar_value.rs +63 -0
  85. data/vendor/automerge-rust/automerge/src/legacy/utility_impls/element_id.rs +66 -0
  86. data/vendor/automerge-rust/automerge/src/legacy/utility_impls/key.rs +49 -0
  87. data/vendor/automerge-rust/automerge/src/legacy/utility_impls/mod.rs +4 -0
  88. data/vendor/automerge-rust/automerge/src/legacy/utility_impls/object_id.rs +74 -0
  89. data/vendor/automerge-rust/automerge/src/legacy/utility_impls/opid.rs +68 -0
  90. data/vendor/automerge-rust/automerge/src/lib.rs +315 -0
  91. data/vendor/automerge-rust/automerge/src/marks.rs +478 -0
  92. data/vendor/automerge-rust/automerge/src/op_set2/change/batch.rs +2002 -0
  93. data/vendor/automerge-rust/automerge/src/op_set2/change/collector.rs +974 -0
  94. data/vendor/automerge-rust/automerge/src/op_set2/change.rs +332 -0
  95. data/vendor/automerge-rust/automerge/src/op_set2/columns.rs +714 -0
  96. data/vendor/automerge-rust/automerge/src/op_set2/meta.rs +174 -0
  97. data/vendor/automerge-rust/automerge/src/op_set2/op.rs +1363 -0
  98. data/vendor/automerge-rust/automerge/src/op_set2/op_set/elems.rs +43 -0
  99. data/vendor/automerge-rust/automerge/src/op_set2/op_set/found_op.rs +60 -0
  100. data/vendor/automerge-rust/automerge/src/op_set2/op_set/index.rs +197 -0
  101. data/vendor/automerge-rust/automerge/src/op_set2/op_set/insert.rs +179 -0
  102. data/vendor/automerge-rust/automerge/src/op_set2/op_set/mark_index.rs +292 -0
  103. data/vendor/automerge-rust/automerge/src/op_set2/op_set/marks.rs +86 -0
  104. data/vendor/automerge-rust/automerge/src/op_set2/op_set/op_iter.rs +1295 -0
  105. data/vendor/automerge-rust/automerge/src/op_set2/op_set/op_query.rs +82 -0
  106. data/vendor/automerge-rust/automerge/src/op_set2/op_set/top_op.rs +50 -0
  107. data/vendor/automerge-rust/automerge/src/op_set2/op_set/visible.rs +290 -0
  108. data/vendor/automerge-rust/automerge/src/op_set2/op_set.rs +1793 -0
  109. data/vendor/automerge-rust/automerge/src/op_set2/parents.rs +133 -0
  110. data/vendor/automerge-rust/automerge/src/op_set2/skip_list.rs +714 -0
  111. data/vendor/automerge-rust/automerge/src/op_set2/types.rs +769 -0
  112. data/vendor/automerge-rust/automerge/src/op_set2.rs +18 -0
  113. data/vendor/automerge-rust/automerge/src/patches/patch.rs +95 -0
  114. data/vendor/automerge-rust/automerge/src/patches/patch_builder.rs +382 -0
  115. data/vendor/automerge-rust/automerge/src/patches/patch_log.rs +584 -0
  116. data/vendor/automerge-rust/automerge/src/patches.rs +7 -0
  117. data/vendor/automerge-rust/automerge/src/query/list_state.rs +230 -0
  118. data/vendor/automerge-rust/automerge/src/query/seek_mark.rs +142 -0
  119. data/vendor/automerge-rust/automerge/src/read.rs +326 -0
  120. data/vendor/automerge-rust/automerge/src/sequence_tree.rs +662 -0
  121. data/vendor/automerge-rust/automerge/src/storage/bundle/builder.rs +942 -0
  122. data/vendor/automerge-rust/automerge/src/storage/bundle/error.rs +42 -0
  123. data/vendor/automerge-rust/automerge/src/storage/bundle/meta.rs +23 -0
  124. data/vendor/automerge-rust/automerge/src/storage/bundle/storage.rs +146 -0
  125. data/vendor/automerge-rust/automerge/src/storage/bundle.rs +210 -0
  126. data/vendor/automerge-rust/automerge/src/storage/change/change_actors.rs +311 -0
  127. data/vendor/automerge-rust/automerge/src/storage/change/change_op_columns.rs +621 -0
  128. data/vendor/automerge-rust/automerge/src/storage/change/compressed.rs +51 -0
  129. data/vendor/automerge-rust/automerge/src/storage/change/op_with_change_actors.rs +1 -0
  130. data/vendor/automerge-rust/automerge/src/storage/change.rs +523 -0
  131. data/vendor/automerge-rust/automerge/src/storage/chunk.rs +312 -0
  132. data/vendor/automerge-rust/automerge/src/storage/columns/column.rs +42 -0
  133. data/vendor/automerge-rust/automerge/src/storage/columns/column_builder.rs +199 -0
  134. data/vendor/automerge-rust/automerge/src/storage/columns/column_specification.rs +340 -0
  135. data/vendor/automerge-rust/automerge/src/storage/columns/raw_column.rs +286 -0
  136. data/vendor/automerge-rust/automerge/src/storage/columns.rs +355 -0
  137. data/vendor/automerge-rust/automerge/src/storage/document/compression.rs +362 -0
  138. data/vendor/automerge-rust/automerge/src/storage/document.rs +411 -0
  139. data/vendor/automerge-rust/automerge/src/storage/load/change_collector.rs +15 -0
  140. data/vendor/automerge-rust/automerge/src/storage/load.rs +136 -0
  141. data/vendor/automerge-rust/automerge/src/storage/parse/leb128.rs +302 -0
  142. data/vendor/automerge-rust/automerge/src/storage/parse.rs +619 -0
  143. data/vendor/automerge-rust/automerge/src/storage/save/document.rs +27 -0
  144. data/vendor/automerge-rust/automerge/src/storage.rs +26 -0
  145. data/vendor/automerge-rust/automerge/src/sync/bloom.rs +161 -0
  146. data/vendor/automerge-rust/automerge/src/sync/message_builder.rs +118 -0
  147. data/vendor/automerge-rust/automerge/src/sync/state.rs +214 -0
  148. data/vendor/automerge-rust/automerge/src/sync/v1_compat_test/bloom.rs +162 -0
  149. data/vendor/automerge-rust/automerge/src/sync/v1_compat_test/mod.rs +625 -0
  150. data/vendor/automerge-rust/automerge/src/sync/v1_compat_test/state.rs +120 -0
  151. data/vendor/automerge-rust/automerge/src/sync.rs +2482 -0
  152. data/vendor/automerge-rust/automerge/src/text_diff/LICENSE +201 -0
  153. data/vendor/automerge-rust/automerge/src/text_diff/myers.rs +332 -0
  154. data/vendor/automerge-rust/automerge/src/text_diff/replace.rs +139 -0
  155. data/vendor/automerge-rust/automerge/src/text_diff/utils.rs +119 -0
  156. data/vendor/automerge-rust/automerge/src/text_diff.rs +515 -0
  157. data/vendor/automerge-rust/automerge/src/text_value.rs +276 -0
  158. data/vendor/automerge-rust/automerge/src/transaction/commit.rs +34 -0
  159. data/vendor/automerge-rust/automerge/src/transaction/inner.rs +1403 -0
  160. data/vendor/automerge-rust/automerge/src/transaction/manual_transaction.rs +147 -0
  161. data/vendor/automerge-rust/automerge/src/transaction/owned_transaction.rs +266 -0
  162. data/vendor/automerge-rust/automerge/src/transaction/result.rs +21 -0
  163. data/vendor/automerge-rust/automerge/src/transaction/transactable.rs +203 -0
  164. data/vendor/automerge-rust/automerge/src/transaction.rs +513 -0
  165. data/vendor/automerge-rust/automerge/src/types.rs +749 -0
  166. data/vendor/automerge-rust/automerge/src/validation.rs +29 -0
  167. data/vendor/automerge-rust/automerge/src/value.rs +763 -0
  168. data/vendor/automerge-rust/automerge/tests/batch_insert.rs +1034 -0
  169. data/vendor/automerge-rust/automerge/tests/block_tests.rs +887 -0
  170. data/vendor/automerge-rust/automerge/tests/convert_string_to_text.rs +72 -0
  171. data/vendor/automerge-rust/automerge/tests/diff_marks.rs +1508 -0
  172. data/vendor/automerge-rust/automerge/tests/fixtures/64bit_obj_id_change.automerge +0 -0
  173. data/vendor/automerge-rust/automerge/tests/fixtures/64bit_obj_id_doc.automerge +0 -0
  174. data/vendor/automerge-rust/automerge/tests/fixtures/counter_value_has_incorrect_meta.automerge +0 -0
  175. data/vendor/automerge-rust/automerge/tests/fixtures/counter_value_is_ok.automerge +0 -0
  176. data/vendor/automerge-rust/automerge/tests/fixtures/counter_value_is_overlong.automerge +0 -0
  177. data/vendor/automerge-rust/automerge/tests/fixtures/two_change_chunks.automerge +0 -0
  178. data/vendor/automerge-rust/automerge/tests/fixtures/two_change_chunks_compressed.automerge +0 -0
  179. data/vendor/automerge-rust/automerge/tests/fixtures/two_change_chunks_out_of_order.automerge +0 -0
  180. data/vendor/automerge-rust/automerge/tests/fuzz-crashers/action-is-48.automerge +0 -0
  181. data/vendor/automerge-rust/automerge/tests/fuzz-crashers/crash-da39a3ee5e6b4b0d3255bfef95601890afd80709 +0 -0
  182. data/vendor/automerge-rust/automerge/tests/fuzz-crashers/incorrect_max_op.automerge +0 -0
  183. data/vendor/automerge-rust/automerge/tests/fuzz-crashers/invalid_deflate_stream.automerge +0 -0
  184. data/vendor/automerge-rust/automerge/tests/fuzz-crashers/missing_actor.automerge +0 -0
  185. data/vendor/automerge-rust/automerge/tests/fuzz-crashers/overflow_in_length.automerge +0 -0
  186. data/vendor/automerge-rust/automerge/tests/fuzz-crashers/too_many_deps.automerge +0 -0
  187. data/vendor/automerge-rust/automerge/tests/fuzz-crashers/too_many_ops.automerge +0 -0
  188. data/vendor/automerge-rust/automerge/tests/test.rs +2668 -0
  189. data/vendor/automerge-rust/automerge/tests/test_mark_patches.rs +41 -0
  190. data/vendor/automerge-rust/automerge/tests/test_save_load_orphans.rs +84 -0
  191. data/vendor/automerge-rust/automerge/tests/text.rs +1098 -0
  192. data/vendor/automerge-rust/automerge/tests/text_encoding.rs +640 -0
  193. data/vendor/automerge-rust/automerge-c/CMakeLists.txt +439 -0
  194. data/vendor/automerge-rust/automerge-c/Cargo.toml +22 -0
  195. data/vendor/automerge-rust/automerge-c/README.md +233 -0
  196. data/vendor/automerge-rust/automerge-c/build.rs +21 -0
  197. data/vendor/automerge-rust/automerge-c/cbindgen.toml +48 -0
  198. data/vendor/automerge-rust/automerge-c/cmake/Cargo.toml.in +22 -0
  199. data/vendor/automerge-rust/automerge-c/cmake/automerge-c-config.cmake.in +99 -0
  200. data/vendor/automerge-rust/automerge-c/cmake/cbindgen.toml.in +48 -0
  201. data/vendor/automerge-rust/automerge-c/cmake/config.h.in +58 -0
  202. data/vendor/automerge-rust/automerge-c/cmake/enum-string-functions-gen.cmake +183 -0
  203. data/vendor/automerge-rust/automerge-c/cmake/file-regex-replace.cmake +33 -0
  204. data/vendor/automerge-rust/automerge-c/cmake/file-touch.cmake +35 -0
  205. data/vendor/automerge-rust/automerge-c/docs/CMakeLists.txt +39 -0
  206. data/vendor/automerge-rust/automerge-c/docs/img/brandmark.png +0 -0
  207. data/vendor/automerge-rust/automerge-c/examples/CMakeLists.txt +42 -0
  208. data/vendor/automerge-rust/automerge-c/examples/README.md +9 -0
  209. data/vendor/automerge-rust/automerge-c/examples/quickstart.c +131 -0
  210. data/vendor/automerge-rust/automerge-c/include/automerge-c/utils/result.h +30 -0
  211. data/vendor/automerge-rust/automerge-c/include/automerge-c/utils/stack.h +130 -0
  212. data/vendor/automerge-rust/automerge-c/include/automerge-c/utils/stack_callback_data.h +53 -0
  213. data/vendor/automerge-rust/automerge-c/include/automerge-c/utils/string.h +29 -0
  214. data/vendor/automerge-rust/automerge-c/src/actor_id.rs +193 -0
  215. data/vendor/automerge-rust/automerge-c/src/byte_span.rs +227 -0
  216. data/vendor/automerge-rust/automerge-c/src/change.rs +356 -0
  217. data/vendor/automerge-rust/automerge-c/src/cursor.rs +168 -0
  218. data/vendor/automerge-rust/automerge-c/src/doc/list.rs +636 -0
  219. data/vendor/automerge-rust/automerge-c/src/doc/map.rs +556 -0
  220. data/vendor/automerge-rust/automerge-c/src/doc/mark.rs +296 -0
  221. data/vendor/automerge-rust/automerge-c/src/doc/utils.rs +46 -0
  222. data/vendor/automerge-rust/automerge-c/src/doc.rs +1009 -0
  223. data/vendor/automerge-rust/automerge-c/src/index.rs +84 -0
  224. data/vendor/automerge-rust/automerge-c/src/item.rs +2177 -0
  225. data/vendor/automerge-rust/automerge-c/src/items.rs +401 -0
  226. data/vendor/automerge-rust/automerge-c/src/lib.rs +11 -0
  227. data/vendor/automerge-rust/automerge-c/src/obj.rs +216 -0
  228. data/vendor/automerge-rust/automerge-c/src/result.rs +653 -0
  229. data/vendor/automerge-rust/automerge-c/src/sync/have.rs +42 -0
  230. data/vendor/automerge-rust/automerge-c/src/sync/message.rs +146 -0
  231. data/vendor/automerge-rust/automerge-c/src/sync/state.rs +262 -0
  232. data/vendor/automerge-rust/automerge-c/src/sync.rs +7 -0
  233. data/vendor/automerge-rust/automerge-c/src/utils/result.c +33 -0
  234. data/vendor/automerge-rust/automerge-c/src/utils/stack.c +106 -0
  235. data/vendor/automerge-rust/automerge-c/src/utils/stack_callback_data.c +9 -0
  236. data/vendor/automerge-rust/automerge-c/src/utils/string.c +46 -0
  237. data/vendor/automerge-rust/automerge-c/test/CMakeLists.txt +67 -0
  238. data/vendor/automerge-rust/automerge-c/test/actor_id_tests.c +140 -0
  239. data/vendor/automerge-rust/automerge-c/test/base_state.c +17 -0
  240. data/vendor/automerge-rust/automerge-c/test/base_state.h +39 -0
  241. data/vendor/automerge-rust/automerge-c/test/byte_span_tests.c +119 -0
  242. data/vendor/automerge-rust/automerge-c/test/cmocka_utils.c +91 -0
  243. data/vendor/automerge-rust/automerge-c/test/cmocka_utils.h +42 -0
  244. data/vendor/automerge-rust/automerge-c/test/cursor_tests.c +263 -0
  245. data/vendor/automerge-rust/automerge-c/test/doc_state.c +27 -0
  246. data/vendor/automerge-rust/automerge-c/test/doc_state.h +17 -0
  247. data/vendor/automerge-rust/automerge-c/test/doc_tests.c +335 -0
  248. data/vendor/automerge-rust/automerge-c/test/enum_string_tests.c +148 -0
  249. data/vendor/automerge-rust/automerge-c/test/files/brave-ape-49.automerge +0 -0
  250. data/vendor/automerge-rust/automerge-c/test/item_tests.c +313 -0
  251. data/vendor/automerge-rust/automerge-c/test/list_tests.c +544 -0
  252. data/vendor/automerge-rust/automerge-c/test/macro_utils.c +38 -0
  253. data/vendor/automerge-rust/automerge-c/test/macro_utils.h +23 -0
  254. data/vendor/automerge-rust/automerge-c/test/main.c +33 -0
  255. data/vendor/automerge-rust/automerge-c/test/map_tests.c +1610 -0
  256. data/vendor/automerge-rust/automerge-c/test/mark_tests.c +124 -0
  257. data/vendor/automerge-rust/automerge-c/test/ported_wasm/basic_tests.c +1642 -0
  258. data/vendor/automerge-rust/automerge-c/test/ported_wasm/cursor_tests.c +108 -0
  259. data/vendor/automerge-rust/automerge-c/test/ported_wasm/suite.c +17 -0
  260. data/vendor/automerge-rust/automerge-c/test/ported_wasm/sync_tests.c +1280 -0
  261. data/vendor/automerge-rust/automerge-c/test/str_utils.c +15 -0
  262. data/vendor/automerge-rust/automerge-c/test/str_utils.h +17 -0
  263. data/vendor/automerge-rust/automerge-test/Cargo.toml +17 -0
  264. data/vendor/automerge-rust/automerge-test/README.md +3 -0
  265. data/vendor/automerge-rust/automerge-test/src/lib.rs +487 -0
  266. data/vendor/automerge-rust/hexane/CHANGELOG.md +34 -0
  267. data/vendor/automerge-rust/hexane/Cargo.toml +47 -0
  268. data/vendor/automerge-rust/hexane/README.md +292 -0
  269. data/vendor/automerge-rust/hexane/RESULTS.txt +20 -0
  270. data/vendor/automerge-rust/hexane/TODO +18 -0
  271. data/vendor/automerge-rust/hexane/benches/insert.rs +82 -0
  272. data/vendor/automerge-rust/hexane/benches/seek.rs +77 -0
  273. data/vendor/automerge-rust/hexane/benches/splice.rs +82 -0
  274. data/vendor/automerge-rust/hexane/src/aggregate.rs +288 -0
  275. data/vendor/automerge-rust/hexane/src/boolean.rs +478 -0
  276. data/vendor/automerge-rust/hexane/src/columndata.rs +2540 -0
  277. data/vendor/automerge-rust/hexane/src/cursor.rs +756 -0
  278. data/vendor/automerge-rust/hexane/src/delta.rs +793 -0
  279. data/vendor/automerge-rust/hexane/src/encoder.rs +639 -0
  280. data/vendor/automerge-rust/hexane/src/leb128.rs +82 -0
  281. data/vendor/automerge-rust/hexane/src/lib.rs +95 -0
  282. data/vendor/automerge-rust/hexane/src/pack.rs +325 -0
  283. data/vendor/automerge-rust/hexane/src/raw.rs +314 -0
  284. data/vendor/automerge-rust/hexane/src/rle.rs +928 -0
  285. data/vendor/automerge-rust/hexane/src/slab/tree.rs +1373 -0
  286. data/vendor/automerge-rust/hexane/src/slab/writer.rs +535 -0
  287. data/vendor/automerge-rust/hexane/src/slab.rs +224 -0
  288. data/vendor/automerge-rust/hexane/src/test.rs +108 -0
  289. data/vendor/bundle/ruby/3.3.0/bin/rake +29 -0
  290. data/vendor/bundle/ruby/3.3.0/bin/rake-compiler +29 -0
  291. data/vendor/bundle/ruby/3.3.0/bin/rake-compiler-dock +29 -0
  292. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/History.rdoc +1732 -0
  293. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/Manifest.txt +32 -0
  294. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/README.rdoc +845 -0
  295. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/Rakefile +97 -0
  296. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/design_rationale.rb +54 -0
  297. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/hoe/minitest.rb +30 -0
  298. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/assertions.rb +850 -0
  299. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/autorun.rb +6 -0
  300. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/benchmark.rb +452 -0
  301. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/compress.rb +94 -0
  302. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/error_on_warning.rb +11 -0
  303. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/expectations.rb +321 -0
  304. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/hell.rb +11 -0
  305. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/manual_plugins.rb +16 -0
  306. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/mock.rb +327 -0
  307. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/parallel.rb +72 -0
  308. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/pride.rb +4 -0
  309. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/pride_plugin.rb +135 -0
  310. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/spec.rb +353 -0
  311. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/test.rb +238 -0
  312. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/test_task.rb +324 -0
  313. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest/unit.rb +42 -0
  314. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/lib/minitest.rb +1250 -0
  315. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/test/minitest/metametameta.rb +150 -0
  316. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/test/minitest/test_minitest_assertions.rb +1677 -0
  317. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/test/minitest/test_minitest_benchmark.rb +137 -0
  318. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/test/minitest/test_minitest_mock.rb +1213 -0
  319. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/test/minitest/test_minitest_reporter.rb +437 -0
  320. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/test/minitest/test_minitest_spec.rb +1159 -0
  321. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/test/minitest/test_minitest_test.rb +1374 -0
  322. data/vendor/bundle/ruby/3.3.0/gems/minitest-5.27.0/test/minitest/test_minitest_test_task.rb +57 -0
  323. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/History.rdoc +2454 -0
  324. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/MIT-LICENSE +21 -0
  325. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/README.rdoc +155 -0
  326. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/command_line_usage.rdoc +171 -0
  327. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/example/Rakefile1 +38 -0
  328. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/example/Rakefile2 +35 -0
  329. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/example/a.c +6 -0
  330. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/example/b.c +6 -0
  331. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/example/main.c +11 -0
  332. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/glossary.rdoc +42 -0
  333. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/jamis.rb +592 -0
  334. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/proto_rake.rdoc +127 -0
  335. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/rake.1 +156 -0
  336. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/rakefile.rdoc +635 -0
  337. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/doc/rational.rdoc +151 -0
  338. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/exe/rake +27 -0
  339. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/application.rb +847 -0
  340. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/backtrace.rb +25 -0
  341. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/clean.rb +78 -0
  342. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/cloneable.rb +17 -0
  343. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/cpu_counter.rb +122 -0
  344. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/default_loader.rb +15 -0
  345. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/dsl_definition.rb +196 -0
  346. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/early_time.rb +22 -0
  347. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/ext/core.rb +26 -0
  348. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/ext/string.rb +176 -0
  349. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/file_creation_task.rb +25 -0
  350. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/file_list.rb +435 -0
  351. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/file_task.rb +58 -0
  352. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/file_utils.rb +137 -0
  353. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/file_utils_ext.rb +135 -0
  354. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/invocation_chain.rb +57 -0
  355. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/invocation_exception_mixin.rb +17 -0
  356. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/late_time.rb +18 -0
  357. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/linked_list.rb +112 -0
  358. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/loaders/makefile.rb +54 -0
  359. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/multi_task.rb +14 -0
  360. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/name_space.rb +38 -0
  361. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/options.rb +31 -0
  362. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/packagetask.rb +222 -0
  363. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/phony.rb +16 -0
  364. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/private_reader.rb +21 -0
  365. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/promise.rb +100 -0
  366. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/pseudo_status.rb +30 -0
  367. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/rake_module.rb +67 -0
  368. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/rake_test_loader.rb +27 -0
  369. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/rule_recursion_overflow_error.rb +20 -0
  370. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/scope.rb +43 -0
  371. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/task.rb +434 -0
  372. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/task_argument_error.rb +8 -0
  373. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/task_arguments.rb +113 -0
  374. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/task_manager.rb +333 -0
  375. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/tasklib.rb +12 -0
  376. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/testtask.rb +192 -0
  377. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/thread_history_display.rb +49 -0
  378. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/thread_pool.rb +157 -0
  379. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/trace_output.rb +23 -0
  380. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/version.rb +10 -0
  381. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake/win32.rb +17 -0
  382. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/lib/rake.rb +69 -0
  383. data/vendor/bundle/ruby/3.3.0/gems/rake-13.4.2/rake.gemspec +102 -0
  384. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/Gemfile +8 -0
  385. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/History.md +695 -0
  386. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/LICENSE.txt +20 -0
  387. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/README.md +476 -0
  388. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/Rakefile +15 -0
  389. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/appveyor.yml +22 -0
  390. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/bin/rake-compiler +24 -0
  391. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/cucumber.yml +4 -0
  392. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/compile.feature +79 -0
  393. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/cross-compile.feature +23 -0
  394. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/cross-package-multi.feature +15 -0
  395. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/cross-package.feature +14 -0
  396. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/java-compile.feature +22 -0
  397. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/java-no-native-compile.feature +33 -0
  398. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/java-package.feature +24 -0
  399. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/package.feature +40 -0
  400. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/step_definitions/compilation.rb +70 -0
  401. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/step_definitions/cross_compilation.rb +27 -0
  402. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/step_definitions/execution.rb +52 -0
  403. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/step_definitions/folders.rb +32 -0
  404. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/step_definitions/gem.rb +46 -0
  405. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/step_definitions/java_compilation.rb +7 -0
  406. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/support/env.rb +10 -0
  407. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/support/file_template_helpers.rb +137 -0
  408. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/support/generator_helpers.rb +123 -0
  409. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/features/support/platform_extension_helpers.rb +27 -0
  410. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/lib/rake/baseextensiontask.rb +90 -0
  411. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/lib/rake/compiler_config.rb +38 -0
  412. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/lib/rake/extensioncompiler.rb +51 -0
  413. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/lib/rake/extensiontask.rb +589 -0
  414. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/lib/rake/javaextensiontask.rb +321 -0
  415. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/tasks/bin/cross-ruby.rake +189 -0
  416. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/tasks/bootstrap.rake +11 -0
  417. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/tasks/common.rake +10 -0
  418. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/tasks/cucumber.rake +23 -0
  419. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/tasks/gem.rake +15 -0
  420. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.3.1/tasks/rspec.rake +9 -0
  421. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/CHANGELOG.md +446 -0
  422. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/CONTRIBUTING.md +109 -0
  423. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/Dockerfile.jruby +79 -0
  424. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/Dockerfile.mri.erb +282 -0
  425. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/Gemfile +8 -0
  426. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/LICENSE.txt +22 -0
  427. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/README.md +447 -0
  428. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/Rakefile +246 -0
  429. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/bin/rake-compiler-dock +18 -0
  430. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/buildkitd.toml +2 -0
  431. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/gem_helper.rb +54 -0
  432. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/mk_i686.rb +18 -0
  433. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/mk_musl_cross.sh +37 -0
  434. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/mk_osxcross.sh +45 -0
  435. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/mk_pkg_config.sh +24 -0
  436. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/parallel_docker_build.rb +169 -0
  437. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/patches/rake-compiler-1.3.1/0004-Enable-build-of-static-libruby.patch +38 -0
  438. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/patches/rake-compiler-1.3.1/0005-build-miniruby-first.patch +16 -0
  439. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/patches/rake-compiler-1.3.1/0006-ruby-4-rubyspec-capiext.patch +16 -0
  440. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/rcd-env.sh +6 -0
  441. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/runas +7 -0
  442. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/sigfw.c +45 -0
  443. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/strip_wrapper_codesign +17 -0
  444. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/strip_wrapper_vbox +30 -0
  445. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/build/sudoers +1 -0
  446. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/lib/rake_compiler_dock/colors.rb +43 -0
  447. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/lib/rake_compiler_dock/docker_check.rb +356 -0
  448. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/lib/rake_compiler_dock/predefined_user_group.rb +5 -0
  449. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/lib/rake_compiler_dock/starter.rb +206 -0
  450. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/lib/rake_compiler_dock/version.rb +4 -0
  451. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/lib/rake_compiler_dock.rb +151 -0
  452. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/mingw64-ucrt/Dockerfile +66 -0
  453. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/mingw64-ucrt/README.md +14 -0
  454. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/mingw64-ucrt/binutils-mingw-w64-ignore-check-errors.patch +13 -0
  455. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/mingw64-ucrt/gcc-mingw-w64-only-c-c++.patch +13 -0
  456. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/mingw64-ucrt/mingw-w64-enable-ucrt.patch +22 -0
  457. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/rake-compiler-dock.gemspec +34 -0
  458. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/env/Dockerfile.alpine +17 -0
  459. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/env/Dockerfile.debian +24 -0
  460. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/fixtures/mig_test_rpc.defs +8 -0
  461. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/Gemfile +11 -0
  462. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/Rakefile +97 -0
  463. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/ext/java/RcdTestExtService.java +19 -0
  464. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/ext/java/RubyRcdTest.java +16 -0
  465. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/ext/mri/extconf.rb +111 -0
  466. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/ext/mri/rcd_test_ext.c +65 -0
  467. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/ext/mri/rcd_test_ext.h +11 -0
  468. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/lib/rcd_test.rb +6 -0
  469. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/rcd_test.gemspec +28 -0
  470. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/rcd_test/test/test_basic.rb +49 -0
  471. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/test_environment_variables.rb +108 -0
  472. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/test_mig.rb +18 -0
  473. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/test_parallel_docker_build.rb +95 -0
  474. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/test_rubygems_plugins.rb +12 -0
  475. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/test_starter.rb +158 -0
  476. data/vendor/bundle/ruby/3.3.0/gems/rake-compiler-dock-1.12.0/test/test_versions.rb +82 -0
  477. data/vendor/bundle/ruby/3.3.0/specifications/minitest-5.27.0.gemspec +32 -0
  478. data/vendor/bundle/ruby/3.3.0/specifications/rake-13.4.2.gemspec +26 -0
  479. data/vendor/bundle/ruby/3.3.0/specifications/rake-compiler-1.3.1.gemspec +33 -0
  480. data/vendor/bundle/ruby/3.3.0/specifications/rake-compiler-dock-1.12.0.gemspec +28 -0
  481. metadata +584 -0
@@ -0,0 +1,847 @@
1
+ # frozen_string_literal: true
2
+ require "optparse"
3
+
4
+ require_relative "options"
5
+ require_relative "task_manager"
6
+ require_relative "file_list"
7
+ require_relative "thread_pool"
8
+ require_relative "thread_history_display"
9
+ require_relative "trace_output"
10
+ require_relative "win32"
11
+
12
+ module Rake
13
+
14
+ CommandLineOptionError = Class.new(StandardError)
15
+
16
+ ##
17
+ # Rake main application object. When invoking +rake+ from the
18
+ # command line, a Rake::Application object is created and run.
19
+
20
+ class Application
21
+ include TaskManager
22
+ include TraceOutput
23
+
24
+ # The name of the application (typically 'rake')
25
+ attr_reader :name
26
+
27
+ # The original directory where rake was invoked.
28
+ attr_reader :original_dir
29
+
30
+ # Name of the actual rakefile used.
31
+ attr_reader :rakefile
32
+
33
+ # Number of columns on the terminal
34
+ attr_accessor :terminal_columns
35
+
36
+ # List of the top level task names (task names from the command line).
37
+ attr_reader :top_level_tasks
38
+
39
+ # Override the detected TTY output state (mostly for testing)
40
+ attr_writer :tty_output
41
+
42
+ DEFAULT_RAKEFILES = [
43
+ "rakefile",
44
+ "Rakefile",
45
+ "rakefile.rb",
46
+ "Rakefile.rb"
47
+ ].freeze
48
+
49
+ # Initialize a Rake::Application object.
50
+ def initialize
51
+ super
52
+ @name = "rake"
53
+ @rakefiles = DEFAULT_RAKEFILES.dup
54
+ @rakefile = nil
55
+ @pending_imports = []
56
+ @imported = []
57
+ @loaders = {}
58
+ @default_loader = Rake::DefaultLoader.new
59
+ @original_dir = Dir.pwd
60
+ @top_level_tasks = []
61
+ add_loader("rb", DefaultLoader.new)
62
+ add_loader("rf", DefaultLoader.new)
63
+ add_loader("rake", DefaultLoader.new)
64
+ @tty_output = STDOUT.tty?
65
+ @terminal_columns = ENV["RAKE_COLUMNS"].to_i
66
+
67
+ set_default_options
68
+ end
69
+
70
+ # Run the Rake application. The run method performs the following
71
+ # three steps:
72
+ #
73
+ # * Initialize the command line options (+init+).
74
+ # * Define the tasks (+load_rakefile+).
75
+ # * Run the top level tasks (+top_level+).
76
+ #
77
+ # If you wish to build a custom rake command, you should call
78
+ # +init+ on your application. Then define any tasks. Finally,
79
+ # call +top_level+ to run your top level tasks.
80
+ def run(argv = ARGV)
81
+ standard_exception_handling do
82
+ init "rake", argv
83
+ load_rakefile
84
+ top_level
85
+ end
86
+ end
87
+
88
+ # Initialize the command line parameters and app name.
89
+ def init(app_name="rake", argv = ARGV)
90
+ standard_exception_handling do
91
+ @name = app_name
92
+ begin
93
+ args = handle_options argv
94
+ rescue ArgumentError
95
+ # Backward compatibility for capistrano
96
+ args = handle_options
97
+ end
98
+ load_debug_at_stop_feature
99
+ collect_command_line_tasks(args)
100
+ end
101
+ end
102
+
103
+ def load_debug_at_stop_feature
104
+ return unless ENV["RAKE_DEBUG"]
105
+ require "debug/session"
106
+ DEBUGGER__::start no_sigint_hook: true, nonstop: true
107
+ Rake::Task.prepend Module.new {
108
+ def execute(*)
109
+ exception = DEBUGGER__::SESSION.capture_exception_frames(/(exe|bin|lib)\/rake/) do
110
+ super
111
+ end
112
+
113
+ if exception
114
+ STDERR.puts exception.message
115
+ DEBUGGER__::SESSION.enter_postmortem_session exception
116
+ raise exception
117
+ end
118
+ end
119
+ }
120
+ rescue LoadError
121
+ end
122
+ private :load_debug_at_stop_feature
123
+
124
+ # Find the rakefile and then load it and any pending imports.
125
+ def load_rakefile
126
+ standard_exception_handling do
127
+ raw_load_rakefile
128
+ end
129
+ end
130
+
131
+ # Run the top level tasks of a Rake application.
132
+ def top_level
133
+ run_with_threads do
134
+ if options.show_tasks
135
+ display_tasks_and_comments
136
+ elsif options.show_prereqs
137
+ display_prerequisites
138
+ else
139
+ top_level_tasks.each { |task_name| invoke_task(task_name) }
140
+ end
141
+ end
142
+ end
143
+
144
+ # Run the given block with the thread startup and shutdown.
145
+ def run_with_threads
146
+ thread_pool.gather_history if options.job_stats == :history
147
+
148
+ yield
149
+ ensure
150
+ thread_pool.join if defined?(@thread_pool)
151
+ if options.job_stats
152
+ stats = thread_pool.statistics
153
+ puts "Maximum active threads: #{stats[:max_active_threads]} + main"
154
+ puts "Total threads in play: #{stats[:total_threads_in_play]} + main"
155
+ end
156
+ ThreadHistoryDisplay.new(thread_pool.history).show if
157
+ options.job_stats == :history
158
+ end
159
+
160
+ # Add a loader to handle imported files ending in the extension
161
+ # +ext+.
162
+ def add_loader(ext, loader)
163
+ ext = ".#{ext}" unless ext =~ /^\./
164
+ @loaders[ext] = loader
165
+ end
166
+
167
+ # Application options from the command line
168
+ def options
169
+ @options ||= Options.new
170
+ end
171
+
172
+ # Return the thread pool used for multithreaded processing.
173
+ def thread_pool # :nodoc:
174
+ @thread_pool ||= ThreadPool.new(options.thread_pool_size || Rake.suggested_thread_count-1)
175
+ end
176
+
177
+ # internal ----------------------------------------------------------------
178
+
179
+ # Invokes a task with arguments that are extracted from +task_string+
180
+ def invoke_task(task_string) # :nodoc:
181
+ name, args = parse_task_string(task_string)
182
+ t = self[name]
183
+ t.invoke(*args)
184
+ end
185
+
186
+ def parse_task_string(string) # :nodoc:
187
+ /^([^\[]+)(?:\[(.*)\])$/ =~ string.to_s
188
+
189
+ name = $1
190
+ remaining_args = $2
191
+
192
+ return string, [] unless name
193
+ return name, [] if remaining_args.empty?
194
+
195
+ args = []
196
+
197
+ begin
198
+ /\s*((?:[^\\,]|\\.)*?)\s*(?:,\s*(.*))?$/ =~ remaining_args
199
+
200
+ remaining_args = $2
201
+ args << $1.gsub(/\\(.)/, '\1')
202
+ end while remaining_args
203
+
204
+ return name, args
205
+ end
206
+
207
+ # Provide standard exception handling for the given block.
208
+ def standard_exception_handling # :nodoc:
209
+ yield
210
+ rescue SystemExit
211
+ # Exit silently with current status
212
+ raise
213
+ rescue OptionParser::InvalidOption => ex
214
+ $stderr.puts ex.message
215
+ exit(false)
216
+ rescue Exception => ex
217
+ # Exit with error message
218
+ display_error_message(ex)
219
+ exit_because_of_exception(ex)
220
+ end
221
+
222
+ # Exit the program because of an unhandled exception.
223
+ # (may be overridden by subclasses)
224
+ def exit_because_of_exception(ex) # :nodoc:
225
+ exit(false)
226
+ end
227
+
228
+ # Display the error message that caused the exception.
229
+ def display_error_message(ex) # :nodoc:
230
+ trace "#{name} aborted!"
231
+ display_exception_details(ex)
232
+ trace "Tasks: #{ex.chain}" if has_chain?(ex)
233
+ trace "(See full trace by running task with --trace)" unless
234
+ options.backtrace
235
+ end
236
+
237
+ def display_exception_details(ex) # :nodoc:
238
+ display_exception_details_seen << ex
239
+
240
+ display_exception_message_details(ex)
241
+ display_exception_backtrace(ex) if ex.backtrace
242
+ display_cause_details(ex.cause) if has_cause?(ex)
243
+ end
244
+
245
+ def display_cause_details(ex) # :nodoc:
246
+ return if display_exception_details_seen.include? ex
247
+
248
+ trace "\nCaused by:"
249
+ display_exception_details(ex)
250
+ end
251
+
252
+ def display_exception_details_seen # :nodoc:
253
+ Thread.current[:rake_display_exception_details_seen] ||= []
254
+ end
255
+
256
+ def has_cause?(ex) # :nodoc:
257
+ ex.respond_to?(:cause) && ex.cause
258
+ end
259
+
260
+ def display_exception_message_details(ex) # :nodoc:
261
+ if ex.instance_of?(RuntimeError)
262
+ trace ex.message
263
+ elsif ex.respond_to?(:detailed_message)
264
+ trace "#{ex.class.name}: #{ex.detailed_message(highlight: false)}"
265
+ else
266
+ trace "#{ex.class.name}: #{ex.message}"
267
+ end
268
+ end
269
+
270
+ def display_exception_backtrace(ex) # :nodoc:
271
+ if options.backtrace
272
+ trace ex.backtrace.join("\n")
273
+ else
274
+ trace Backtrace.collapse(ex.backtrace).join("\n")
275
+ end
276
+ end
277
+
278
+ # Warn about deprecated usage.
279
+ #
280
+ # Example:
281
+ # Rake.application.deprecate("import", "Rake.import", caller.first)
282
+ #
283
+ def deprecate(old_usage, new_usage, call_site) # :nodoc:
284
+ unless options.ignore_deprecate
285
+ $stderr.puts "WARNING: '#{old_usage}' is deprecated. " +
286
+ "Please use '#{new_usage}' instead.\n" +
287
+ " at #{call_site}"
288
+ end
289
+ end
290
+
291
+ # Does the exception have a task invocation chain?
292
+ def has_chain?(exception) # :nodoc:
293
+ exception.respond_to?(:chain) && exception.chain
294
+ end
295
+ private :has_chain?
296
+
297
+ # True if one of the files in RAKEFILES is in the current directory.
298
+ # If a match is found, it is copied into @rakefile.
299
+ def have_rakefile # :nodoc:
300
+ @rakefiles.each do |fn|
301
+ if File.exist?(fn)
302
+ others = FileList.glob(fn, File::FNM_CASEFOLD)
303
+ return others.size == 1 ? others.first : fn
304
+ elsif fn == ""
305
+ return fn
306
+ end
307
+ end
308
+ return nil
309
+ end
310
+
311
+ # True if we are outputting to TTY, false otherwise
312
+ def tty_output? # :nodoc:
313
+ @tty_output
314
+ end
315
+
316
+ # We will truncate output if we are outputting to a TTY or if we've been
317
+ # given an explicit column width to honor
318
+ def truncate_output? # :nodoc:
319
+ tty_output? || @terminal_columns.nonzero?
320
+ end
321
+
322
+ # Display the tasks and comments.
323
+ def display_tasks_and_comments # :nodoc:
324
+ displayable_tasks = tasks.select { |t|
325
+ (options.show_all_tasks || t.comment) &&
326
+ t.name =~ options.show_task_pattern
327
+ }
328
+ case options.show_tasks
329
+ when :tasks
330
+ width = displayable_tasks.map { |t| t.name_with_args.length }.max || 10
331
+ if truncate_output?
332
+ max_column = terminal_width - name.size - width - 7
333
+ else
334
+ max_column = nil
335
+ end
336
+
337
+ displayable_tasks.each do |t|
338
+ printf("#{name} %-#{width}s # %s\n",
339
+ t.name_with_args,
340
+ max_column ? truncate(t.comment, max_column) : t.comment)
341
+ end
342
+ when :describe
343
+ displayable_tasks.each do |t|
344
+ puts "#{name} #{t.name_with_args}"
345
+ comment = t.full_comment || ""
346
+ comment.split("\n").each do |line|
347
+ puts " #{line}"
348
+ end
349
+ puts
350
+ end
351
+ when :lines
352
+ displayable_tasks.each do |t|
353
+ t.locations.each do |loc|
354
+ printf "#{name} %-30s %s\n", t.name_with_args, loc
355
+ end
356
+ end
357
+ else
358
+ fail "Unknown show task mode: '#{options.show_tasks}'"
359
+ end
360
+ end
361
+
362
+ def terminal_width # :nodoc:
363
+ if @terminal_columns.nonzero?
364
+ result = @terminal_columns
365
+ else
366
+ result = unix? ? dynamic_width : 80
367
+ end
368
+ (result < 10) ? 80 : result
369
+ rescue
370
+ 80
371
+ end
372
+
373
+ # Calculate the dynamic width of the
374
+ def dynamic_width # :nodoc:
375
+ @dynamic_width ||= (dynamic_width_stty.nonzero? || dynamic_width_tput)
376
+ end
377
+
378
+ def dynamic_width_stty # :nodoc:
379
+ %x{stty size 2>/dev/null}.split[1].to_i
380
+ end
381
+
382
+ def dynamic_width_tput # :nodoc:
383
+ %x{tput cols 2>/dev/null}.to_i
384
+ end
385
+
386
+ def unix? # :nodoc:
387
+ RbConfig::CONFIG["host_os"] =~
388
+ /(aix|darwin|linux|(net|free|open)bsd|cygwin|solaris|irix|hpux)/i
389
+ end
390
+
391
+ def windows? # :nodoc:
392
+ Win32.windows?
393
+ end
394
+
395
+ def truncate(string, width) # :nodoc:
396
+ if string.nil?
397
+ ""
398
+ elsif string.length <= width
399
+ string
400
+ else
401
+ (string[0, width - 3] || "") + "..."
402
+ end
403
+ end
404
+
405
+ # Display the tasks and prerequisites
406
+ def display_prerequisites # :nodoc:
407
+ tasks.each do |t|
408
+ puts "#{name} #{t.name}"
409
+ t.prerequisites.each { |pre| puts " #{pre}" }
410
+ end
411
+ end
412
+
413
+ def trace(*strings) # :nodoc:
414
+ options.trace_output ||= $stderr
415
+ trace_on(options.trace_output, *strings)
416
+ end
417
+
418
+ def sort_options(options) # :nodoc:
419
+ options.sort_by { |opt|
420
+ opt.select { |o| o.is_a?(String) && o =~ /^-/ }.map(&:downcase).sort.reverse
421
+ }
422
+ end
423
+ private :sort_options
424
+
425
+ # A list of all the standard options used in rake, suitable for
426
+ # passing to OptionParser.
427
+ def standard_rake_options # :nodoc:
428
+ sort_options(
429
+ [
430
+ ["--all", "-A",
431
+ "Show all tasks, even uncommented ones (in combination with -T or -D)",
432
+ lambda { |value|
433
+ options.show_all_tasks = value
434
+ }
435
+ ],
436
+ ["--backtrace=[OUT]",
437
+ "Enable full backtrace. OUT can be stderr (default) or stdout.",
438
+ lambda { |value|
439
+ options.backtrace = true
440
+ select_trace_output(options, "backtrace", value)
441
+ }
442
+ ],
443
+ ["--build-all", "-B",
444
+ "Build all prerequisites, including those which are up-to-date.",
445
+ lambda { |value|
446
+ options.build_all = true
447
+ }
448
+ ],
449
+ ["--comments",
450
+ "Show commented tasks only",
451
+ lambda { |value|
452
+ options.show_all_tasks = !value
453
+ }
454
+ ],
455
+ ["--describe", "-D [PATTERN]",
456
+ "Describe the tasks (matching optional PATTERN), then exit.",
457
+ lambda { |value|
458
+ select_tasks_to_show(options, :describe, value)
459
+ }
460
+ ],
461
+ ["--directory", "-C [DIRECTORY]",
462
+ "Change to DIRECTORY before doing anything.",
463
+ lambda { |value|
464
+ Dir.chdir value
465
+ @original_dir = Dir.pwd
466
+ }
467
+ ],
468
+ ["--dry-run", "-n",
469
+ "Do a dry run without executing actions.",
470
+ lambda { |value|
471
+ Rake.verbose(true)
472
+ Rake.nowrite(true)
473
+ options.dryrun = true
474
+ options.trace = true
475
+ }
476
+ ],
477
+ ["--execute", "-e CODE",
478
+ "Execute some Ruby code and exit.",
479
+ lambda { |value|
480
+ eval(value)
481
+ exit
482
+ }
483
+ ],
484
+ ["--execute-print", "-p CODE",
485
+ "Execute some Ruby code, print the result, then exit.",
486
+ lambda { |value|
487
+ puts eval(value)
488
+ exit
489
+ }
490
+ ],
491
+ ["--execute-continue", "-E CODE",
492
+ "Execute some Ruby code, " +
493
+ "then continue with normal task processing.",
494
+ lambda { |value| eval(value) }
495
+ ],
496
+ ["--jobs", "-j [NUMBER]",
497
+ "Specifies the maximum number of tasks to execute in parallel. " +
498
+ "(default is number of CPU cores + 4)",
499
+ lambda { |value|
500
+ if value.nil? || value == ""
501
+ value = Float::INFINITY
502
+ elsif value =~ /^\d+$/
503
+ value = value.to_i
504
+ else
505
+ value = Rake.suggested_thread_count
506
+ end
507
+ value = 1 if value < 1
508
+ options.thread_pool_size = value - 1
509
+ }
510
+ ],
511
+ ["--job-stats [LEVEL]",
512
+ "Display job statistics. " +
513
+ "LEVEL=history displays a complete job list",
514
+ lambda { |value|
515
+ if value =~ /^history/i
516
+ options.job_stats = :history
517
+ else
518
+ options.job_stats = true
519
+ end
520
+ }
521
+ ],
522
+ ["--libdir", "-I LIBDIR",
523
+ "Include LIBDIR in the search path for required modules.",
524
+ lambda { |value| $:.push(value) }
525
+ ],
526
+ ["--multitask", "-m",
527
+ "Treat all tasks as multitasks.",
528
+ lambda { |value| options.always_multitask = true }
529
+ ],
530
+ ["--no-search", "--nosearch",
531
+ "-N", "Do not search parent directories for the Rakefile.",
532
+ lambda { |value| options.nosearch = true }
533
+ ],
534
+ ["--prereqs", "-P",
535
+ "Display the tasks and dependencies, then exit.",
536
+ lambda { |value| options.show_prereqs = true }
537
+ ],
538
+ ["--quiet", "-q",
539
+ "Do not log messages to standard output.",
540
+ lambda { |value| Rake.verbose(false) }
541
+ ],
542
+ ["--rakefile", "-f [FILENAME]",
543
+ "Use FILENAME as the rakefile to search for.",
544
+ lambda { |value|
545
+ value ||= ""
546
+ @rakefiles.clear
547
+ @rakefiles << value
548
+ }
549
+ ],
550
+ ["--rakelibdir", "--rakelib", "-R RAKELIBDIR",
551
+ "Auto-import any .rake files in RAKELIBDIR. " +
552
+ "(default is 'rakelib')",
553
+ lambda { |value|
554
+ options.rakelib = value.split(File::PATH_SEPARATOR)
555
+ }
556
+ ],
557
+ ["--require", "-r MODULE",
558
+ "Require MODULE before executing rakefile.",
559
+ lambda { |value|
560
+ begin
561
+ require value
562
+ rescue LoadError => ex
563
+ begin
564
+ rake_require value
565
+ rescue LoadError
566
+ raise ex
567
+ end
568
+ end
569
+ }
570
+ ],
571
+ ["--rules",
572
+ "Trace the rules resolution.",
573
+ lambda { |value| options.trace_rules = true }
574
+ ],
575
+ ["--silent", "-s",
576
+ "Like --quiet, but also suppresses the " +
577
+ "'in directory' announcement.",
578
+ lambda { |value|
579
+ Rake.verbose(false)
580
+ options.silent = true
581
+ }
582
+ ],
583
+ ["--suppress-backtrace PATTERN",
584
+ "Suppress backtrace lines matching regexp PATTERN. " +
585
+ "Ignored if --trace is on.",
586
+ lambda { |value|
587
+ options.suppress_backtrace_pattern = Regexp.new(value)
588
+ }
589
+ ],
590
+ ["--system", "-g",
591
+ "Using system wide (global) rakefiles " +
592
+ "(usually '~/.rake/*.rake').",
593
+ lambda { |value| options.load_system = true }
594
+ ],
595
+ ["--no-system", "--nosystem", "-G",
596
+ "Use standard project Rakefile search paths, " +
597
+ "ignore system wide rakefiles.",
598
+ lambda { |value| options.ignore_system = true }
599
+ ],
600
+ ["--tasks", "-T [PATTERN]",
601
+ "Display the tasks (matching optional PATTERN) " +
602
+ "with descriptions, then exit. " +
603
+ "-AT combination displays all the tasks, including those without descriptions.",
604
+ lambda { |value|
605
+ select_tasks_to_show(options, :tasks, value)
606
+ }
607
+ ],
608
+ ["--trace=[OUT]", "-t",
609
+ "Turn on invoke/execute tracing, enable full backtrace. " +
610
+ "OUT can be stderr (default) or stdout.",
611
+ lambda { |value|
612
+ options.trace = true
613
+ options.backtrace = true
614
+ select_trace_output(options, "trace", value)
615
+ Rake.verbose(true)
616
+ }
617
+ ],
618
+ ["--verbose", "-v",
619
+ "Log message to standard output.",
620
+ lambda { |value| Rake.verbose(true) }
621
+ ],
622
+ ["--version", "-V",
623
+ "Display the program version.",
624
+ lambda { |value|
625
+ puts "rake, version #{Rake::VERSION}"
626
+ exit
627
+ }
628
+ ],
629
+ ["--where", "-W [PATTERN]",
630
+ "Describe the tasks (matching optional PATTERN), then exit.",
631
+ lambda { |value|
632
+ select_tasks_to_show(options, :lines, value)
633
+ options.show_all_tasks = true
634
+ }
635
+ ],
636
+ ["--no-deprecation-warnings", "-X",
637
+ "Disable the deprecation warnings.",
638
+ lambda { |value|
639
+ options.ignore_deprecate = true
640
+ }
641
+ ],
642
+ ])
643
+ end
644
+
645
+ def select_tasks_to_show(options, show_tasks, value) # :nodoc:
646
+ options.show_tasks = show_tasks
647
+ options.show_task_pattern = Regexp.new(value || "")
648
+ Rake::TaskManager.record_task_metadata = true
649
+ end
650
+ private :select_tasks_to_show
651
+
652
+ def select_trace_output(options, trace_option, value) # :nodoc:
653
+ value = value.strip unless value.nil?
654
+ case value
655
+ when "stdout"
656
+ options.trace_output = $stdout
657
+ when "stderr", nil
658
+ options.trace_output = $stderr
659
+ else
660
+ fail CommandLineOptionError,
661
+ "Unrecognized --#{trace_option} option '#{value}'"
662
+ end
663
+ end
664
+ private :select_trace_output
665
+
666
+ # Read and handle the command line options. Returns the command line
667
+ # arguments that we didn't understand, which should (in theory) be just
668
+ # task names and env vars.
669
+ def handle_options(argv) # :nodoc:
670
+ set_default_options
671
+
672
+ OptionParser.new do |opts|
673
+ opts.banner = "#{Rake.application.name} [-f rakefile] {options} targets..."
674
+ opts.separator ""
675
+ opts.separator "Options are ..."
676
+
677
+ opts.on_tail("-h", "--help", "-H", "Display this help message.") do
678
+ puts opts
679
+ exit
680
+ end
681
+
682
+ standard_rake_options.each { |args| opts.on(*args) }
683
+ opts.environment("RAKEOPT")
684
+ end.parse(argv)
685
+ end
686
+
687
+ # Similar to the regular Ruby +require+ command, but will check
688
+ # for *.rake files in addition to *.rb files.
689
+ def rake_require(file_name, paths=$LOAD_PATH, loaded=$LOADED_FEATURES) # :nodoc:
690
+ fn = file_name + ".rake"
691
+ return false if loaded.include?(fn)
692
+ paths.each do |path|
693
+ full_path = File.join(path, fn)
694
+ if File.exist?(full_path)
695
+ Rake.load_rakefile(full_path)
696
+ loaded << fn
697
+ return true
698
+ end
699
+ end
700
+ fail LoadError, "Can't find #{file_name}"
701
+ end
702
+
703
+ def find_rakefile_location # :nodoc:
704
+ here = Dir.pwd
705
+ until (fn = have_rakefile)
706
+ Dir.chdir("..")
707
+ return nil if Dir.pwd == here || options.nosearch
708
+ here = Dir.pwd
709
+ end
710
+ [fn, here]
711
+ ensure
712
+ Dir.chdir(Rake.original_dir)
713
+ end
714
+
715
+ def print_rakefile_directory(location) # :nodoc:
716
+ $stderr.puts "(in #{Dir.pwd})" unless
717
+ options.silent or original_dir == location
718
+ end
719
+
720
+ def raw_load_rakefile # :nodoc:
721
+ rakefile, location = find_rakefile_location
722
+ if (!options.ignore_system) &&
723
+ (options.load_system || rakefile.nil?) &&
724
+ system_dir && File.directory?(system_dir)
725
+ print_rakefile_directory(location)
726
+ glob("#{system_dir}/*.rake") do |name|
727
+ add_import name
728
+ end
729
+ else
730
+ fail "No Rakefile found (looking for: #{@rakefiles.join(', ')})" if
731
+ rakefile.nil?
732
+ @rakefile = rakefile
733
+ Dir.chdir(location)
734
+ print_rakefile_directory(location)
735
+ Rake.load_rakefile(File.expand_path(@rakefile)) if
736
+ @rakefile && @rakefile != ""
737
+ options.rakelib.each do |rlib|
738
+ glob("#{rlib}/*.rake") do |name|
739
+ add_import name
740
+ end
741
+ end
742
+ end
743
+ load_imports
744
+ end
745
+
746
+ def glob(path, &block) # :nodoc:
747
+ FileList.glob(path.tr("\\", "/")).each(&block)
748
+ end
749
+ private :glob
750
+
751
+ # The directory path containing the system wide rakefiles.
752
+ def system_dir # :nodoc:
753
+ @system_dir ||= ENV["RAKE_SYSTEM"] || standard_system_dir
754
+ end
755
+
756
+ # The standard directory containing system wide rake files.
757
+ def standard_system_dir #:nodoc:
758
+ if windows?
759
+ File.join(Dir.home, "Rake")
760
+ else
761
+ File.join(Dir.home, ".rake")
762
+ end
763
+ end
764
+ private :standard_system_dir
765
+
766
+ # Collect the list of tasks on the command line. If no tasks are
767
+ # given, return a list containing only the default task.
768
+ # Environmental assignments are processed at this time as well.
769
+ #
770
+ # `args` is the list of arguments to peruse to get the list of tasks.
771
+ # It should be the command line that was given to rake, less any
772
+ # recognised command-line options, which OptionParser.parse will
773
+ # have taken care of already.
774
+ def collect_command_line_tasks(args) # :nodoc:
775
+ @top_level_tasks = []
776
+ args.each do |arg|
777
+ if arg =~ /^(\w+)=(.*)$/m
778
+ ENV[$1] = $2
779
+ else
780
+ @top_level_tasks << arg unless arg =~ /^-/
781
+ end
782
+ end
783
+ @top_level_tasks.push(default_task_name) if @top_level_tasks.empty?
784
+ end
785
+
786
+ # Default task name ("default").
787
+ # (May be overridden by subclasses)
788
+ def default_task_name # :nodoc:
789
+ "default"
790
+ end
791
+
792
+ # Add a file to the list of files to be imported.
793
+ def add_import(fn) # :nodoc:
794
+ @pending_imports << fn
795
+ end
796
+
797
+ # Load the pending list of imported files.
798
+ def load_imports # :nodoc:
799
+ while fn = @pending_imports.shift
800
+ next if @imported.member?(fn)
801
+ fn_task = lookup(fn) and fn_task.invoke
802
+ ext = File.extname(fn)
803
+ loader = @loaders[ext] || @default_loader
804
+ loader.load(fn)
805
+ if fn_task = lookup(fn) and fn_task.needed?
806
+ fn_task.reenable
807
+ fn_task.invoke
808
+ loader.load(fn)
809
+ end
810
+ @imported << fn
811
+ end
812
+ end
813
+
814
+ def rakefile_location(backtrace=caller) # :nodoc:
815
+ backtrace.map { |t| t[/([^:]+):/, 1] }
816
+
817
+ re = /^#{@rakefile}$/
818
+ re = /#{re.source}/i if windows?
819
+
820
+ backtrace.find { |str| str =~ re } || ""
821
+ end
822
+
823
+ def set_default_options # :nodoc:
824
+ options.always_multitask = false
825
+ options.backtrace = false
826
+ options.build_all = false
827
+ options.dryrun = false
828
+ options.ignore_deprecate = false
829
+ options.ignore_system = false
830
+ options.job_stats = false
831
+ options.load_system = false
832
+ options.nosearch = false
833
+ options.rakelib = %w[rakelib]
834
+ options.show_all_tasks = false
835
+ options.show_prereqs = false
836
+ options.show_task_pattern = nil
837
+ options.show_tasks = nil
838
+ options.silent = false
839
+ options.suppress_backtrace_pattern = nil
840
+ options.thread_pool_size = Rake.suggested_thread_count
841
+ options.trace = false
842
+ options.trace_output = $stderr
843
+ options.trace_rules = false
844
+ end
845
+
846
+ end
847
+ end