eac_tools 0.97.1 → 0.97.2

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 (346) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +30 -25
  3. data/lib/eac_tools/version.rb +1 -1
  4. data/sub/eac_config/eac_config.gemspec +20 -0
  5. data/sub/eac_config/lib/eac_config/entries.rb +35 -0
  6. data/sub/eac_config/lib/eac_config/entry/not_found_error.rb +13 -0
  7. data/sub/eac_config/lib/eac_config/entry.rb +64 -0
  8. data/sub/eac_config/lib/eac_config/entry_path.rb +89 -0
  9. data/sub/eac_config/lib/eac_config/envvars_node/entry.rb +54 -0
  10. data/sub/eac_config/lib/eac_config/envvars_node.rb +35 -0
  11. data/sub/eac_config/lib/eac_config/load_nodes_search.rb +39 -0
  12. data/sub/eac_config/lib/eac_config/load_path.rb +28 -0
  13. data/sub/eac_config/lib/eac_config/node.rb +81 -0
  14. data/sub/eac_config/lib/eac_config/node_entry.rb +28 -0
  15. data/sub/eac_config/lib/eac_config/node_uri/instanciate_single.rb +29 -0
  16. data/sub/eac_config/lib/eac_config/node_uri.rb +45 -0
  17. data/sub/eac_config/lib/eac_config/old_configs/base.rb +43 -0
  18. data/sub/eac_config/lib/eac_config/old_configs/file.rb +47 -0
  19. data/sub/eac_config/lib/eac_config/old_configs.rb +75 -0
  20. data/sub/eac_config/lib/eac_config/paths_hash/entry_key_error.rb +8 -0
  21. data/sub/eac_config/lib/eac_config/paths_hash/node.rb +67 -0
  22. data/sub/eac_config/lib/eac_config/paths_hash/path_search.rb +39 -0
  23. data/sub/eac_config/lib/eac_config/paths_hash.rb +63 -0
  24. data/sub/eac_config/lib/eac_config/prefixed_path_node/entry.rb +25 -0
  25. data/sub/eac_config/lib/eac_config/prefixed_path_node.rb +19 -0
  26. data/sub/eac_config/lib/eac_config/rspec/setup.rb +65 -0
  27. data/sub/{avm-eac_rails_base1/lib/avm/eac_rails_base1.rb → eac_config/lib/eac_config/rspec.rb} +2 -2
  28. data/sub/eac_config/lib/eac_config/version.rb +5 -0
  29. data/sub/eac_config/lib/eac_config/yaml_file_node/entry.rb +36 -0
  30. data/sub/eac_config/lib/eac_config/yaml_file_node/self_entries.rb +72 -0
  31. data/sub/eac_config/lib/eac_config/yaml_file_node.rb +54 -0
  32. data/sub/eac_config/lib/eac_config.rb +7 -0
  33. data/sub/eac_config/spec/lib/eac_config/entry_path_spec.rb +30 -0
  34. data/sub/eac_config/spec/lib/eac_config/envvars_node/entry_spec.rb +14 -0
  35. data/sub/eac_config/spec/lib/eac_config/envvars_node_spec.rb +51 -0
  36. data/sub/eac_config/spec/lib/eac_config/old_configs_spec.rb +46 -0
  37. data/sub/eac_config/spec/lib/eac_config/paths_hash_spec.rb +63 -0
  38. data/sub/eac_config/spec/lib/eac_config/yaml_file_node_spec.rb +88 -0
  39. data/sub/eac_config/spec/lib/eac_config/yaml_file_node_spec_files/storage1.yaml +10 -0
  40. data/sub/eac_config/spec/lib/eac_config/yaml_file_node_spec_files/storage1_1.yaml +4 -0
  41. data/sub/eac_config/spec/lib/eac_config/yaml_file_node_spec_files/storage1_2/storage1_2_1.yaml +4 -0
  42. data/sub/eac_config/spec/lib/eac_config/yaml_file_node_spec_files/storage1_2.yaml +10 -0
  43. data/sub/eac_ruby_utils/Gemfile +8 -0
  44. data/sub/eac_ruby_utils/MIT-LICENCE +16 -0
  45. data/sub/eac_ruby_utils/README.rdoc +3 -0
  46. data/sub/eac_ruby_utils/eac_ruby_utils.gemspec +26 -0
  47. data/sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_abstract.rb +100 -0
  48. data/sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_immutable/array_accessor.rb +25 -0
  49. data/sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_immutable/base_accessor.rb +57 -0
  50. data/sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_immutable/boolean_accessor.rb +16 -0
  51. data/sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_immutable/class_methods.rb +20 -0
  52. data/sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_immutable/common_accessor.rb +30 -0
  53. data/sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_immutable/enumerable_accessor.rb +52 -0
  54. data/sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_immutable/hash_accessor.rb +57 -0
  55. data/sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_immutable/instance_methods.rb +21 -0
  56. data/sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_immutable/set_accessor.rb +25 -0
  57. data/sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_immutable.rb +15 -0
  58. data/sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_instance_method.rb +34 -0
  59. data/sub/eac_ruby_utils/lib/eac_ruby_utils/arguments_consumer.rb +80 -0
  60. data/sub/eac_ruby_utils/lib/eac_ruby_utils/bit.rb +47 -0
  61. data/sub/eac_ruby_utils/lib/eac_ruby_utils/bit_array.rb +81 -0
  62. data/sub/eac_ruby_utils/lib/eac_ruby_utils/blank_not_blank.rb +19 -0
  63. data/sub/eac_ruby_utils/lib/eac_ruby_utils/boolean.rb +31 -0
  64. data/sub/eac_ruby_utils/lib/eac_ruby_utils/by_reference.rb +23 -0
  65. data/sub/eac_ruby_utils/lib/eac_ruby_utils/byte.rb +106 -0
  66. data/sub/eac_ruby_utils/lib/eac_ruby_utils/byte_array.rb +36 -0
  67. data/sub/eac_ruby_utils/lib/eac_ruby_utils/common_concern/class_setup.rb +52 -0
  68. data/sub/eac_ruby_utils/lib/eac_ruby_utils/common_concern/module_setup.rb +41 -0
  69. data/sub/eac_ruby_utils/lib/eac_ruby_utils/common_concern.rb +20 -0
  70. data/sub/eac_ruby_utils/lib/eac_ruby_utils/common_constructor/class_accessors.rb +36 -0
  71. data/sub/eac_ruby_utils/lib/eac_ruby_utils/common_constructor/class_initialize.rb +39 -0
  72. data/sub/eac_ruby_utils/lib/eac_ruby_utils/common_constructor/instance_initialize.rb +64 -0
  73. data/sub/eac_ruby_utils/lib/eac_ruby_utils/common_constructor/super_args.rb +55 -0
  74. data/sub/eac_ruby_utils/lib/eac_ruby_utils/common_constructor.rb +93 -0
  75. data/sub/eac_ruby_utils/lib/eac_ruby_utils/compact.rb +32 -0
  76. data/sub/eac_ruby_utils/lib/eac_ruby_utils/compare_by.rb +28 -0
  77. data/sub/eac_ruby_utils/lib/eac_ruby_utils/context.rb +33 -0
  78. data/sub/eac_ruby_utils/lib/eac_ruby_utils/contextualizable.rb +21 -0
  79. data/sub/eac_ruby_utils/lib/eac_ruby_utils/core_ext.rb +7 -0
  80. data/sub/eac_ruby_utils/lib/eac_ruby_utils/custom_format.rb +53 -0
  81. data/sub/eac_ruby_utils/lib/eac_ruby_utils/enum.rb +102 -0
  82. data/sub/eac_ruby_utils/lib/eac_ruby_utils/enumerables_methods.rb +42 -0
  83. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/base_command/append_command_options.rb +38 -0
  84. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/base_command/concat.rb +41 -0
  85. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/base_command/debugging.rb +19 -0
  86. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/base_command/execution.rb +52 -0
  87. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/base_command/extra_options.rb +28 -0
  88. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/base_command.rb +45 -0
  89. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/base_env.rb +28 -0
  90. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/command/envvars.rb +27 -0
  91. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/command/extra_options.rb +23 -0
  92. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/command.rb +67 -0
  93. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/composite_command.rb +45 -0
  94. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/executable.rb +93 -0
  95. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/execution_error.rb +8 -0
  96. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/execution_result.rb +45 -0
  97. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/file.rb +22 -0
  98. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/local_env.rb +17 -0
  99. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/process.rb +27 -0
  100. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/spawn.rb +32 -0
  101. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/ssh_env/dasho_options.rb +53 -0
  102. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/ssh_env/identity_file.rb +25 -0
  103. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/ssh_env/quiet.rb +24 -0
  104. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/ssh_env/terminal.rb +34 -0
  105. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/ssh_env.rb +74 -0
  106. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs.rb +23 -0
  107. data/sub/eac_ruby_utils/lib/eac_ruby_utils/fs/clearable_directory.rb +57 -0
  108. data/sub/eac_ruby_utils/lib/eac_ruby_utils/fs/extname.rb +30 -0
  109. data/sub/eac_ruby_utils/lib/eac_ruby_utils/fs/temp/directory.rb +16 -0
  110. data/sub/eac_ruby_utils/lib/eac_ruby_utils/fs/temp/file.rb +34 -0
  111. data/sub/eac_ruby_utils/lib/eac_ruby_utils/fs/temp.rb +52 -0
  112. data/sub/eac_ruby_utils/lib/eac_ruby_utils/fs.rb +9 -0
  113. data/sub/eac_ruby_utils/lib/eac_ruby_utils/gems_registry/gem.rb +80 -0
  114. data/sub/eac_ruby_utils/lib/eac_ruby_utils/gems_registry.rb +34 -0
  115. data/sub/eac_ruby_utils/lib/eac_ruby_utils/inflector.rb +29 -0
  116. data/sub/eac_ruby_utils/lib/eac_ruby_utils/listable/class_methods.rb +14 -0
  117. data/sub/eac_ruby_utils/lib/eac_ruby_utils/listable/instance_methods.rb +30 -0
  118. data/sub/eac_ruby_utils/lib/eac_ruby_utils/listable/integer_list.rb +23 -0
  119. data/sub/eac_ruby_utils/lib/eac_ruby_utils/listable/item.rb +48 -0
  120. data/sub/eac_ruby_utils/lib/eac_ruby_utils/listable/list.rb +129 -0
  121. data/sub/eac_ruby_utils/lib/eac_ruby_utils/listable/lists.rb +51 -0
  122. data/sub/eac_ruby_utils/lib/eac_ruby_utils/listable/string_list.rb +19 -0
  123. data/sub/eac_ruby_utils/lib/eac_ruby_utils/listable/symbol_list.rb +19 -0
  124. data/sub/eac_ruby_utils/lib/eac_ruby_utils/listable.rb +17 -0
  125. data/sub/eac_ruby_utils/lib/eac_ruby_utils/local_time_zone.rb +48 -0
  126. data/sub/eac_ruby_utils/lib/eac_ruby_utils/locales/from_all_gems.rb +4 -0
  127. data/sub/eac_ruby_utils/lib/eac_ruby_utils/locales/from_gem.rb +47 -0
  128. data/sub/eac_ruby_utils/lib/eac_ruby_utils/locales/module_i18n_translate.rb +74 -0
  129. data/sub/eac_ruby_utils/lib/eac_ruby_utils/locales.rb +9 -0
  130. data/sub/eac_ruby_utils/lib/eac_ruby_utils/method_class.rb +30 -0
  131. data/sub/eac_ruby_utils/lib/eac_ruby_utils/module_ancestors_variable/base.rb +34 -0
  132. data/sub/eac_ruby_utils/lib/eac_ruby_utils/module_ancestors_variable/hash.rb +20 -0
  133. data/sub/eac_ruby_utils/lib/eac_ruby_utils/module_ancestors_variable/set.rb +19 -0
  134. data/sub/eac_ruby_utils/lib/eac_ruby_utils/module_ancestors_variable.rb +9 -0
  135. data/sub/eac_ruby_utils/lib/eac_ruby_utils/options_consumer.rb +62 -0
  136. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patch.rb +11 -0
  137. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/addressable/uri/query_value.rb +37 -0
  138. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/addressable/uri.rb +4 -0
  139. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/addressable.rb +4 -0
  140. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/class/abstract.rb +9 -0
  141. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/class/common_constructor.rb +9 -0
  142. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/class/method_class.rb +9 -0
  143. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/class/self_included_modules.rb +7 -0
  144. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/class/settings_provider.rb +10 -0
  145. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/class/static_method_class.rb +9 -0
  146. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/class.rb +4 -0
  147. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/enumerable/boolean_combinations.rb +45 -0
  148. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/enumerable.rb +4 -0
  149. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/enumerator/current.rb +9 -0
  150. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/enumerator/stopped.rb +14 -0
  151. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/enumerator.rb +4 -0
  152. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/hash/if_key.rb +12 -0
  153. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/hash/options_consumer.rb +10 -0
  154. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/hash/sym_keys_hash.rb +10 -0
  155. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/hash/to_struct.rb +10 -0
  156. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/hash.rb +5 -0
  157. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/kernel/ibr.rb +10 -0
  158. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/kernel/nyi.rb +10 -0
  159. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/kernel.rb +4 -0
  160. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/abstract_methods.rb +10 -0
  161. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/acts_as_abstract.rb +14 -0
  162. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/acts_as_immutable.rb +10 -0
  163. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/acts_as_instance_method.rb +10 -0
  164. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/common_concern.rb +9 -0
  165. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/compare_by.rb +9 -0
  166. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/context.rb +11 -0
  167. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/i18n_translate.rb +9 -0
  168. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/immutable.rb +11 -0
  169. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/listable.rb +10 -0
  170. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/module_parent.rb +5 -0
  171. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/patch.rb +9 -0
  172. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/require_sub.rb +9 -0
  173. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/simple_cache.rb +10 -0
  174. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/speaker.rb +9 -0
  175. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module.rb +4 -0
  176. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object/asserts.rb +25 -0
  177. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object/call_if_proc.rb +11 -0
  178. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object/compact.rb +20 -0
  179. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object/debug.rb +55 -0
  180. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object/i18n_translate.rb +13 -0
  181. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object/if_nil.rb +17 -0
  182. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object/if_present.rb +19 -0
  183. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object/if_respond.rb +22 -0
  184. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object/recursive_build.rb +12 -0
  185. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object/to_bool.rb +12 -0
  186. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object/to_pathname.rb +15 -0
  187. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object/to_sym_by_eac.rb +11 -0
  188. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object/to_uri.rb +15 -0
  189. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object.rb +5 -0
  190. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname/assert_parent.rb +12 -0
  191. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname/basename_noext.rb +10 -0
  192. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname/basename_sub.rb +13 -0
  193. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname/child_of.rb +16 -0
  194. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname/if_exist.rb +10 -0
  195. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname/mkpath_s.rb +12 -0
  196. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname/parent_n.rb +11 -0
  197. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname/readlink_r.rb +11 -0
  198. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname/reqdir_glob.rb +13 -0
  199. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname.rb +4 -0
  200. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/regexp/if_match.rb +16 -0
  201. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/regexp/to_parser.rb +10 -0
  202. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/regexp.rb +4 -0
  203. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/string/delimited.rb +16 -0
  204. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/string/inflector.rb +11 -0
  205. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/string.rb +4 -0
  206. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/time/required_zone.rb +11 -0
  207. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/time.rb +4 -0
  208. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches.rb +4 -0
  209. data/sub/eac_ruby_utils/lib/eac_ruby_utils/recursive_builder.rb +51 -0
  210. data/sub/eac_ruby_utils/lib/eac_ruby_utils/regexp_parser.rb +39 -0
  211. data/sub/eac_ruby_utils/lib/eac_ruby_utils/require_sub/base.rb +80 -0
  212. data/sub/eac_ruby_utils/lib/eac_ruby_utils/require_sub/sub_file.rb +59 -0
  213. data/sub/eac_ruby_utils/lib/eac_ruby_utils/require_sub.rb +11 -0
  214. data/sub/eac_ruby_utils/lib/eac_ruby_utils/rspec/default_setup.rb +20 -0
  215. data/sub/eac_ruby_utils/lib/eac_ruby_utils/rspec/setup/conditionals.rb +17 -0
  216. data/sub/eac_ruby_utils/lib/eac_ruby_utils/rspec/setup/setup_manager.rb +17 -0
  217. data/sub/eac_ruby_utils/lib/eac_ruby_utils/rspec/setup.rb +27 -0
  218. data/sub/eac_ruby_utils/lib/eac_ruby_utils/rspec/setup_manager.rb +49 -0
  219. data/sub/eac_ruby_utils/lib/eac_ruby_utils/rspec/stub_speaker.rb +39 -0
  220. data/sub/eac_ruby_utils/lib/eac_ruby_utils/rspec.rb +9 -0
  221. data/sub/eac_ruby_utils/lib/eac_ruby_utils/ruby/command.rb +32 -0
  222. data/sub/eac_ruby_utils/lib/eac_ruby_utils/ruby/on_clean_environment.rb +71 -0
  223. data/sub/eac_ruby_utils/lib/eac_ruby_utils/ruby/on_replace_objects/replace_instance_method.rb +36 -0
  224. data/sub/eac_ruby_utils/lib/eac_ruby_utils/ruby/on_replace_objects.rb +52 -0
  225. data/sub/eac_ruby_utils/lib/eac_ruby_utils/ruby.rb +9 -0
  226. data/sub/eac_ruby_utils/lib/eac_ruby_utils/settings_provider/setting_value.rb +79 -0
  227. data/sub/eac_ruby_utils/lib/eac_ruby_utils/settings_provider.rb +50 -0
  228. data/sub/eac_ruby_utils/lib/eac_ruby_utils/simple_cache.rb +77 -0
  229. data/sub/eac_ruby_utils/lib/eac_ruby_utils/speaker/receiver.rb +64 -0
  230. data/sub/eac_ruby_utils/lib/eac_ruby_utils/speaker/sender.rb +37 -0
  231. data/sub/eac_ruby_utils/lib/eac_ruby_utils/speaker.rb +16 -0
  232. data/sub/eac_ruby_utils/lib/eac_ruby_utils/static_method_class.rb +12 -0
  233. data/sub/eac_ruby_utils/lib/eac_ruby_utils/string_delimited.rb +70 -0
  234. data/sub/eac_ruby_utils/lib/eac_ruby_utils/struct.rb +63 -0
  235. data/sub/eac_ruby_utils/lib/eac_ruby_utils/unimplemented_method_error.rb +6 -0
  236. data/sub/eac_ruby_utils/lib/eac_ruby_utils/version.rb +5 -0
  237. data/sub/eac_ruby_utils/lib/eac_ruby_utils/wildcards.rb +26 -0
  238. data/sub/eac_ruby_utils/lib/eac_ruby_utils/yaml.rb +107 -0
  239. data/sub/eac_ruby_utils/lib/eac_ruby_utils.rb +6 -0
  240. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/acts_as_abstract_spec.rb +94 -0
  241. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/acts_as_immutable/array_accessor_spec.rb +43 -0
  242. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/acts_as_immutable/common_accessor_spec.rb +57 -0
  243. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/acts_as_immutable/hash_accessor_spec.rb +42 -0
  244. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/acts_as_immutable/set_accessor_spec.rb +43 -0
  245. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/arguments_consumer_spec.rb +17 -0
  246. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/bit_array_spec.rb +22 -0
  247. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/blank_not_blank_spec.rb +16 -0
  248. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/byte_spec.rb +54 -0
  249. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/common_concern_spec.rb +65 -0
  250. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/common_constructor_spec.rb +151 -0
  251. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/compact_spec.rb +21 -0
  252. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/compare_by_spec.rb +39 -0
  253. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/custom_format_spec.rb +60 -0
  254. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/enum_spec.rb +44 -0
  255. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/enumerables_methods_spec.rb +50 -0
  256. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/envs/command/base_example.rb +97 -0
  257. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/envs/command/local_env_spec.rb +11 -0
  258. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/envs/command/ssh_env_spec.rb +17 -0
  259. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/envs/executable_spec.rb +37 -0
  260. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/envs/ssh_env_spec.rb +25 -0
  261. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/fs/extname_spec.rb +18 -0
  262. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/fs/temp/directory_spec.rb +12 -0
  263. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/fs/temp_spec.rb +52 -0
  264. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/inflector_spec.rb +16 -0
  265. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/listable_spec.rb +225 -0
  266. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/local_time_zone_spec.rb +17 -0
  267. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/method_class_spec.rb +46 -0
  268. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/module_ancestors_variable/hash_spec.rb +57 -0
  269. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/module_ancestors_variable/set_spec.rb +57 -0
  270. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/options_consumer_spec.rb +80 -0
  271. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/addressable/uri/query_value_spec.rb +25 -0
  272. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/class/abstract_spec.rb +25 -0
  273. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/class/acts_as_abstract_spec.rb +14 -0
  274. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/class/method_class_spec.rb +20 -0
  275. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/class/self_included_modules_spec.rb +30 -0
  276. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/class/static_method_class_spec.rb +20 -0
  277. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/enumerable/boolean_combinations_spec.rb +39 -0
  278. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/enumerator/current_spec.rb +26 -0
  279. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/enumerator/stopped_spec.rb +32 -0
  280. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/hash/if_key_spec.rb +23 -0
  281. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/hash/options_consumer_spec.rb +17 -0
  282. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/hash/sym_keys_hash_spec.rb +13 -0
  283. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/module/compare_by_spec.rb +37 -0
  284. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/module/listable_spec.rb +15 -0
  285. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/module/simple_cache_spec.rb +15 -0
  286. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/module/speaker_spec.rb +15 -0
  287. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/object/call_if_proc_spec.rb +11 -0
  288. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/object/compact_spec.rb +20 -0
  289. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/object/if_present_spec.rb +13 -0
  290. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/object/recursive_build_spec.rb +62 -0
  291. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/object/template_spec_files/path/my_stub_with_template +1 -0
  292. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/pathname/assert_parent_spec.rb +21 -0
  293. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/pathname/basename_noext_spec.rb +26 -0
  294. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/pathname/basename_sub_spec.rb +17 -0
  295. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/pathname/child_of_spec.rb +26 -0
  296. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/pathname/parent_n_spec.rb +33 -0
  297. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/string/delimited_spec.rb +34 -0
  298. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/recursive_builder_spec.rb +65 -0
  299. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/require_sub/base_spec/stubbed_module_a.rb +6 -0
  300. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/require_sub/base_spec/stubbed_not_module.rb +6 -0
  301. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/require_sub/base_spec.rb +19 -0
  302. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/rspec/setup/setup_manager_spec.rb +17 -0
  303. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/ruby/on_clean_environment_spec.rb +31 -0
  304. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/ruby/on_replace_objects_spec.rb +65 -0
  305. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/settings_provider_spec.rb +64 -0
  306. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/simple_cache_spec.rb +129 -0
  307. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/static_method_class_spec.rb +44 -0
  308. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/struct_spec.rb +57 -0
  309. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/wildcards_spec.rb +27 -0
  310. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/yaml_spec.rb +76 -0
  311. data/sub/eac_ruby_utils/spec/locales/pt-BR.yml +58 -0
  312. data/sub/eac_ruby_utils/spec/rubocop_check_spec.rb +3 -0
  313. data/sub/eac_ruby_utils/spec/spec_helper.rb +15 -0
  314. metadata +317 -37
  315. data/sub/avm-eac_rails_base1/avm-eac_rails_base1.gemspec +0 -22
  316. data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/instances/apache_base.rb +0 -16
  317. data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/instances/apache_host.rb +0 -18
  318. data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/instances/apache_path.rb +0 -21
  319. data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/instances/base.rb +0 -50
  320. data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/instances/deploy.rb +0 -23
  321. data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/instances/processes/daemon.rb +0 -39
  322. data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/instances/processes/tasks_scheduler.rb +0 -27
  323. data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/instances/processes.rb +0 -13
  324. data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/instances/runners/bundle.rb +0 -28
  325. data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/instances/runners/code_runner.rb +0 -28
  326. data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/instances/runners/log.rb +0 -45
  327. data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/instances/runners/logs/clear.rb +0 -27
  328. data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/instances/runners/logs.rb +0 -19
  329. data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/instances/runners/rails_server.rb +0 -34
  330. data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/instances/runners/tasks_scheduler/systemd_unit.rb +0 -48
  331. data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/instances/runners/tasks_scheduler.rb +0 -19
  332. data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/instances/runners.rb +0 -13
  333. data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/instances/systemd_unit/service.rb +0 -72
  334. data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/instances/systemd_unit/tasks_scheduler_command.rb +0 -31
  335. data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/instances/systemd_unit.rb +0 -59
  336. data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/instances.rb +0 -11
  337. data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/runner_with/bundle.rb +0 -27
  338. data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/runner_with/rails_environment.rb +0 -47
  339. data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/sources/base.rb +0 -43
  340. data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/version.rb +0 -7
  341. data/sub/avm-eac_rails_base1/template/avm/eac_rails_base1/instances/apache_path/extra_content.conf +0 -5
  342. data/sub/avm-eac_rails_base1/template/avm/eac_rails_base1/instances/systemd_unit/tasks_scheduler.service +0 -12
  343. data/sub/avm-eac_rails_base1/template/avm/eac_rails_base1/instances/systemd_unit/tasks_scheduler_command.sh +0 -6
  344. /data/sub/{avm-eac_rails_base1 → eac_config}/Gemfile +0 -0
  345. /data/sub/{avm-eac_rails_base1 → eac_config}/spec/rubocop_spec.rb +0 -0
  346. /data/sub/{avm-eac_rails_base1 → eac_config}/spec/spec_helper.rb +0 -0
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/patches/class/common_constructor'
4
+ require 'eac_ruby_utils/inflector'
5
+
6
+ module EacRubyUtils
7
+ module Listable
8
+ class Item
9
+ common_constructor :list, :value, :key, :translation_required, default: [true]
10
+
11
+ def to_s
12
+ "I: #{list.item}, V: #{value}, K: #{key}"
13
+ end
14
+
15
+ def constant_name
16
+ ::EacRubyUtils::Inflector.variableize("#{list.item}_#{key}").upcase
17
+ end
18
+
19
+ def label
20
+ translate('label')
21
+ end
22
+
23
+ def description
24
+ translate('description')
25
+ end
26
+
27
+ # @return [Array] A two-item array in format `[label, value]`.
28
+ def to_option
29
+ [label, value]
30
+ end
31
+
32
+ def translation_required?
33
+ translation_required
34
+ end
35
+
36
+ private
37
+
38
+ def translate(translate_key)
39
+ full_translate_key = "#{list.i18n_key}.#{key}.#{translate_key}"
40
+ if !::I18n.exists?(full_translate_key) && !translation_required?
41
+ ''
42
+ else
43
+ ::I18n.t(full_translate_key)
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,129 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/listable/item'
4
+
5
+ module EacRubyUtils
6
+ module Listable
7
+ class List
8
+ BLANK_VALUE = nil
9
+ BLANK_KEY = :__blank
10
+
11
+ attr_reader :item
12
+
13
+ def initialize(lists, item, labels)
14
+ @lists = lists
15
+ @item = item
16
+ @values = build_values(labels)
17
+ apply_constants
18
+ end
19
+
20
+ def blank_value
21
+ @blank_value ||= ::EacRubyUtils::Listable::Item.new(self, BLANK_VALUE, BLANK_KEY, false)
22
+ end
23
+
24
+ def each_value(&block)
25
+ values.each(&block)
26
+ end
27
+
28
+ # @return [EacRubyUtils::Listable::Item, nil]
29
+ def item_by_value(value)
30
+ @values.values.find { |item| item.value == value }
31
+ end
32
+
33
+ # @return [EacRubyUtils::Listable::Item]
34
+ def item_by_value!(value)
35
+ item_by_value(value) || raise(::KeyError, "Value not found: #{value}")
36
+ end
37
+
38
+ def values
39
+ @values.values.map(&:value)
40
+ end
41
+
42
+ def values_with_blank
43
+ [blank_value.value] + values
44
+ end
45
+
46
+ def options
47
+ @values.values.map(&:to_option)
48
+ end
49
+
50
+ def options_with_blank
51
+ [blank_value.to_option] + options
52
+ end
53
+
54
+ def method_missing(name, *args, &block)
55
+ list = find_list_by_method(name)
56
+ list || super
57
+ end
58
+
59
+ def respond_to_missing?(name, include_all = false)
60
+ find_list_by_method(name) || super
61
+ end
62
+
63
+ def hash_keys_validate!(hash, error_class = ::StandardError)
64
+ hash.each_key { |key| value_validate!(key, error_class) }
65
+ hash
66
+ end
67
+
68
+ def i18n_key
69
+ "eac_ruby_utils.listable.#{class_i18n_key}.#{item}"
70
+ end
71
+
72
+ # @return [EacRubyUtils::Listable::Item, nil]
73
+ def instance_value(instance)
74
+ v = instance.send(item)
75
+ return blank_value if v.blank?
76
+ return @values[v] if @values.key?(v)
77
+
78
+ raise "List value unkown: \"#{v}\" (Source: #{@lists.source}, Item: #{item}, Instance: " \
79
+ "#{instance.to_debug}, Values: #{@values.keys})"
80
+ end
81
+
82
+ def value_valid?(value)
83
+ values.include?(value)
84
+ end
85
+
86
+ def value_validate!(value, error_class = ::StandardError)
87
+ return value if value_valid?(value)
88
+
89
+ raise(error_class, "Invalid value: \"#{value}\" (Valid: #{values_to_s})")
90
+ end
91
+
92
+ def values_to_s
93
+ values.map { |v| "\"#{v}\"" }.join(', ')
94
+ end
95
+
96
+ private
97
+
98
+ def class_i18n_key
99
+ @lists.source.name.underscore.to_sym
100
+ end
101
+
102
+ def find_list_by_method(method)
103
+ @values.each_value do |v|
104
+ return v if method.to_s == "value_#{v.key}"
105
+ end
106
+ nil
107
+ end
108
+
109
+ def constants
110
+ labels.each_with_index.map { |v, i| ["#{item.upcase}_#{v.upcase}", values[i]] }
111
+ end
112
+
113
+ def apply_constants
114
+ @values.each_value do |v|
115
+ @lists.source.const_set(v.constant_name, v.value)
116
+ end
117
+ end
118
+
119
+ def build_values(labels)
120
+ vs = {}
121
+ parse_labels(labels).each do |value, key|
122
+ v = ::EacRubyUtils::Listable::Item.new(self, value, key)
123
+ vs[v.value] = v
124
+ end
125
+ vs
126
+ end
127
+ end
128
+ end
129
+ end
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support/hash_with_indifferent_access'
4
+ require 'active_support/core_ext/string/inflections'
5
+ require_relative 'integer_list'
6
+ require_relative 'string_list'
7
+ require_relative 'symbol_list'
8
+
9
+ module EacRubyUtils
10
+ module Listable
11
+ class Lists
12
+ attr_reader :source
13
+
14
+ def initialize(source)
15
+ @source = source
16
+ end
17
+
18
+ %w[integer string symbol].each do |list_type|
19
+ define_method "add_#{list_type}" do |item, *labels|
20
+ add(::EacRubyUtils::Listable.const_get("#{list_type}_list".camelize), item, labels)
21
+ end
22
+ end
23
+
24
+ def method_missing(name, *args, &block)
25
+ list = find_list_by_method(name)
26
+ list || super
27
+ end
28
+
29
+ def respond_to_missing?(name, include_all = false)
30
+ find_list_by_method(name) || super
31
+ end
32
+
33
+ def acts_as_listable_items
34
+ @acts_as_listable_items ||= ActiveSupport::HashWithIndifferentAccess.new
35
+ end
36
+
37
+ private
38
+
39
+ def add(list_class, item, labels)
40
+ acts_as_listable_items[item] = list_class.new(self, item, labels)
41
+ end
42
+
43
+ def find_list_by_method(method)
44
+ acts_as_listable_items.each do |item, list|
45
+ return list if method.to_sym == item.to_sym
46
+ end
47
+ nil
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'list'
4
+
5
+ module EacRubyUtils
6
+ module Listable
7
+ class StringList < ::EacRubyUtils::Listable::List
8
+ protected
9
+
10
+ def parse_labels(labels)
11
+ if labels.first.is_a?(Hash)
12
+ labels.first.to_h { |k, v| [k.to_s, v.to_s] }
13
+ else
14
+ labels.to_h { |v| [v.to_s, v.to_s] }
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'list'
4
+
5
+ module EacRubyUtils
6
+ module Listable
7
+ class SymbolList < ::EacRubyUtils::Listable::List
8
+ protected
9
+
10
+ def parse_labels(labels)
11
+ if labels.first.is_a?(Hash)
12
+ labels.first.to_h { |k, v| [k.to_sym, v.to_sym] }
13
+ else
14
+ labels.to_h { |v| [v.to_sym, v.to_sym] }
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support/concern'
4
+ Dir["#{__dir__}/#{File.basename(__FILE__, '.*')}/*.rb"].sort.each do |partial|
5
+ require partial
6
+ end
7
+
8
+ module EacRubyUtils
9
+ module Listable
10
+ extend ActiveSupport::Concern
11
+
12
+ included do
13
+ extend(ClassMethods)
14
+ include(InstanceMethods)
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support/core_ext/object/blank'
4
+ require 'active_support/values/time_zone'
5
+
6
+ module EacRubyUtils
7
+ module LocalTimeZone
8
+ DEBIAN_CONFIG_PATH = '/etc/timezone'
9
+
10
+ class << self
11
+ TIMEDATECTL_TIMEZONE_LINE_PATTERN = %r{\s*Time zone:\s*(\S+/\S+)\s}.freeze
12
+
13
+ # @return [ActiveSupport::TimeZone]
14
+ def auto
15
+ %w[tz_env debian_config offset].lazy.map { |s| send("by_#{s}") }.find(&:present?)
16
+ end
17
+
18
+ def auto_set
19
+ ::Time.zone = auto
20
+ end
21
+
22
+ # @return [ActiveSupport::TimeZone]
23
+ def by_debian_config
24
+ path = ::Pathname.new(DEBIAN_CONFIG_PATH)
25
+ path.exist? ? path.read.strip.if_present { |v| ::ActiveSupport::TimeZone[v] } : nil
26
+ end
27
+
28
+ # @return [ActiveSupport::TimeZone]
29
+ def by_offset
30
+ ::ActiveSupport::TimeZone[::Time.now.getlocal.gmt_offset]
31
+ end
32
+
33
+ # @return [ActiveSupport::TimeZone]
34
+ def by_timedatectl
35
+ executable = ::EacRubyUtils::Envs.local.executable('timedatectl', '--version')
36
+ return nil unless executable.exist?
37
+
38
+ TIMEDATECTL_TIMEZONE_LINE_PATTERN.if_match(executable.command.execute!) { |m| m[1] }
39
+ .if_present { |v| ::ActiveSupport::TimeZone[v] }
40
+ end
41
+
42
+ # @return [ActiveSupport::TimeZone]
43
+ def by_tz_env
44
+ ENV['TZ'].presence
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/locales/from_gem'
4
+ EacRubyUtils::Locales::FromGem.include_all
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'i18n'
4
+ require 'eac_ruby_utils/patches/class/common_constructor'
5
+ require 'eac_ruby_utils/patches/object/to_pathname'
6
+
7
+ module EacRubyUtils
8
+ module Locales
9
+ class FromGem
10
+ class << self
11
+ def include_all(i18n_obj = nil)
12
+ ::Gem::Specification.each { |gemspec| new(gemspec, i18n_obj).include }
13
+ end
14
+ end
15
+
16
+ LOCALES_DIR_SUBPATH = 'locale'
17
+ LOCALES_FILES_GLOB_PATTERNS = %w[*.yaml *.yml].freeze
18
+
19
+ common_constructor :gemspec, :i18n_obj, default: [nil] do
20
+ self.i18n_obj ||= ::I18n
21
+ end
22
+
23
+ # @return [Boolean]
24
+ delegate :exist?, to: :path
25
+
26
+ # @return [Pathname, nil]
27
+ def include
28
+ return nil unless exist?
29
+
30
+ ::I18n.load_path += paths_to_load.map(&:to_path)
31
+ path
32
+ end
33
+
34
+ # @return [Pathname]
35
+ def path
36
+ gemspec.gem_dir.to_pathname.join(LOCALES_DIR_SUBPATH)
37
+ end
38
+
39
+ # @return [Pathname]
40
+ def paths_to_load
41
+ return [] unless exist?
42
+
43
+ LOCALES_FILES_GLOB_PATTERNS.inject([]) { |a, e| a + path.glob(e) }
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,74 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support/core_ext/string/inflections'
4
+ require 'eac_ruby_utils/common_constructor'
5
+ require 'i18n'
6
+
7
+ module EacRubyUtils
8
+ module Locales
9
+ class ModuleI18nTranslate
10
+ TRANSLATE_LOCALE_KEY = :__locale
11
+
12
+ common_constructor :the_module, :entry_suffix, :values, default: [{}]
13
+
14
+ def ancestor_i18n_translate(ancestor)
15
+ t = self.class.new(ancestor, entry_suffix, values)
16
+ t.exists? ? t.i18n_translate : nil
17
+ end
18
+
19
+ def ancestors_i18n_translate
20
+ the_module.ancestors.lazy.map { |v| ancestor_i18n_translate(v) }.find(&:present?)
21
+ end
22
+
23
+ def exists?
24
+ ::I18n.exists?(i18n_key)
25
+ end
26
+
27
+ def i18n_key
28
+ "#{module_entry_prefix}.#{entry_suffix}"
29
+ end
30
+
31
+ def i18n_options
32
+ values.except(TRANSLATE_LOCALE_KEY)
33
+ end
34
+
35
+ def i18n_translate
36
+ ::I18n.t(i18n_key, i18n_options)
37
+ end
38
+
39
+ def locale
40
+ values[TRANSLATE_LOCALE_KEY]
41
+ end
42
+
43
+ def module_entry_prefix
44
+ the_module.name.underscore.gsub('/', '.')
45
+ end
46
+
47
+ def on_locale(&block)
48
+ if locale.present?
49
+ on_present_locale(&block)
50
+ else
51
+ block.call
52
+ end
53
+ end
54
+
55
+ def result
56
+ on_locale do
57
+ ancestors_i18n_translate || i18n_translate
58
+ end
59
+ end
60
+
61
+ private
62
+
63
+ def on_present_locale(&block)
64
+ old_locale = ::I18n.locale
65
+ begin
66
+ ::I18n.locale = locale
67
+ block.call
68
+ ensure
69
+ ::I18n.locale = old_locale
70
+ end
71
+ end
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/require_sub'
4
+
5
+ module EacRubyUtils
6
+ module Locales
7
+ ::EacRubyUtils.require_sub __FILE__
8
+ end
9
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/acts_as_instance_method'
4
+ require 'eac_ruby_utils/patches/class/common_constructor'
5
+ require 'eac_ruby_utils/patches/module/common_concern'
6
+
7
+ module EacRubyUtils
8
+ module MethodClass
9
+ common_concern do
10
+ ::EacRubyUtils::MethodClass::Setup.new(self)
11
+ end
12
+
13
+ class Setup < ::EacRubyUtils::ActsAsInstanceMethod
14
+ common_constructor :method_class, :static_method, default: [false],
15
+ super_args: -> { [method_class] } do
16
+ perform
17
+ end
18
+
19
+ def perform
20
+ setup
21
+ end
22
+
23
+ def default_sender_module
24
+ r = super
25
+ r = r.singleton_class if static_method
26
+ r
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/patches/class/common_constructor'
4
+
5
+ module EacRubyUtils
6
+ module ModuleAncestorsVariable
7
+ class Base
8
+ common_constructor :the_module, :method_name, :initial_value
9
+
10
+ # @param current [Object]
11
+ # @param other [Object]
12
+ # @return [Object]
13
+ def merge_operation(current, other)
14
+ current.merge(other)
15
+ end
16
+
17
+ # return [Hash]
18
+ def ancestors_variable
19
+ the_module.ancestors.inject(initial_value.dup) do |a, e|
20
+ if e.respond_to?(method_name, true)
21
+ merge_operation(a, e.send(method_name).send(:self_variable))
22
+ else
23
+ a
24
+ end
25
+ end
26
+ end
27
+
28
+ # @return [Hash]
29
+ def self_variable
30
+ @self_variable ||= initial_value.dup
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support/core_ext/module/delegation'
4
+ require 'eac_ruby_utils/module_ancestors_variable/base'
5
+ require 'eac_ruby_utils/enumerables_methods'
6
+
7
+ module EacRubyUtils
8
+ module ModuleAncestorsVariable
9
+ class Hash < ::EacRubyUtils::ModuleAncestorsVariable::Base
10
+ INITIAL_VALUE = {}.freeze
11
+
12
+ def initialize(the_module, method_name)
13
+ super(the_module, method_name, INITIAL_VALUE)
14
+ end
15
+
16
+ delegate(*::EacRubyUtils::EnumerablesMethods::HASH_READ_METHODS, to: :ancestors_variable)
17
+ delegate(*::EacRubyUtils::EnumerablesMethods::HASH_WRITE_METHODS, to: :self_variable)
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support/core_ext/module/delegation'
4
+ require 'eac_ruby_utils/module_ancestors_variable/base'
5
+
6
+ module EacRubyUtils
7
+ module ModuleAncestorsVariable
8
+ class Set < ::EacRubyUtils::ModuleAncestorsVariable::Base
9
+ INITIAL_VALUE = ::Set.new
10
+
11
+ def initialize(the_module, method_name)
12
+ super(the_module, method_name, INITIAL_VALUE)
13
+ end
14
+
15
+ delegate(*::EacRubyUtils::EnumerablesMethods::SET_READ_METHODS, to: :ancestors_variable)
16
+ delegate(*::EacRubyUtils::EnumerablesMethods::SET_WRITE_METHODS, to: :self_variable)
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/patches/module/require_sub'
4
+
5
+ module EacRubyUtils
6
+ module ModuleAncestorsVariable
7
+ require_sub __FILE__
8
+ end
9
+ end
@@ -0,0 +1,62 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support/core_ext/hash/indifferent_access'
4
+ require 'ostruct'
5
+
6
+ module EacRubyUtils
7
+ class OptionsConsumer
8
+ DEFAULT_OPTIONS = { validate: true, ostruct: false }.with_indifferent_access.freeze
9
+
10
+ def initialize(data)
11
+ @data = data.with_indifferent_access
12
+ end
13
+
14
+ def consume(key, default_value = nil, &block)
15
+ return default_value unless data.key?(key)
16
+
17
+ value = data.delete(key)
18
+ value = yield(value) if block
19
+ value
20
+ end
21
+
22
+ # If last argument is a Hash it is used a options.
23
+ # Options:
24
+ # * +validate+: validate after consume.
25
+ # * +ostruct+: return a [OpenStruct] instead a [Hash].
26
+ # @return [Hash] (Default) or [OpenStruct].
27
+ def consume_all(*keys)
28
+ options = consume_all_extract_options(keys)
29
+ result = consume_all_build_result(keys, options.fetch(:ostruct))
30
+ validate if options.fetch(:validate)
31
+ result
32
+ end
33
+
34
+ def validate
35
+ return if data.empty?
36
+
37
+ raise "Invalid keys: #{data.keys}"
38
+ end
39
+
40
+ def left_data
41
+ data.dup
42
+ end
43
+
44
+ private
45
+
46
+ attr_reader :data
47
+
48
+ def consume_all_extract_options(keys)
49
+ options = DEFAULT_OPTIONS
50
+ options = options.merge(keys.pop.with_indifferent_access) if keys.last.is_a?(Hash)
51
+ options
52
+ end
53
+
54
+ def consume_all_build_result(keys, ostruct)
55
+ if ostruct
56
+ ::OpenStruct.new(keys.index_with { |key| consume(key) }) # rubocop:disable Style/OpenStructUse
57
+ else
58
+ keys.map { |key| consume(key) }
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EacRubyUtils
4
+ class << self
5
+ def patch(target, patch)
6
+ return if target.included_modules.include?(patch)
7
+
8
+ target.send(:include, patch)
9
+ end
10
+ end
11
+ end