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,51 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/patches/module/common_concern'
4
+ require 'eac_ruby_utils/patches/module/simple_cache'
5
+
6
+ module EacRubyUtils
7
+ module Envs
8
+ class SshEnv < ::EacRubyUtils::Envs::BaseEnv
9
+ module DashoOptions
10
+ common_concern
11
+
12
+ module ClassMethods
13
+ def add_nodasho_option(name)
14
+ return if nodasho_options.include?(name)
15
+
16
+ nodasho_options << name
17
+ const_set("#{name.underscore}_option".upcase, name)
18
+ end
19
+
20
+ def nodasho_options
21
+ @nodasho_options ||= []
22
+ end
23
+ end
24
+
25
+ module InstanceMethods
26
+ def ssh_command_line_dasho_args
27
+ r = []
28
+ uri.query_values&.each do |k, v|
29
+ r += ['-o', "#{k}=#{v}"] unless nodasho_options.include?(k)
30
+ end
31
+ r
32
+ end
33
+
34
+ def ssh_command_line_nodasho_args
35
+ nodasho_options.flat_map do |option_name|
36
+ uri_query_value(option_name).if_present([]) do |option_value|
37
+ send("ssh_command_line_#{option_name.underscore}_args", option_value)
38
+ end
39
+ end
40
+ end
41
+
42
+ delegate :nodasho_options, to: :class
43
+
44
+ def uri_query_value(name)
45
+ uri.query_values.if_present { |v| v[name] }
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support/concern'
4
+ require 'eac_ruby_utils/envs/ssh_env/dasho_options'
5
+ require 'eac_ruby_utils/listable'
6
+ require 'eac_ruby_utils/patches/object/if_present'
7
+
8
+ module EacRubyUtils
9
+ module Envs
10
+ class SshEnv < ::EacRubyUtils::Envs::BaseEnv
11
+ module IdentityFile
12
+ extend ::ActiveSupport::Concern
13
+
14
+ included do
15
+ include ::EacRubyUtils::Envs::SshEnv::DashoOptions
16
+
17
+ add_nodasho_option('IdentityFile')
18
+ end
19
+
20
+ def ssh_command_line_identity_file_args(value)
21
+ ['-i', value]
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support/concern'
4
+ require 'eac_ruby_utils/boolean'
5
+ require 'eac_ruby_utils/envs/ssh_env/dasho_options'
6
+
7
+ module EacRubyUtils
8
+ module Envs
9
+ class SshEnv < ::EacRubyUtils::Envs::BaseEnv
10
+ module Quiet
11
+ extend ::ActiveSupport::Concern
12
+
13
+ included do
14
+ include ::EacRubyUtils::Envs::SshEnv::DashoOptions
15
+
16
+ add_nodasho_option('Quiet')
17
+ end
18
+
19
+ def ssh_command_line_quiet_args(value)
20
+ ::EacRubyUtils::Boolean.parse(value) ? ['-q'] : []
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support/concern'
4
+ require 'eac_ruby_utils/envs/ssh_env/dasho_options'
5
+ require 'eac_ruby_utils/listable'
6
+ require 'eac_ruby_utils/patches/object/if_present'
7
+
8
+ module EacRubyUtils
9
+ module Envs
10
+ class SshEnv < ::EacRubyUtils::Envs::BaseEnv
11
+ module Terminal
12
+ extend ::ActiveSupport::Concern
13
+
14
+ included do
15
+ include ::EacRubyUtils::Envs::SshEnv::DashoOptions
16
+
17
+ add_nodasho_option('Terminal')
18
+ include ::EacRubyUtils::Listable
19
+
20
+ lists.add_string :terminal_option, :auto, :disable, :enable, :force
21
+ end
22
+
23
+ def ssh_command_line_terminal_args(value)
24
+ self.class.lists.terminal_option.value_validate!(value)
25
+ case value
26
+ when TERMINAL_OPTION_AUTO then ENV['TERM'].present? ? %w[-t] : []
27
+ when TERMINAL_OPTION_DISABLE then ['-T']
28
+ when TERMINAL_OPTION_ENABLE then ['-t']
29
+ when TERMINAL_OPTION_FORCE then ['-tt']
30
+ else raise "Invalid conditional branch: #{value}"
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,74 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'addressable'
4
+ require 'eac_ruby_utils/envs/base_env'
5
+ require 'eac_ruby_utils/patches/object/if_present'
6
+ require 'eac_ruby_utils/patches/module/require_sub'
7
+ require 'net/ssh'
8
+ require 'shellwords'
9
+
10
+ module EacRubyUtils
11
+ module Envs
12
+ class SshEnv < ::EacRubyUtils::Envs::BaseEnv
13
+ require_sub __FILE__, include_modules: true
14
+
15
+ USER_PATTERN = /[a-z_][a-z0-9_-]*/
16
+ HOSTNAME_PATTERN = /[^@]+/
17
+ USER_HOSTNAME_PATTERN = /\A(?:(#{USER_PATTERN})@)?(#{HOSTNAME_PATTERN})\z/
18
+
19
+ class << self
20
+ def parse_uri(uri)
21
+ uri_by_url(uri) || uri_by_user_hostname(uri) || raise("URI has no SSH scheme: #{uri}")
22
+ end
23
+
24
+ private
25
+
26
+ def uri_by_url(url)
27
+ r = ::Addressable::URI.parse(url)
28
+ r.scheme == 'ssh' && r.host.present? ? r : nil
29
+ end
30
+
31
+ def uri_by_user_hostname(user_hostname)
32
+ m = USER_HOSTNAME_PATTERN.match(user_hostname)
33
+ m ? ::Addressable::URI.new(scheme: 'ssh', host: m[2], user: m[1]) : nil
34
+ rescue Addressable::URI::InvalidURIError
35
+ nil
36
+ end
37
+ end
38
+
39
+ attr_reader :uri
40
+
41
+ def initialize(uri)
42
+ super()
43
+ @uri = self.class.parse_uri(uri).freeze
44
+ end
45
+
46
+ delegate :to_s, to: :uri
47
+
48
+ def command_line(line)
49
+ "#{ssh_command_line} #{Shellwords.escape(line)}"
50
+ end
51
+
52
+ private
53
+
54
+ def ssh_command_line
55
+ (%w[ssh] +
56
+ %w[nodasho dasho port].flat_map { |m| send("ssh_command_line_#{m}_args") } +
57
+ [user_hostname_uri])
58
+ .map { |a| Shellwords.escape(a) }.join(' ')
59
+ end
60
+
61
+ def ssh_command_line_port_args
62
+ uri.port.if_present([]) do |v|
63
+ ['-p', v]
64
+ end
65
+ end
66
+
67
+ def user_hostname_uri
68
+ r = uri.host
69
+ r = "#{uri.user}@#{r}" if uri.user.present?
70
+ r
71
+ end
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/envs/base_env'
4
+ require 'eac_ruby_utils/envs/command'
5
+ require 'eac_ruby_utils/envs/file'
6
+ require 'eac_ruby_utils/envs/local_env'
7
+ require 'eac_ruby_utils/envs/process'
8
+ require 'eac_ruby_utils/envs/ssh_env'
9
+ require 'eac_ruby_utils/envs/executable'
10
+
11
+ module EacRubyUtils
12
+ module Envs
13
+ class << self
14
+ def local
15
+ @local ||= ::EacRubyUtils::Envs::LocalEnv.new
16
+ end
17
+
18
+ def ssh(user_hostname)
19
+ ::EacRubyUtils::Envs::SshEnv.new(user_hostname)
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'fileutils'
4
+ require 'pathname'
5
+
6
+ module EacRubyUtils
7
+ module Fs
8
+ class ClearableDirectory < ::Pathname
9
+ CLEARABLE_BASENAME = '.clearable_directory'
10
+
11
+ def clear
12
+ validate_clearable
13
+ directory? ? clear_directory : clear_no_directory
14
+ mkpath
15
+ ::FileUtils.touch(clearable_note_file.to_path)
16
+ self
17
+ end
18
+
19
+ def clearable?
20
+ clearable_negate_message ? true : false
21
+ end
22
+
23
+ def clearable_negate_message
24
+ return if !exist? || empty?
25
+ return "Path \"#{self}\" exists, is not empty and is not a directory" unless directory?
26
+ return if clearable_note_file.exist?
27
+
28
+ "Directory \"#{self}\" is not empty and does not have a #{CLEARABLE_BASENAME} file"
29
+ end
30
+
31
+ def clearable_note_file
32
+ join(CLEARABLE_BASENAME)
33
+ end
34
+
35
+ def validate_clearable
36
+ message = clearable_negate_message
37
+ raise message if message
38
+ end
39
+
40
+ private
41
+
42
+ def clear_directory
43
+ children.each do |child|
44
+ if child.directory?
45
+ child.rmtree
46
+ elsif child.file?
47
+ child.unlink
48
+ end
49
+ end
50
+ end
51
+
52
+ def clear_no_directory
53
+ ::FileUtils.rm_rf(to_path)
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/patches/module/common_concern'
4
+
5
+ module EacRubyUtils
6
+ module Fs
7
+ module Extname
8
+ common_concern
9
+ class_methods do
10
+ # A [File.extname] which find multiple extensions (Ex.: .tar.gz).
11
+ def extname(path, limit = -1)
12
+ recursive_extension(::File.basename(path), limit)
13
+ end
14
+
15
+ # Shortcut to +extname(2)+.
16
+ def extname2(path)
17
+ extname(path, 2)
18
+ end
19
+
20
+ private
21
+
22
+ def recursive_extension(basename, limit)
23
+ return '' if limit.zero?
24
+
25
+ m = /\A(.+)(\.[a-z][a-z0-9]*)\z/i.match(basename)
26
+ if m
27
+ "#{recursive_extension(m[1], limit - 1)}#{m[2]}"
28
+ else
29
+ ''
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/fs/temp/file'
4
+
5
+ module EacRubyUtils
6
+ module Fs
7
+ module Temp
8
+ class Directory < ::EacRubyUtils::Fs::Temp::File
9
+ def initialize(*tempfile_args)
10
+ super
11
+ mkpath
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'pathname'
4
+ require 'tempfile'
5
+
6
+ module EacRubyUtils
7
+ module Fs
8
+ module Temp
9
+ class File < Pathname
10
+ # Temporary file
11
+ def initialize(*tempfile_args)
12
+ file = Tempfile.new(*tempfile_args)
13
+ path = file.path
14
+ file.close
15
+ file.unlink
16
+ super(path)
17
+ end
18
+
19
+ def remove
20
+ if directory?
21
+ rmtree
22
+ elsif file?
23
+ unlink
24
+ end
25
+ end
26
+
27
+ def remove!
28
+ remove
29
+ raise "Tried to remove \"#{self}\", but it yet exists" if exist?
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,52 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/require_sub'
4
+ require 'pathname'
5
+ require 'tempfile'
6
+
7
+ module EacRubyUtils
8
+ module Fs
9
+ # Utilities for temporary files.
10
+ module Temp
11
+ class << self
12
+ ::EacRubyUtils.require_sub __FILE__
13
+
14
+ # Shortcut to +EacRubyUtils::Fs::Temp::Directory.new(*tempfile_args)+.
15
+ #
16
+ # @return [Pathname]
17
+ def directory(*tempfile_args)
18
+ ::EacRubyUtils::Fs::Temp::Directory.new(*tempfile_args)
19
+ end
20
+
21
+ # Shortcut to +EacRubyUtils::Fs::Temp::File.new(*tempfile_args)+.
22
+ #
23
+ # @return [Pathname]
24
+ def file(*tempfile_args)
25
+ ::EacRubyUtils::Fs::Temp::File.new(*tempfile_args)
26
+ end
27
+
28
+ # Run a block while a temporary directory pathname is provided. The directory is deleted
29
+ # when the block is finished.
30
+ def on_directory(*tempfile_args)
31
+ temp_dir = directory(*tempfile_args)
32
+ begin
33
+ yield(temp_dir)
34
+ ensure
35
+ temp_dir.remove
36
+ end
37
+ end
38
+
39
+ # Run a block while a temporary file pathname is providade. The file is deleted when block
40
+ # is finished.
41
+ def on_file(*tempfile_args)
42
+ temp_file = file(*tempfile_args)
43
+ begin
44
+ yield(temp_file)
45
+ ensure
46
+ temp_file.remove
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/require_sub'
4
+
5
+ module EacRubyUtils
6
+ module Fs
7
+ include ::EacRubyUtils::Fs::Extname
8
+
9
+ ::EacRubyUtils.require_sub __FILE__
10
+ end
11
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/recursive_builder'
4
+ require 'memoized'
5
+
6
+ module EacRubyUtils
7
+ class GemsRegistry
8
+ class Gem
9
+ module Dependencies
10
+ include ::Memoized
11
+
12
+ def depend_on(gem) # rubocop:disable Naming/PredicateMethod
13
+ dependencies.lazy.map(&:name).include?(gem.gemspec.name)
14
+ end
15
+
16
+ memoize def dependencies
17
+ ::EacRubyUtils::RecursiveBuilder
18
+ .new(gemspec) { |item| gem_item_dependencies(item) }
19
+ .result
20
+ end
21
+
22
+ private
23
+
24
+ # @return [Array<Gem::Dependency>]
25
+ def gem_item_dependencies(item)
26
+ ::Gem::Specification.find_by_name(item.name).dependencies.select(&:runtime?)
27
+ rescue ::Gem::MissingSpecError
28
+ []
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support/core_ext/string/inflections'
4
+ require 'eac_ruby_utils/recursive_builder'
5
+ require 'memoized'
6
+
7
+ module EacRubyUtils
8
+ class GemsRegistry
9
+ class Gem
10
+ module PathsToRequire
11
+ ROOT_MODULE_REQUIRE_PATTERNS = %w[
12
+ EacRubyUtils::RootModuleSetup EacRubyBase1::RootModuleSetup Zeitwerk
13
+ ].freeze
14
+
15
+ # @return [Enumerable<Pathname>]
16
+ def absolute_require_paths(lib_relative_path)
17
+ gemspec.require_paths.lazy.map do |e|
18
+ ::Pathname.new(e).expand_path(gemspec.gem_dir)
19
+ .join("#{lib_relative_path}.rb")
20
+ end
21
+ end
22
+
23
+ # @return [String]
24
+ def path_to_require
25
+ require_root_module? ? root_module_path_to_require : direct_path_to_require
26
+ end
27
+
28
+ # @return [String]
29
+ def to_s
30
+ "#{self.class.name}[#{gemspec.name}]"
31
+ end
32
+
33
+ protected
34
+
35
+ # @return [String]
36
+ def direct_path_to_require
37
+ "#{root_module_path_to_require}/#{registry.module_suffix.underscore}"
38
+ end
39
+
40
+ # @return [Boolean]
41
+ def require_root_module?
42
+ absolute_require_paths(root_module_path_to_require).find do |e|
43
+ next false unless e.file?
44
+
45
+ content = e.read
46
+ ROOT_MODULE_REQUIRE_PATTERNS.any? { |e| content.include?(e) }
47
+ end
48
+ end
49
+
50
+ # @return [String]
51
+ def root_module_path_to_require
52
+ gemspec.name.gsub('-', '/')
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support/core_ext/string/inflections'
4
+ require 'eac_ruby_utils/gems_registry/gem/dependencies'
5
+ require 'eac_ruby_utils/gems_registry/gem/paths_to_require'
6
+ require 'memoized'
7
+
8
+ module EacRubyUtils
9
+ class GemsRegistry
10
+ class Gem
11
+ include ::Comparable
12
+ include ::EacRubyUtils::GemsRegistry::Gem::Dependencies
13
+ include ::EacRubyUtils::GemsRegistry::Gem::PathsToRequire
14
+ include ::Memoized
15
+
16
+ attr_reader :registry, :gemspec
17
+
18
+ def initialize(registry, gemspec)
19
+ @registry = registry
20
+ @gemspec = gemspec
21
+ end
22
+
23
+ def <=>(other)
24
+ sd = depend_on(other)
25
+ od = other.depend_on(self)
26
+ return 1 if sd && !od
27
+ return -1 if od && !sd
28
+
29
+ gemspec.name <=> other.gemspec.name
30
+ end
31
+
32
+ def found?
33
+ registered_module.is_a?(::Module)
34
+ end
35
+
36
+ # @return [Module, nil]
37
+ def registered_module
38
+ begin
39
+ require path_to_require
40
+ rescue ::LoadError # rubocop:disable Lint/SuppressedException
41
+ end
42
+ begin
43
+ direct_path_to_require.camelize.constantize
44
+ rescue ::LoadError, ::NameError
45
+ nil
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rubygems'
4
+ require 'eac_ruby_utils/gems_registry/gem'
5
+
6
+ module EacRubyUtils
7
+ # Search in each gem for a class determined by registry and run the method "register" on each
8
+ # found.
9
+ #
10
+ # Example:
11
+ # * The module suffix is `TheClass`;
12
+ # * A gem with name "my-lib" is being analyzed
13
+ # * If a require for "my/lib/the_class" is succesful the class/module `My::Lib::TheClass` will
14
+ # be collected.
15
+ class GemsRegistry
16
+ attr_reader :module_suffix
17
+
18
+ def initialize(module_suffix)
19
+ @module_suffix = module_suffix
20
+ end
21
+
22
+ # @return [Array<EacRubyUtils::GemsRegistry::Gem>]
23
+ def registered
24
+ @registered ||= all_gems.select(&:found?).sort
25
+ end
26
+
27
+ private
28
+
29
+ # @return [Array<EacRubyUtils::GemsRegistry::Gem>]
30
+ def all_gems
31
+ ::Gem::Specification.map { |gemspec| ::EacRubyUtils::GemsRegistry::Gem.new(self, gemspec) }
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support/inflector'
4
+
5
+ module EacRubyUtils
6
+ class Inflector
7
+ class << self
8
+ VARIABLE_NAME_PATTERN = /[_a-z][_a-z0-9]*/i
9
+
10
+ # Convert a string to a variable format: first character as a lowercase letter or underscore
11
+ # and other as a lowercase letter, underscore or numbers.
12
+ # @param string [String] The source string.
13
+ # @param validate [Boolean] Affect the outcome when the result builded is not in a valid
14
+ # variable format. If `true`, it raises a {ArgumentError}. If `false`, return `nil`.
15
+ # @return [String, nil]
16
+ # @raise [ArgumentError]
17
+ def variableize(string, validate = true) # rubocop:disable Style/OptionalBooleanParameter
18
+ r = ::ActiveSupport::Inflector.transliterate(string).gsub(/[^_a-z0-9]/i, '_')
19
+ .gsub(/_+/, '_').gsub(/_\z/, '').gsub(/\A_/, '').downcase
20
+ m = VARIABLE_NAME_PATTERN.match(r)
21
+ return r if m
22
+ return nil unless validate
23
+
24
+ raise ::ArgumentError, "Invalid variable name \"#{r}\" was generated " \
25
+ "from string \"#{string}\""
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'i18n'
4
+ require_relative 'lists'
5
+
6
+ module EacRubyUtils
7
+ module Listable
8
+ module ClassMethods
9
+ def lists
10
+ @lists ||= ::EacRubyUtils::Listable::Lists.new(self)
11
+ end
12
+ end
13
+ end
14
+ end