eac_tools 0.119.0 → 0.120.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (351) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +35 -29
  3. data/eac_tools.gemspec +3 -3
  4. data/lib/eac_tools/version.rb +1 -1
  5. data/sub/avm-eac_ruby_base1/avm-eac_ruby_base1.gemspec +2 -2
  6. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/instances/mixin.rb +1 -1
  7. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/version.rb +1 -1
  8. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/rubygems/gemspec_spec_files/changes1.target.txt +1 -1
  9. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/rubygems/gemspec_spec_files/the_gem.gemspec +1 -1
  10. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/runners/base/rubocop_spec_files/dir1/dir3/Gemfile +2 -0
  11. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/runners/base/rubocop_spec_files/dir1/dir3/Gemfile.lock +4 -0
  12. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/dashed-mygem/dashed-mygem.gemspec +1 -1
  13. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/mygem/mygem.gemspec +1 -1
  14. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/sources/base/bundler_spec_files/mygem/mygem.gemspec +1 -1
  15. data/sub/eac_ruby_gem_support/.gitrepo +7 -0
  16. data/sub/eac_ruby_gem_support/.rubocop.yml +45 -0
  17. data/sub/eac_ruby_gem_support/eac_ruby_gem_support.gemspec +27 -0
  18. data/sub/eac_ruby_gem_support/lib/eac_ruby_gem_support/rspec/helpers/filesystem.rb +73 -0
  19. data/sub/eac_ruby_gem_support/lib/eac_ruby_gem_support/rspec/helpers/utils.rb +22 -0
  20. data/sub/eac_ruby_gem_support/lib/eac_ruby_gem_support/rspec/setup/rubocop.rb +61 -0
  21. data/sub/eac_ruby_gem_support/lib/eac_ruby_gem_support/rspec/setup.rb +52 -0
  22. data/sub/eac_ruby_gem_support/lib/eac_ruby_gem_support/rspec/shared_examples/source_target_fixtures.rb +73 -0
  23. data/sub/eac_ruby_gem_support/lib/eac_ruby_gem_support/rspec/shared_examples/spec_paths.rb +11 -0
  24. data/sub/eac_ruby_gem_support/lib/eac_ruby_gem_support/rspec/source_target_fixtures_controller.rb +29 -0
  25. data/sub/eac_ruby_gem_support/lib/eac_ruby_gem_support/rspec/spec_paths_controller.rb +27 -0
  26. data/sub/eac_ruby_gem_support/lib/eac_ruby_gem_support/source_target_fixtures/source_target_file.rb +17 -0
  27. data/sub/eac_ruby_gem_support/lib/eac_ruby_gem_support/source_target_fixtures.rb +72 -0
  28. data/sub/eac_ruby_gem_support/lib/eac_ruby_gem_support/version.rb +5 -0
  29. data/sub/eac_ruby_gem_support/lib/eac_ruby_gem_support.rb +9 -0
  30. data/sub/eac_ruby_gem_support/spec/lib/eac_ruby_gem_support/rspec/helpers/filesystem_spec.rb +30 -0
  31. data/sub/eac_ruby_gem_support/spec/lib/eac_ruby_gem_support/rspec/shared_examples/source_target_fixtures_spec.rb +11 -0
  32. data/sub/eac_ruby_gem_support/spec/lib/eac_ruby_gem_support/rspec/shared_examples/source_target_fixtures_spec_files/one.source.yaml +2 -0
  33. data/sub/eac_ruby_gem_support/spec/lib/eac_ruby_gem_support/rspec/shared_examples/source_target_fixtures_spec_files/one.target.yaml +2 -0
  34. data/sub/eac_ruby_gem_support/spec/lib/eac_ruby_gem_support/rspec/shared_examples/spec_paths_spec.rb +17 -0
  35. data/sub/eac_ruby_gem_support/spec/lib/eac_ruby_gem_support/source_target_fixtures_spec.rb +25 -0
  36. data/sub/eac_ruby_gem_support/spec/lib/eac_ruby_gem_support/source_target_fixtures_spec_files/stub1.source.txt +1 -0
  37. data/sub/eac_ruby_gem_support/spec/lib/eac_ruby_gem_support/source_target_fixtures_spec_files/stub1.target.html +1 -0
  38. data/sub/eac_ruby_gem_support/spec/lib/eac_ruby_gem_support/source_target_fixtures_spec_files/stub2.source.html +1 -0
  39. data/sub/eac_ruby_gem_support/spec/lib/eac_ruby_gem_support/source_target_fixtures_spec_files/stub3.target.yaml +1 -0
  40. data/sub/{avm-eac_redmine_plugin_base0 → eac_ruby_gem_support}/spec/spec_helper.rb +1 -1
  41. data/sub/eac_ruby_utils/.avm.yaml +3 -0
  42. data/sub/eac_ruby_utils/.gitignore +4 -0
  43. data/sub/eac_ruby_utils/.gitrepo +7 -0
  44. data/sub/eac_ruby_utils/.rspec +1 -0
  45. data/sub/eac_ruby_utils/.yardopts +1 -0
  46. data/sub/eac_ruby_utils/Gemfile +8 -0
  47. data/sub/eac_ruby_utils/MIT-LICENCE +16 -0
  48. data/sub/eac_ruby_utils/README.rdoc +3 -0
  49. data/sub/eac_ruby_utils/eac_ruby_utils.gemspec +28 -0
  50. data/sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_abstract.rb +100 -0
  51. data/sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_immutable/array_accessor.rb +25 -0
  52. data/sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_immutable/base_accessor.rb +57 -0
  53. data/sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_immutable/boolean_accessor.rb +16 -0
  54. data/sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_immutable/class_methods.rb +20 -0
  55. data/sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_immutable/common_accessor.rb +30 -0
  56. data/sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_immutable/enumerable_accessor.rb +52 -0
  57. data/sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_immutable/hash_accessor.rb +57 -0
  58. data/sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_immutable/instance_methods.rb +21 -0
  59. data/sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_immutable/set_accessor.rb +25 -0
  60. data/sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_immutable.rb +16 -0
  61. data/sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_instance_method.rb +34 -0
  62. data/sub/eac_ruby_utils/lib/eac_ruby_utils/arguments_consumer.rb +80 -0
  63. data/sub/eac_ruby_utils/lib/eac_ruby_utils/bit.rb +47 -0
  64. data/sub/eac_ruby_utils/lib/eac_ruby_utils/bit_array.rb +81 -0
  65. data/sub/eac_ruby_utils/lib/eac_ruby_utils/blank_not_blank.rb +19 -0
  66. data/sub/eac_ruby_utils/lib/eac_ruby_utils/boolean.rb +31 -0
  67. data/sub/eac_ruby_utils/lib/eac_ruby_utils/by_reference.rb +23 -0
  68. data/sub/eac_ruby_utils/lib/eac_ruby_utils/byte.rb +106 -0
  69. data/sub/eac_ruby_utils/lib/eac_ruby_utils/byte_array.rb +36 -0
  70. data/sub/eac_ruby_utils/lib/eac_ruby_utils/common_concern/class_setup.rb +53 -0
  71. data/sub/eac_ruby_utils/lib/eac_ruby_utils/common_concern/module_setup.rb +42 -0
  72. data/sub/eac_ruby_utils/lib/eac_ruby_utils/common_concern.rb +20 -0
  73. data/sub/eac_ruby_utils/lib/eac_ruby_utils/common_constructor/class_accessors.rb +36 -0
  74. data/sub/eac_ruby_utils/lib/eac_ruby_utils/common_constructor/class_initialize.rb +39 -0
  75. data/sub/eac_ruby_utils/lib/eac_ruby_utils/common_constructor/instance_initialize.rb +64 -0
  76. data/sub/eac_ruby_utils/lib/eac_ruby_utils/common_constructor/super_args.rb +55 -0
  77. data/sub/eac_ruby_utils/lib/eac_ruby_utils/common_constructor.rb +95 -0
  78. data/sub/eac_ruby_utils/lib/eac_ruby_utils/compact.rb +32 -0
  79. data/sub/eac_ruby_utils/lib/eac_ruby_utils/compare_by.rb +28 -0
  80. data/sub/eac_ruby_utils/lib/eac_ruby_utils/context.rb +33 -0
  81. data/sub/eac_ruby_utils/lib/eac_ruby_utils/contextualizable.rb +19 -0
  82. data/sub/eac_ruby_utils/lib/eac_ruby_utils/core_ext.rb +6 -0
  83. data/sub/eac_ruby_utils/lib/eac_ruby_utils/custom_format.rb +51 -0
  84. data/sub/eac_ruby_utils/lib/eac_ruby_utils/enum.rb +102 -0
  85. data/sub/eac_ruby_utils/lib/eac_ruby_utils/enumerables_methods.rb +42 -0
  86. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/base_command/append_command_options.rb +38 -0
  87. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/base_command/concat.rb +41 -0
  88. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/base_command/debugging.rb +19 -0
  89. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/base_command/execution.rb +52 -0
  90. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/base_command/extra_options.rb +28 -0
  91. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/base_command.rb +45 -0
  92. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/base_env.rb +28 -0
  93. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/command/envvars.rb +27 -0
  94. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/command/extra_options.rb +23 -0
  95. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/command.rb +67 -0
  96. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/composite_command.rb +45 -0
  97. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/executable.rb +93 -0
  98. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/execution_error.rb +8 -0
  99. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/execution_result.rb +45 -0
  100. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/file.rb +22 -0
  101. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/local_env.rb +17 -0
  102. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/process.rb +27 -0
  103. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/spawn.rb +32 -0
  104. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/ssh_env/dasho_options.rb +51 -0
  105. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/ssh_env/identity_file.rb +26 -0
  106. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/ssh_env/quiet.rb +25 -0
  107. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/ssh_env/terminal.rb +36 -0
  108. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/ssh_env.rb +74 -0
  109. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs.rb +23 -0
  110. data/sub/eac_ruby_utils/lib/eac_ruby_utils/fs/clearable_directory.rb +57 -0
  111. data/sub/eac_ruby_utils/lib/eac_ruby_utils/fs/extname.rb +35 -0
  112. data/sub/eac_ruby_utils/lib/eac_ruby_utils/fs/temp/directory.rb +16 -0
  113. data/sub/eac_ruby_utils/lib/eac_ruby_utils/fs/temp/file.rb +34 -0
  114. data/sub/eac_ruby_utils/lib/eac_ruby_utils/fs/temp.rb +52 -0
  115. data/sub/eac_ruby_utils/lib/eac_ruby_utils/fs.rb +11 -0
  116. data/sub/eac_ruby_utils/lib/eac_ruby_utils/gems_registry/gem/dependencies.rb +33 -0
  117. data/sub/eac_ruby_utils/lib/eac_ruby_utils/gems_registry/gem/paths_to_require.rb +57 -0
  118. data/sub/eac_ruby_utils/lib/eac_ruby_utils/gems_registry/gem.rb +50 -0
  119. data/sub/eac_ruby_utils/lib/eac_ruby_utils/gems_registry.rb +34 -0
  120. data/sub/eac_ruby_utils/lib/eac_ruby_utils/inflector.rb +29 -0
  121. data/sub/eac_ruby_utils/lib/eac_ruby_utils/listable/class_methods.rb +14 -0
  122. data/sub/eac_ruby_utils/lib/eac_ruby_utils/listable/instance_methods.rb +30 -0
  123. data/sub/eac_ruby_utils/lib/eac_ruby_utils/listable/integer_list.rb +23 -0
  124. data/sub/eac_ruby_utils/lib/eac_ruby_utils/listable/item.rb +48 -0
  125. data/sub/eac_ruby_utils/lib/eac_ruby_utils/listable/list.rb +129 -0
  126. data/sub/eac_ruby_utils/lib/eac_ruby_utils/listable/lists.rb +51 -0
  127. data/sub/eac_ruby_utils/lib/eac_ruby_utils/listable/string_list.rb +19 -0
  128. data/sub/eac_ruby_utils/lib/eac_ruby_utils/listable/symbol_list.rb +19 -0
  129. data/sub/eac_ruby_utils/lib/eac_ruby_utils/listable.rb +17 -0
  130. data/sub/eac_ruby_utils/lib/eac_ruby_utils/local_time_zone.rb +48 -0
  131. data/sub/eac_ruby_utils/lib/eac_ruby_utils/locales/from_all_gems.rb +4 -0
  132. data/sub/eac_ruby_utils/lib/eac_ruby_utils/locales/from_gem.rb +47 -0
  133. data/sub/eac_ruby_utils/lib/eac_ruby_utils/locales/module_i18n_translate.rb +74 -0
  134. data/sub/eac_ruby_utils/lib/eac_ruby_utils/locales.rb +9 -0
  135. data/sub/eac_ruby_utils/lib/eac_ruby_utils/method_class.rb +30 -0
  136. data/sub/eac_ruby_utils/lib/eac_ruby_utils/module_ancestors_variable/base.rb +34 -0
  137. data/sub/eac_ruby_utils/lib/eac_ruby_utils/module_ancestors_variable/hash.rb +20 -0
  138. data/sub/eac_ruby_utils/lib/eac_ruby_utils/module_ancestors_variable/set.rb +19 -0
  139. data/sub/eac_ruby_utils/lib/eac_ruby_utils/module_ancestors_variable.rb +9 -0
  140. data/sub/eac_ruby_utils/lib/eac_ruby_utils/objects_table.rb +41 -0
  141. data/sub/eac_ruby_utils/lib/eac_ruby_utils/options_consumer.rb +62 -0
  142. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patch_module.rb +21 -0
  143. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/addressable/uri/query_value.rb +37 -0
  144. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/addressable/uri.rb +4 -0
  145. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/addressable.rb +4 -0
  146. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/class/abstract.rb +9 -0
  147. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/class/common_constructor.rb +9 -0
  148. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/class/method_class.rb +9 -0
  149. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/class/self_included_modules.rb +7 -0
  150. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/class/settings_provider.rb +10 -0
  151. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/class/static_method_class.rb +9 -0
  152. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/class.rb +4 -0
  153. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/enumerable/boolean_combinations.rb +45 -0
  154. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/enumerable.rb +4 -0
  155. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/enumerator/current.rb +9 -0
  156. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/enumerator/stopped.rb +14 -0
  157. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/enumerator.rb +4 -0
  158. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/hash/if_key.rb +12 -0
  159. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/hash/options_consumer.rb +10 -0
  160. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/hash/sym_keys_hash.rb +10 -0
  161. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/hash/to_struct.rb +10 -0
  162. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/hash.rb +5 -0
  163. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/integer/rjust_zero.rb +13 -0
  164. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/integer.rb +4 -0
  165. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/kernel/ibr.rb +10 -0
  166. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/kernel/nyi.rb +10 -0
  167. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/kernel.rb +4 -0
  168. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/abstract_methods.rb +10 -0
  169. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/acts_as_abstract.rb +15 -0
  170. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/acts_as_immutable.rb +10 -0
  171. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/acts_as_instance_method.rb +10 -0
  172. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/common_concern.rb +9 -0
  173. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/compare_by.rb +9 -0
  174. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/context.rb +11 -0
  175. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/enable_memoized.rb +10 -0
  176. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/i18n_translate.rb +9 -0
  177. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/immutable.rb +11 -0
  178. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/listable.rb +10 -0
  179. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/module_parent.rb +5 -0
  180. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/patch_self.rb +9 -0
  181. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/require_sub.rb +9 -0
  182. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/simple_cache.rb +10 -0
  183. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/speaker.rb +9 -0
  184. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module.rb +4 -0
  185. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object/asserts.rb +25 -0
  186. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object/call_if_proc.rb +11 -0
  187. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object/compact.rb +20 -0
  188. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object/debug.rb +55 -0
  189. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object/i18n_translate.rb +11 -0
  190. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object/if_nil.rb +17 -0
  191. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object/if_present.rb +19 -0
  192. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object/if_respond.rb +22 -0
  193. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object/recursive_build.rb +12 -0
  194. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object/to_bool.rb +12 -0
  195. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object/to_pathname.rb +15 -0
  196. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object/to_sym_by_eac.rb +11 -0
  197. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object/to_uri.rb +15 -0
  198. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object.rb +5 -0
  199. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname/assert_parent.rb +12 -0
  200. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname/basename_noext.rb +9 -0
  201. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname/basename_sub.rb +13 -0
  202. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname/child_of.rb +16 -0
  203. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname/if_exist.rb +10 -0
  204. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname/mkpath_s.rb +12 -0
  205. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname/parent_n.rb +11 -0
  206. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname/readlink_r.rb +11 -0
  207. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname/reqdir_glob.rb +13 -0
  208. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname.rb +4 -0
  209. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/regexp/if_match.rb +16 -0
  210. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/regexp/to_parser.rb +10 -0
  211. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/regexp.rb +4 -0
  212. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/string/delimited.rb +16 -0
  213. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/string/inflector.rb +11 -0
  214. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/string.rb +4 -0
  215. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/time/required_zone.rb +11 -0
  216. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/time.rb +4 -0
  217. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches.rb +4 -0
  218. data/sub/eac_ruby_utils/lib/eac_ruby_utils/recursive_builder.rb +51 -0
  219. data/sub/eac_ruby_utils/lib/eac_ruby_utils/regexp_parser.rb +39 -0
  220. data/sub/eac_ruby_utils/lib/eac_ruby_utils/require_sub/base.rb +93 -0
  221. data/sub/eac_ruby_utils/lib/eac_ruby_utils/require_sub/sub_file.rb +64 -0
  222. data/sub/eac_ruby_utils/lib/eac_ruby_utils/require_sub.rb +11 -0
  223. data/sub/eac_ruby_utils/lib/eac_ruby_utils/root_module_setup/ignore.rb +57 -0
  224. data/sub/eac_ruby_utils/lib/eac_ruby_utils/root_module_setup.rb +108 -0
  225. data/sub/eac_ruby_utils/lib/eac_ruby_utils/rspec/default_setup.rb +23 -0
  226. data/sub/eac_ruby_utils/lib/eac_ruby_utils/rspec/setup/conditionals.rb +17 -0
  227. data/sub/eac_ruby_utils/lib/eac_ruby_utils/rspec/setup/setup_manager.rb +17 -0
  228. data/sub/eac_ruby_utils/lib/eac_ruby_utils/rspec/setup.rb +27 -0
  229. data/sub/eac_ruby_utils/lib/eac_ruby_utils/rspec/setup_manager.rb +49 -0
  230. data/sub/eac_ruby_utils/lib/eac_ruby_utils/rspec/stub_speaker.rb +39 -0
  231. data/sub/eac_ruby_utils/lib/eac_ruby_utils/rspec.rb +9 -0
  232. data/sub/eac_ruby_utils/lib/eac_ruby_utils/ruby/command.rb +32 -0
  233. data/sub/eac_ruby_utils/lib/eac_ruby_utils/ruby/on_clean_environment.rb +71 -0
  234. data/sub/eac_ruby_utils/lib/eac_ruby_utils/ruby/on_replace_objects/replace_instance_method.rb +36 -0
  235. data/sub/eac_ruby_utils/lib/eac_ruby_utils/ruby/on_replace_objects.rb +52 -0
  236. data/sub/eac_ruby_utils/lib/eac_ruby_utils/ruby.rb +9 -0
  237. data/sub/eac_ruby_utils/lib/eac_ruby_utils/settings_provider/setting_value.rb +79 -0
  238. data/sub/eac_ruby_utils/lib/eac_ruby_utils/settings_provider.rb +50 -0
  239. data/sub/eac_ruby_utils/lib/eac_ruby_utils/simple_cache.rb +77 -0
  240. data/sub/eac_ruby_utils/lib/eac_ruby_utils/speaker/receiver.rb +64 -0
  241. data/sub/eac_ruby_utils/lib/eac_ruby_utils/speaker/sender.rb +37 -0
  242. data/sub/eac_ruby_utils/lib/eac_ruby_utils/speaker.rb +16 -0
  243. data/sub/eac_ruby_utils/lib/eac_ruby_utils/static_method_class.rb +12 -0
  244. data/sub/eac_ruby_utils/lib/eac_ruby_utils/string_delimited.rb +70 -0
  245. data/sub/eac_ruby_utils/lib/eac_ruby_utils/struct.rb +63 -0
  246. data/sub/eac_ruby_utils/lib/eac_ruby_utils/unimplemented_method_error.rb +6 -0
  247. data/sub/eac_ruby_utils/lib/eac_ruby_utils/version.rb +5 -0
  248. data/sub/eac_ruby_utils/lib/eac_ruby_utils/wildcards.rb +26 -0
  249. data/sub/eac_ruby_utils/lib/eac_ruby_utils/yaml.rb +107 -0
  250. data/sub/eac_ruby_utils/lib/eac_ruby_utils.rb +15 -0
  251. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/acts_as_abstract_spec.rb +91 -0
  252. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/acts_as_immutable/array_accessor_spec.rb +41 -0
  253. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/acts_as_immutable/common_accessor_spec.rb +55 -0
  254. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/acts_as_immutable/hash_accessor_spec.rb +40 -0
  255. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/acts_as_immutable/set_accessor_spec.rb +41 -0
  256. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/arguments_consumer_spec.rb +15 -0
  257. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/bit_array_spec.rb +20 -0
  258. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/blank_not_blank_spec.rb +14 -0
  259. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/byte_spec.rb +52 -0
  260. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/common_concern_spec.rb +63 -0
  261. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/common_constructor_spec.rb +149 -0
  262. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/compact_spec.rb +19 -0
  263. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/compare_by_spec.rb +37 -0
  264. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/custom_format_spec.rb +58 -0
  265. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/enum_spec.rb +42 -0
  266. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/enumerables_methods_spec.rb +48 -0
  267. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/envs/command/base_example.rb +95 -0
  268. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/envs/command/local_env_spec.rb +9 -0
  269. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/envs/command/ssh_env_spec.rb +16 -0
  270. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/envs/executable_spec.rb +34 -0
  271. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/envs/ssh_env_spec.rb +23 -0
  272. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/fs/extname_spec.rb +16 -0
  273. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/fs/temp/directory_spec.rb +10 -0
  274. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/fs/temp_spec.rb +50 -0
  275. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/gems_registry_spec.rb +14 -0
  276. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/inflector_spec.rb +14 -0
  277. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/listable_spec.rb +223 -0
  278. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/local_time_zone_spec.rb +15 -0
  279. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/method_class_spec.rb +45 -0
  280. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/module_ancestors_variable/hash_spec.rb +55 -0
  281. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/module_ancestors_variable/set_spec.rb +55 -0
  282. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/options_consumer_spec.rb +78 -0
  283. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/addressable/uri/query_value_spec.rb +23 -0
  284. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/class/abstract_spec.rb +23 -0
  285. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/class/acts_as_abstract_spec.rb +11 -0
  286. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/class/method_class_spec.rb +17 -0
  287. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/class/self_included_modules_spec.rb +28 -0
  288. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/class/static_method_class_spec.rb +17 -0
  289. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/enumerable/boolean_combinations_spec.rb +37 -0
  290. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/enumerator/current_spec.rb +24 -0
  291. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/enumerator/stopped_spec.rb +30 -0
  292. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/hash/if_key_spec.rb +21 -0
  293. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/hash/options_consumer_spec.rb +15 -0
  294. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/hash/sym_keys_hash_spec.rb +11 -0
  295. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/integer/rjust_zero_spec.rb +18 -0
  296. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/module/compare_by_spec.rb +35 -0
  297. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/module/listable_spec.rb +13 -0
  298. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/module/simple_cache_spec.rb +13 -0
  299. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/module/speaker_spec.rb +13 -0
  300. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/object/call_if_proc_spec.rb +9 -0
  301. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/object/compact_spec.rb +18 -0
  302. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/object/if_present_spec.rb +11 -0
  303. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/object/recursive_build_spec.rb +60 -0
  304. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/object/template_spec_files/path/my_stub_with_template +1 -0
  305. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/pathname/assert_parent_spec.rb +19 -0
  306. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/pathname/basename_noext_spec.rb +24 -0
  307. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/pathname/basename_sub_spec.rb +15 -0
  308. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/pathname/child_of_spec.rb +24 -0
  309. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/pathname/parent_n_spec.rb +31 -0
  310. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/string/delimited_spec.rb +32 -0
  311. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/recursive_builder_spec.rb +63 -0
  312. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/require_sub/base_spec/stubbed_module_a.rb +6 -0
  313. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/require_sub/base_spec/stubbed_not_module.rb +6 -0
  314. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/require_sub/base_spec.rb +17 -0
  315. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/rspec/setup/setup_manager_spec.rb +14 -0
  316. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/ruby/on_clean_environment_spec.rb +29 -0
  317. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/ruby/on_replace_objects_spec.rb +63 -0
  318. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/settings_provider_spec.rb +62 -0
  319. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/simple_cache_spec.rb +127 -0
  320. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/static_method_class_spec.rb +43 -0
  321. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/struct_spec.rb +55 -0
  322. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/wildcards_spec.rb +25 -0
  323. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/yaml_spec.rb +73 -0
  324. data/sub/eac_ruby_utils/spec/locales/pt-BR.yml +58 -0
  325. data/sub/eac_ruby_utils/spec/meta/rubocop_check_spec.rb +3 -0
  326. data/sub/eac_ruby_utils/spec/spec_helper.rb +11 -0
  327. metadata +323 -44
  328. data/sub/avm-eac_redmine_plugin_base0/.gitrepo +0 -7
  329. data/sub/avm-eac_redmine_plugin_base0/avm-eac_redmine_plugin_base0.gemspec +0 -21
  330. data/sub/avm-eac_redmine_plugin_base0/lib/avm/eac_redmine_plugin_base0/sources/base/init.rb +0 -23
  331. data/sub/avm-eac_redmine_plugin_base0/lib/avm/eac_redmine_plugin_base0/sources/base/parent.rb +0 -28
  332. data/sub/avm-eac_redmine_plugin_base0/lib/avm/eac_redmine_plugin_base0/sources/base/plugins_dependencies.rb +0 -25
  333. data/sub/avm-eac_redmine_plugin_base0/lib/avm/eac_redmine_plugin_base0/sources/base/rubocop.rb +0 -26
  334. data/sub/avm-eac_redmine_plugin_base0/lib/avm/eac_redmine_plugin_base0/sources/base/update.rb +0 -18
  335. data/sub/avm-eac_redmine_plugin_base0/lib/avm/eac_redmine_plugin_base0/sources/base/version.rb +0 -28
  336. data/sub/avm-eac_redmine_plugin_base0/lib/avm/eac_redmine_plugin_base0/sources/base.rb +0 -33
  337. data/sub/avm-eac_redmine_plugin_base0/lib/avm/eac_redmine_plugin_base0/sources/init_file/plugin_id.rb +0 -23
  338. data/sub/avm-eac_redmine_plugin_base0/lib/avm/eac_redmine_plugin_base0/sources/init_file/version.rb +0 -27
  339. data/sub/avm-eac_redmine_plugin_base0/lib/avm/eac_redmine_plugin_base0/sources/init_file/version_set.rb +0 -39
  340. data/sub/avm-eac_redmine_plugin_base0/lib/avm/eac_redmine_plugin_base0/sources/init_file.rb +0 -26
  341. data/sub/avm-eac_redmine_plugin_base0/lib/avm/eac_redmine_plugin_base0/sources/update_changes/plugins_requirements.rb +0 -47
  342. data/sub/avm-eac_redmine_plugin_base0/lib/avm/eac_redmine_plugin_base0/version.rb +0 -7
  343. data/sub/avm-eac_redmine_plugin_base0/lib/avm/eac_redmine_plugin_base0.rb +0 -6
  344. data/sub/avm-eac_redmine_plugin_base0/locale/en.yml +0 -7
  345. data/sub/avm-eac_redmine_plugin_base0/locale/pt-BR.yml +0 -7
  346. data/sub/avm-eac_redmine_plugin_base0/spec/lib/avm/eac_redmine_plugin_base0/sources/init_file_spec.rb +0 -14
  347. data/sub/avm-eac_redmine_plugin_base0/spec/lib/avm/eac_redmine_plugin_base0/sources/init_file_spec_files/a_init_file.rb +0 -12
  348. /data/sub/{avm-eac_redmine_plugin_base0 → eac_ruby_gem_support}/.gitignore +0 -0
  349. /data/sub/{avm-eac_redmine_plugin_base0 → eac_ruby_gem_support}/.rspec +0 -0
  350. /data/sub/{avm-eac_redmine_plugin_base0 → eac_ruby_gem_support}/Gemfile +0 -0
  351. /data/sub/{avm-eac_redmine_plugin_base0 → eac_ruby_utils}/.rubocop.yml +0 -0
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EacRubyGemSupport
4
+ module Rspec
5
+ class SourceTargetFixturesController
6
+ enable_simple_cache
7
+ common_constructor :spec_paths_controller
8
+ delegate :example, to: :spec_paths_controller
9
+
10
+ def fixtures_dir
11
+ if example.respond_to?(:fixtures_dir)
12
+ example.fixtures_dir
13
+ else
14
+ spec_paths_controller.fixtures_directory
15
+ end
16
+ end
17
+
18
+ def write_target_fixtures?
19
+ ENV['WRITE_TARGET_FIXTURES'].to_bool
20
+ end
21
+
22
+ private
23
+
24
+ def source_target_fixtures_uncached
25
+ ::EacRubyGemSupport::SourceTargetFixtures.new(fixtures_dir)
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EacRubyGemSupport
4
+ module Rspec
5
+ class SpecPathsController
6
+ # @!attribute [r] spec_file
7
+ # @return [Pathname]
8
+
9
+ # @!method initialize(example, spec_file)
10
+ # @param example [RSpec::Core::ExampleGroup]
11
+ # @param spec_file [Pathname]
12
+ common_constructor :example, :spec_file do
13
+ self.spec_file = spec_file.to_pathname
14
+ end
15
+
16
+ # @return [Pathname]
17
+ def fixtures_directory
18
+ spec_directory.join(spec_file.basename('.*')).basename_sub { |b| "#{b}_files" }
19
+ end
20
+
21
+ # @return [Pathname]
22
+ def spec_directory
23
+ spec_file.parent
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EacRubyGemSupport
4
+ class SourceTargetFixtures
5
+ class SourceTargetFile
6
+ common_constructor :owner, :basename
7
+
8
+ def source
9
+ owner.source_file(basename)
10
+ end
11
+
12
+ def target
13
+ owner.target_file(basename)
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,72 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EacRubyGemSupport
4
+ # Lists pairs of source/target files in a directory.
5
+ class SourceTargetFixtures
6
+ class << self
7
+ def source_target_basename(file)
8
+ m = /^(.+)\.(?:source|target)(?:\..+)?$/.match(File.basename(file))
9
+ m ? m[1] : nil
10
+ end
11
+ end
12
+
13
+ # @!attribute [r] fixtures_directory
14
+ # @return [String]
15
+
16
+ # @!method initialize(fixtures_directory)
17
+ # @param fixtures_directory [Pathname]
18
+ common_constructor :fixtures_directory
19
+
20
+ def source_target_files
21
+ sources_targets_basenames.map do |basename|
22
+ ::EacRubyGemSupport::SourceTargetFixtures::SourceTargetFile.new(self, basename)
23
+ end
24
+ end
25
+
26
+ def source_files
27
+ r = []
28
+ source_target_files.each do |st|
29
+ r << st.source if st.source
30
+ end
31
+ r
32
+ end
33
+
34
+ def target_files
35
+ r = []
36
+ source_target_files.each do |st|
37
+ r << st.target if st.target
38
+ end
39
+ r
40
+ end
41
+
42
+ def target_file(basename)
43
+ fixture_file(basename, 'target')
44
+ end
45
+
46
+ def source_file(basename)
47
+ fixture_file(basename, 'source')
48
+ end
49
+
50
+ private
51
+
52
+ def fixture_file(basename, suffix)
53
+ prefix = "#{basename}.#{suffix}"
54
+ Dir.foreach(fixtures_directory) do |item|
55
+ next if %w[. ..].include?(item)
56
+ return File.expand_path(item, fixtures_directory) if item.starts_with?(prefix)
57
+ end
58
+ nil
59
+ end
60
+
61
+ def sources_targets_basenames
62
+ basenames = Set.new
63
+ Dir.foreach(fixtures_directory) do |item|
64
+ next if %w[. ..].include?(item)
65
+
66
+ b = self.class.source_target_basename(item)
67
+ basenames << b if b.present?
68
+ end
69
+ basenames
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EacRubyGemSupport
4
+ VERSION = '0.15.0'
5
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_base1'
4
+ EacRubyBase1::RootModuleSetup.perform __FILE__ do
5
+ ignore 'rspec/shared_examples/**/*'
6
+ require 'super_diff'
7
+ require 'super_diff/active_support'
8
+ require 'super_diff/rspec'
9
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe EacRubyGemSupport::Rspec::Helpers::Filesystem do
4
+ describe '#temp_file' do
5
+ let(:a_temp_file) { temp_file }
6
+
7
+ it { expect(temp_file).to be_file }
8
+ end
9
+
10
+ describe '#temp_dir' do
11
+ let(:a_temp_dir) { temp_dir }
12
+
13
+ it { expect(temp_dir).to be_directory }
14
+ end
15
+
16
+ describe '#temp_copy' do
17
+ let(:source_file) { Pathname.new(__FILE__) }
18
+ let(:source_dir) { source_file.parent }
19
+ let(:file_copy) { temp_copy(source_file) }
20
+ let(:dir_copy) { temp_copy(source_dir) }
21
+
22
+ it { expect(file_copy).to be_file }
23
+ it { expect(file_copy.read).to eq(source_file.read) }
24
+ it { expect(file_copy).not_to eq(source_file) }
25
+
26
+ it { expect(dir_copy).to be_directory }
27
+ it { expect(dir_copy.join(source_file.basename).read).to eq(source_file.read) }
28
+ it { expect(dir_copy).not_to eq(source_dir) }
29
+ end
30
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'yaml'
4
+
5
+ RSpec.describe "RSpec.shared_examples('source_target_fixtures')" do # rubocop:disable RSpec/DescribeClass
6
+ include_examples 'source_target_fixtures', __FILE__
7
+
8
+ def source_data(file)
9
+ YAML.load_file(file)
10
+ end
11
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe "RSpec.shared_examples('spec_paths')" do # rubocop:disable RSpec/DescribeClass
4
+ include_context 'spec_paths', __FILE__
5
+
6
+ it do
7
+ expect(spec_file).to eq(__FILE__.to_pathname)
8
+ end
9
+
10
+ it do
11
+ expect(spec_directory).to eq(__FILE__.to_pathname.dirname)
12
+ end
13
+
14
+ it do
15
+ expect(fixtures_directory).to eq(__FILE__.to_pathname.dirname.join('spec_paths_spec_files'))
16
+ end
17
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe EacRubyGemSupport::SourceTargetFixtures do
4
+ let(:fixtures_dir) { File.join(__dir__, 'source_target_fixtures_spec_files') }
5
+ let(:instance) { described_class.new(fixtures_dir) }
6
+
7
+ describe '#source_target_files' do
8
+ it { expect(instance.source_target_files.count).to eq(3) }
9
+
10
+ (1..3).each do |index|
11
+ basename = "stub#{index}" # rubocop:disable RSpec/LeakyLocalVariable
12
+ let(basename) { instance.source_target_files.find { |stf| stf.basename == basename } }
13
+
14
+ it { expect(send(basename)).to be_present }
15
+ it { expect(send(basename).basename).to eq(basename) }
16
+ end
17
+
18
+ it { expect(stub1.source).to eq(File.join(fixtures_dir, 'stub1.source.txt')) }
19
+ it { expect(stub1.target).to eq(File.join(fixtures_dir, 'stub1.target.html')) }
20
+ it { expect(stub2.source).to eq(File.join(fixtures_dir, 'stub2.source.html')) }
21
+ it { expect(stub2.target).to be_nil }
22
+ it { expect(stub3.source).to be_nil }
23
+ it { expect(stub3.target).to eq(File.join(fixtures_dir, 'stub3.target.yaml')) }
24
+ end
25
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'avm/eac_redmine_plugin_base0'
3
+ require 'eac_ruby_utils'
4
4
  require 'eac_ruby_gem_support'
5
5
  EacRubyUtils::Rspec.default_setup_create(File.expand_path('..', __dir__))
@@ -0,0 +1,3 @@
1
+ ---
2
+ locale: en
3
+ bundle_test_command: exec rspec
@@ -0,0 +1,4 @@
1
+ Gemfile.local
2
+ Gemfile.lock
3
+ doc/
4
+ .yardoc/
@@ -0,0 +1,7 @@
1
+ [subrepo]
2
+ cmdver = 0.4.9
3
+ commit = bd7cd8909484da68230700c817ad15b79f4f2aca
4
+ method = merge
5
+ parent = 12585d6280788727a139ff23a00e0ff963b21d51
6
+ branch = master
7
+ remote = https://github.com/esquilo-azul/eac_ruby_utils.git
@@ -0,0 +1 @@
1
+ --require spec/spec_helper --color --format doc --default-path . --pattern 'spec/**/*_spec.rb'
@@ -0,0 +1 @@
1
+ --no-private --protected lib/**/*.rb
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ gemspec
6
+
7
+ local_gemfile = File.join(File.dirname(__FILE__), 'Gemfile.local')
8
+ eval_gemfile local_gemfile if File.exist?(local_gemfile)
@@ -0,0 +1,16 @@
1
+ Copyright 2018 Eduardo Henrique Bogoni <eduardobogoni@gmail.com>
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
4
+ associated documentation files (the "Software"), to deal in the Software without restriction,
5
+ including without limitation the rights to use, copy, modify, merge, publish, distribute,
6
+ sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
7
+ furnished to do so, subject to the following conditions:
8
+
9
+ The above copyright notice and this permission notice shall be included in all copies or substantial
10
+ portions of the Software.
11
+
12
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
13
+ NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
14
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES
15
+ OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
16
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,3 @@
1
+ = E.A.C. Ruby Utilities
2
+
3
+ Utilities for E.A.C.'s Ruby projects.
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ $LOAD_PATH.push File.expand_path('lib', __dir__)
4
+
5
+ # Maintain your gem's version:
6
+ require 'eac_ruby_utils/version'
7
+
8
+ # Describe your gem and declare its dependencies:
9
+ Gem::Specification.new do |s|
10
+ s.name = 'eac_ruby_utils'
11
+ s.version = EacRubyUtils::VERSION
12
+ s.authors = ['Esquilo Azul Company']
13
+ s.summary = 'Utilities for E.A.C.\'s Ruby projects.'
14
+ s.license = 'MIT'
15
+
16
+ s.files = Dir['{lib}/**/*', 'MIT-LICENSE', 'README.rdoc']
17
+ s.required_ruby_version = '>= 3.2' # rubocop:disable Gemspec/RequiredRubyVersion
18
+
19
+ s.add_dependency 'activesupport', '>= 6.1.7.10'
20
+ s.add_dependency 'addressable', '~> 2.9'
21
+ s.add_dependency 'bundler'
22
+ s.add_dependency 'memoized', '~> 1.1', '>= 1.1.3'
23
+ s.add_dependency 'net-ssh', '~> 4.2'
24
+ s.add_dependency 'ostruct'
25
+ s.add_dependency 'zeitwerk', '~> 2.8', '>= 2.8.3'
26
+ s.add_development_dependency 'avm-eac_ubuntu_base0', '~> 0.7', '>= 0.7.1'
27
+ s.add_development_dependency 'eac_ruby_gem_support', '~> 0.15'
28
+ end
@@ -0,0 +1,100 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/module_ancestors_variable/hash'
4
+ require 'eac_ruby_utils/patches/class/self_included_modules'
5
+ require 'eac_ruby_utils/patches/module/common_concern'
6
+ require 'eac_ruby_utils/unimplemented_method_error'
7
+
8
+ module EacRubyUtils
9
+ # Support to abstract methods.
10
+ #
11
+ # Usage:
12
+ #
13
+ # require 'eac_ruby_utils/acts_as_abstract'
14
+ #
15
+ # class BaseClass
16
+ # include EacRubyUtils::ActsAsAbstract
17
+ #
18
+ # abstract_methods :mymethod
19
+ # end
20
+ #
21
+ # BaseClass.new.mymethod # raise "Abstract method: mymethod"
22
+ #
23
+ # class SubClass
24
+ # def mymethod
25
+ # "Implemented"
26
+ # end
27
+ # end
28
+ #
29
+ # SubClass.new.mymethod # return "Implemented"
30
+ module ActsAsAbstract
31
+ common_concern
32
+
33
+ class << self
34
+ def abstract?(a_class)
35
+ a_class.self_included_modules.include?(::EacRubyUtils::ActsAsAbstract)
36
+ end
37
+ end
38
+
39
+ module ClassMethods
40
+ # @param name [Symbol]
41
+ # @param arguments [Enumerable<Symbol>]
42
+ # @return [void]
43
+ def abstract_method(name, *arguments)
44
+ abstract_methods_hash[name.to_sym] = arguments
45
+ end
46
+
47
+ # @param methods_names [Enumerable<Object>] Each item can be a symbolizable or a hash.
48
+ # @return [void]
49
+ def abstract_methods(*methods_names)
50
+ methods_names.each do |method_name|
51
+ if method_name.is_a?(::Hash)
52
+ abstract_methods_from_hash(method_name)
53
+ else
54
+ abstract_method(method_name)
55
+ end
56
+ end
57
+ end
58
+
59
+ private
60
+
61
+ # @param hash [Hash]
62
+ # @return [void]
63
+ def abstract_methods_from_hash(hash)
64
+ hash.each { |name, arguments| abstract_method(name, *arguments) }
65
+ end
66
+
67
+ # @return [Hash<Symbol, Array]
68
+ def abstract_methods_hash
69
+ @abstract_methods_hash ||=
70
+ ::EacRubyUtils::ModuleAncestorsVariable::Hash.new(self, __method__)
71
+ end
72
+ end
73
+
74
+ module InstanceMethods
75
+ def respond_to_missing?(method_name, include_private = false)
76
+ super || abstract_method?(method_name)
77
+ end
78
+
79
+ def method_missing(method_name, *arguments, &)
80
+ raise_abstract_method(method_name) if abstract_method?(method_name)
81
+
82
+ super
83
+ end
84
+
85
+ # @param method_name [Symbol]
86
+ # @return [Boolean]
87
+ def abstract_method?(method_name)
88
+ return false if self.class.method_defined?(method_name)
89
+
90
+ self.class.send(:abstract_methods_hash).key?(method_name.to_sym)
91
+ end
92
+
93
+ def raise_abstract_method(method_name, arguments = [])
94
+ raise ::EacRubyUtils::UnimplementedMethodError,
95
+ "Abstract method #{method_name}(#{arguments.join(', ')}) hit in " \
96
+ "#{self}\" (Class: #{self.class})"
97
+ end
98
+ end
99
+ end
100
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/acts_as_immutable/enumerable_accessor'
4
+
5
+ module EacRubyUtils
6
+ module ActsAsImmutable
7
+ class ArrayAccessor < ::EacRubyUtils::ActsAsImmutable::EnumerableAccessor
8
+ INITIAL_VALUE = [].freeze
9
+
10
+ # @param value [Object]
11
+ # @return [Array]
12
+ def immutable_value_set_assert(value)
13
+ return value if value.is_a?(::Array)
14
+ return value.to_a if value.respond_to?(:to_a)
15
+
16
+ Array(value)
17
+ end
18
+
19
+ # @return [Array] A empty array.
20
+ def initial_value
21
+ INITIAL_VALUE
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/patches/object/if_respond'
4
+
5
+ module EacRubyUtils
6
+ module ActsAsImmutable
7
+ class BaseAccessor
8
+ FILTER_GET_METHOD_NAME_FORMAT = '%s_get_filter'
9
+ FILTER_SET_METHOD_NAME_FORMAT = '%s_set_filter'
10
+
11
+ common_constructor :name do
12
+ self.name = name.to_sym
13
+ end
14
+
15
+ def duplicate_object(object)
16
+ accessor_new_value = yield(immutable_value_get(object))
17
+ new_values = object.send(:immutable_values_get).merge(name => accessor_new_value)
18
+ r = object.class.new(*object.immutable_constructor_args)
19
+ r.send(:immutable_values_set, new_values)
20
+ r
21
+ end
22
+
23
+ def immutable_value_get(object)
24
+ object.send(:immutable_values_get)[name]
25
+ end
26
+
27
+ # @param object [Object]
28
+ # @return [Object]
29
+ def immutable_value_get_filtered(object)
30
+ r = immutable_value_get(object)
31
+ if object.respond_to?(immutable_value_get_filtered_method_name, true)
32
+ r = object.send(immutable_value_get_filtered_method_name, r)
33
+ end
34
+ r
35
+ end
36
+
37
+ # @return [Symbol]
38
+ def immutable_value_get_filtered_method_name
39
+ format(FILTER_GET_METHOD_NAME_FORMAT, name)
40
+ end
41
+
42
+ # @param object [Object]
43
+ # @return [Object]
44
+ def immutable_value_set_filtered(object, value)
45
+ if object.respond_to?(immutable_value_set_filtered_method_name, true)
46
+ value = object.send(immutable_value_set_filtered_method_name, value)
47
+ end
48
+ immutable_value_set(object, value)
49
+ end
50
+
51
+ # @return [Symbol]
52
+ def immutable_value_set_filtered_method_name
53
+ format(FILTER_SET_METHOD_NAME_FORMAT, name)
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/acts_as_immutable/common_accessor'
4
+ require 'eac_ruby_utils/patches/class/common_constructor'
5
+
6
+ module EacRubyUtils
7
+ module ActsAsImmutable
8
+ class BooleanAccessor < ::EacRubyUtils::ActsAsImmutable::CommonAccessor
9
+ def apply(klass)
10
+ super
11
+ accessor = self
12
+ klass.send(:define_method, "#{name}?") { send(accessor.name) }
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EacRubyUtils
4
+ module ActsAsImmutable
5
+ module ClassMethods
6
+ def immutable_accessor(*accessors)
7
+ options = accessors.extract_options!
8
+ options[:type] ||= const_get('TYPE_COMMON')
9
+ accessors.each do |name|
10
+ class_name = "#{options.fetch(:type).to_s.camelize}Accessor"
11
+ ::EacRubyUtils::ActsAsImmutable.const_get(class_name).new(name).apply(self)
12
+ end
13
+ end
14
+
15
+ private
16
+
17
+ def imutable_single_accessor(name, options); end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/acts_as_immutable/base_accessor'
4
+ require 'eac_ruby_utils/patches/class/common_constructor'
5
+
6
+ module EacRubyUtils
7
+ module ActsAsImmutable
8
+ class CommonAccessor < ::EacRubyUtils::ActsAsImmutable::BaseAccessor
9
+ def apply(klass)
10
+ accessor = self
11
+ klass.send(:define_method, name) do |*args|
12
+ case args.count
13
+ when 0 then next accessor.immutable_value_get_filtered(self)
14
+ when 1 then next accessor.immutable_value_set_filtered(self, args.first)
15
+ else
16
+ raise ::ArgumentError, "wrong number of arguments (given #{args.count}, expected 0..1)"
17
+ end
18
+ end
19
+ end
20
+
21
+ def immutable_value_get(object)
22
+ object.send(:immutable_values_get)[name]
23
+ end
24
+
25
+ def immutable_value_set(object, value)
26
+ duplicate_object(object) { |_old_value| value }
27
+ end
28
+ end
29
+ end
30
+ end