eac_tools 0.111.1 → 0.112.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 (374) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +37 -22
  3. data/eac_tools.gemspec +3 -3
  4. data/lib/eac_tools/version.rb +1 -1
  5. data/sub/avm/Gemfile +8 -0
  6. data/sub/avm/avm.gemspec +27 -0
  7. data/sub/avm/lib/avm/application_scms/base.rb +37 -0
  8. data/sub/avm/lib/avm/application_stereotypes/base.rb +29 -0
  9. data/sub/avm/lib/avm/applications/base/auto_local_source_path.rb +22 -0
  10. data/sub/avm/lib/avm/applications/base/local_instance.rb +28 -0
  11. data/sub/avm/lib/avm/applications/base/local_source.rb +31 -0
  12. data/sub/avm/lib/avm/applications/base/naming.rb +26 -0
  13. data/sub/avm/lib/avm/applications/base/organization.rb +27 -0
  14. data/sub/avm/lib/avm/applications/base/publishing.rb +39 -0
  15. data/sub/avm/lib/avm/applications/base/scm.rb +24 -0
  16. data/sub/avm/lib/avm/applications/base/stereotype.rb +29 -0
  17. data/sub/avm/lib/avm/applications/base.rb +34 -0
  18. data/sub/avm/lib/avm/data/callbacks.rb +36 -0
  19. data/sub/avm/lib/avm/data/clearer.rb +17 -0
  20. data/sub/avm/lib/avm/data/dumper.rb +137 -0
  21. data/sub/avm/lib/avm/data/loader.rb +23 -0
  22. data/sub/avm/lib/avm/data/package/base_performer.rb +36 -0
  23. data/sub/avm/lib/avm/data/package/build_directory.rb +25 -0
  24. data/sub/avm/lib/avm/data/package/clear.rb +19 -0
  25. data/sub/avm/lib/avm/data/package/dump.rb +42 -0
  26. data/sub/avm/lib/avm/data/package/load.rb +33 -0
  27. data/sub/avm/lib/avm/data/package.rb +64 -0
  28. data/sub/avm/lib/avm/data/performer.rb +45 -0
  29. data/sub/avm/lib/avm/data/rotate.rb +106 -0
  30. data/sub/avm/lib/avm/data/unit.rb +44 -0
  31. data/sub/avm/lib/avm/data/unit_with_commands.rb +48 -0
  32. data/sub/avm/lib/avm/docker/container.rb +47 -0
  33. data/sub/avm/lib/avm/docker/image.rb +70 -0
  34. data/sub/avm/lib/avm/docker/runner.rb +129 -0
  35. data/sub/avm/lib/avm/entries/auto_values/entry.rb +36 -0
  36. data/sub/avm/lib/avm/entries/auto_values/uri_entry.rb +21 -0
  37. data/sub/avm/lib/avm/entries/base/inherited_entry_value.rb +42 -0
  38. data/sub/avm/lib/avm/entries/base/uri_component_entry_value/default_value.rb +24 -0
  39. data/sub/avm/lib/avm/entries/base/uri_component_entry_value/inherited_value.rb +35 -0
  40. data/sub/avm/lib/avm/entries/base/uri_component_entry_value/url_entry_value.rb +27 -0
  41. data/sub/avm/lib/avm/entries/base/uri_component_entry_value.rb +40 -0
  42. data/sub/avm/lib/avm/entries/base/uri_components_entries_values/component_factory.rb +40 -0
  43. data/sub/avm/lib/avm/entries/base/uri_components_entries_values/generic_component.rb +59 -0
  44. data/sub/avm/lib/avm/entries/base/uri_components_entries_values/path_component.rb +16 -0
  45. data/sub/avm/lib/avm/entries/base/uri_components_entries_values/url_component.rb +22 -0
  46. data/sub/avm/lib/avm/entries/base/uri_components_entries_values.rb +23 -0
  47. data/sub/avm/lib/avm/entries/base.rb +53 -0
  48. data/sub/avm/lib/avm/entries/entry/no_context_entry.rb +21 -0
  49. data/sub/avm/lib/avm/entries/entry.rb +69 -0
  50. data/sub/avm/lib/avm/entries/jobs/base.rb +58 -0
  51. data/sub/avm/lib/avm/entries/jobs/variables_source/read_entry.rb +48 -0
  52. data/sub/avm/lib/avm/entries/jobs/variables_source.rb +13 -0
  53. data/sub/avm/lib/avm/entries/jobs/with_variables_source.rb +13 -0
  54. data/sub/avm/lib/avm/entries/keys_constants_set.rb +41 -0
  55. data/sub/avm/lib/avm/entries/uri_builder.rb +87 -0
  56. data/sub/avm/lib/avm/executables.rb +21 -0
  57. data/sub/avm/lib/avm/file_formats/base.rb +34 -0
  58. data/sub/avm/lib/avm/file_formats/file_result.rb +11 -0
  59. data/sub/avm/lib/avm/file_formats/search_formatter.rb +83 -0
  60. data/sub/avm/lib/avm/file_formats/unknown.rb +15 -0
  61. data/sub/avm/lib/avm/file_formats/utf8_assert.rb +72 -0
  62. data/sub/avm/lib/avm/files/appendable/file_content.rb +28 -0
  63. data/sub/avm/lib/avm/files/appendable/plain_directory.rb +27 -0
  64. data/sub/avm/lib/avm/files/appendable/resource_base.rb +17 -0
  65. data/sub/avm/lib/avm/files/appendable/tar_output_command.rb +27 -0
  66. data/sub/avm/lib/avm/files/appendable/templatized_directory.rb +36 -0
  67. data/sub/avm/lib/avm/files/appendable.rb +51 -0
  68. data/sub/avm/lib/avm/files/appender.rb +9 -0
  69. data/sub/avm/lib/avm/files/deploy.rb +70 -0
  70. data/sub/avm/lib/avm/files/text_replacer/gsub.rb +22 -0
  71. data/sub/avm/lib/avm/files/text_replacer.rb +29 -0
  72. data/sub/avm/lib/avm/instances/base/auto_values/data.rb +28 -0
  73. data/sub/avm/lib/avm/instances/base/auto_values/database.rb +60 -0
  74. data/sub/avm/lib/avm/instances/base/auto_values/mailer.rb +31 -0
  75. data/sub/avm/lib/avm/instances/base/auto_values/source.rb +16 -0
  76. data/sub/avm/lib/avm/instances/base/auto_values.rb +12 -0
  77. data/sub/avm/lib/avm/instances/base/dockerizable.rb +41 -0
  78. data/sub/avm/lib/avm/instances/base/entry_keys.rb +25 -0
  79. data/sub/avm/lib/avm/instances/base/install.rb +28 -0
  80. data/sub/avm/lib/avm/instances/base/processes.rb +25 -0
  81. data/sub/avm/lib/avm/instances/base/production.rb +33 -0
  82. data/sub/avm/lib/avm/instances/base/subcommand_parent.rb +23 -0
  83. data/sub/avm/lib/avm/instances/base/web.rb +15 -0
  84. data/sub/avm/lib/avm/instances/base.rb +70 -0
  85. data/sub/avm/lib/avm/instances/data/files_unit.rb +57 -0
  86. data/sub/avm/lib/avm/instances/data/loading_denied_error.rb +10 -0
  87. data/sub/avm/lib/avm/instances/data/package.rb +25 -0
  88. data/sub/avm/lib/avm/instances/data/unit.rb +36 -0
  89. data/sub/avm/lib/avm/instances/docker_image.rb +13 -0
  90. data/sub/avm/lib/avm/instances/entry_keys.rb +39 -0
  91. data/sub/avm/lib/avm/instances/ids.rb +28 -0
  92. data/sub/avm/lib/avm/instances/process.rb +29 -0
  93. data/sub/avm/lib/avm/instances/runner.rb +34 -0
  94. data/sub/avm/lib/avm/launcher/context/instance_collector.rb +44 -0
  95. data/sub/avm/lib/avm/launcher/context/instance_discovery/root_instance_paths.rb +51 -0
  96. data/sub/avm/lib/avm/launcher/context/instance_discovery.rb +53 -0
  97. data/sub/avm/lib/avm/launcher/context/instance_manager/cached_instance.rb +34 -0
  98. data/sub/avm/lib/avm/launcher/context/instance_manager/cached_instances.rb +32 -0
  99. data/sub/avm/lib/avm/launcher/context/instance_manager.rb +74 -0
  100. data/sub/avm/lib/avm/launcher/context/settings.rb +51 -0
  101. data/sub/avm/lib/avm/launcher/context.rb +83 -0
  102. data/sub/avm/lib/avm/launcher/errors/base.rb +10 -0
  103. data/sub/avm/lib/avm/launcher/errors/non_project.rb +13 -0
  104. data/sub/avm/lib/avm/launcher/instances/base/cache.rb +43 -0
  105. data/sub/avm/lib/avm/launcher/instances/base/publishing.rb +53 -0
  106. data/sub/avm/lib/avm/launcher/instances/base.rb +77 -0
  107. data/sub/avm/lib/avm/launcher/instances/error.rb +10 -0
  108. data/sub/avm/lib/avm/launcher/instances/runner_helper.rb +43 -0
  109. data/sub/avm/lib/avm/launcher/instances/settings.rb +24 -0
  110. data/sub/avm/lib/avm/launcher/paths/logical.rb +76 -0
  111. data/sub/avm/lib/avm/launcher/paths/real.rb +44 -0
  112. data/sub/avm/lib/avm/launcher/project.rb +15 -0
  113. data/sub/avm/lib/avm/launcher/publish/base.rb +44 -0
  114. data/sub/avm/lib/avm/launcher/publish/check_result.rb +64 -0
  115. data/sub/avm/lib/avm/launcher/stereotype.rb +63 -0
  116. data/sub/avm/lib/avm/patches/eac_config/entry_path.rb +44 -0
  117. data/sub/avm/lib/avm/path_string.rb +27 -0
  118. data/sub/avm/lib/avm/registry/application_scms.rb +13 -0
  119. data/sub/avm/lib/avm/registry/application_stereotypes/build_available.rb +45 -0
  120. data/sub/avm/lib/avm/registry/application_stereotypes/stereotype_builder.rb +30 -0
  121. data/sub/avm/lib/avm/registry/application_stereotypes.rb +42 -0
  122. data/sub/avm/lib/avm/registry/applications.rb +35 -0
  123. data/sub/avm/lib/avm/registry/base.rb +26 -0
  124. data/sub/avm/lib/avm/registry/config_objects.rb +15 -0
  125. data/sub/avm/lib/avm/registry/detection_error.rb +8 -0
  126. data/sub/avm/lib/avm/registry/file_formats.rb +17 -0
  127. data/sub/avm/lib/avm/registry/from_gems.rb +67 -0
  128. data/sub/avm/lib/avm/registry/instances.rb +13 -0
  129. data/sub/avm/lib/avm/registry/launcher_stereotypes.rb +8 -0
  130. data/sub/avm/lib/avm/registry/runners.rb +8 -0
  131. data/sub/avm/lib/avm/registry/scms.rb +8 -0
  132. data/sub/avm/lib/avm/registry/source_generators.rb +14 -0
  133. data/sub/avm/lib/avm/registry/sources.rb +38 -0
  134. data/sub/avm/lib/avm/registry/with_path/cache.rb +28 -0
  135. data/sub/avm/lib/avm/registry/with_path.rb +44 -0
  136. data/sub/avm/lib/avm/registry.rb +31 -0
  137. data/sub/avm/lib/avm/result.rb +80 -0
  138. data/sub/avm/lib/avm/rspec/launcher_controller.rb +91 -0
  139. data/sub/avm/lib/avm/rspec/setup/launcher.rb +18 -0
  140. data/sub/avm/lib/avm/rspec/setup/source_generator.rb +20 -0
  141. data/sub/avm/lib/avm/rspec/setup.rb +32 -0
  142. data/sub/avm/lib/avm/rspec/shared_examples/avm_file_format_file_resource_name.rb +13 -0
  143. data/sub/avm/lib/avm/rspec/shared_examples/avm_file_formats_with_fixtures.rb +28 -0
  144. data/sub/avm/lib/avm/rspec/shared_examples/avm_source_generated.rb +23 -0
  145. data/sub/avm/lib/avm/rspec/shared_examples/entries_values.rb +19 -0
  146. data/sub/avm/lib/avm/rspec/shared_examples/in_avm_registry.rb +9 -0
  147. data/sub/avm/lib/avm/rspec/shared_examples/not_in_avm_registry.rb +12 -0
  148. data/sub/avm/lib/avm/rspec/shared_examples/with_config.rb +9 -0
  149. data/sub/avm/lib/avm/rspec/shared_examples/with_launcher.rb +13 -0
  150. data/sub/avm/lib/avm/runner_with/file_replacer.rb +28 -0
  151. data/sub/avm/lib/avm/runner_with/filesystem_renamer.rb +99 -0
  152. data/sub/avm/lib/avm/runner_with/filesystem_traverser.rb +49 -0
  153. data/sub/avm/lib/avm/runners/base.rb +25 -0
  154. data/sub/avm/lib/avm/scms/auto_commit/file_resource_name.rb +47 -0
  155. data/sub/avm/lib/avm/scms/auto_commit/for_file.rb +79 -0
  156. data/sub/avm/lib/avm/scms/auto_commit/rules/base.rb +37 -0
  157. data/sub/avm/lib/avm/scms/auto_commit/rules/last.rb +17 -0
  158. data/sub/avm/lib/avm/scms/auto_commit/rules/manual.rb +38 -0
  159. data/sub/avm/lib/avm/scms/auto_commit/rules/new.rb +21 -0
  160. data/sub/avm/lib/avm/scms/auto_commit/rules/nth.rb +29 -0
  161. data/sub/avm/lib/avm/scms/auto_commit/rules/unique.rb +19 -0
  162. data/sub/avm/lib/avm/scms/auto_commit/rules.rb +32 -0
  163. data/sub/avm/lib/avm/scms/base/branches.rb +20 -0
  164. data/sub/avm/lib/avm/scms/base/commits.rb +32 -0
  165. data/sub/avm/lib/avm/scms/base/milestones.rb +19 -0
  166. data/sub/avm/lib/avm/scms/base/remotes.rb +20 -0
  167. data/sub/avm/lib/avm/scms/base.rb +59 -0
  168. data/sub/avm/lib/avm/scms/branch.rb +24 -0
  169. data/sub/avm/lib/avm/scms/changed_file.rb +46 -0
  170. data/sub/avm/lib/avm/scms/commit.rb +64 -0
  171. data/sub/avm/lib/avm/scms/commit_info.rb +37 -0
  172. data/sub/avm/lib/avm/scms/inflector.rb +22 -0
  173. data/sub/avm/lib/avm/scms/interval.rb +16 -0
  174. data/sub/avm/lib/avm/scms/null/commit.rb +11 -0
  175. data/sub/avm/lib/avm/scms/null.rb +16 -0
  176. data/sub/avm/lib/avm/scms/remote.rb +9 -0
  177. data/sub/avm/lib/avm/self/docker_image.rb +11 -0
  178. data/sub/avm/lib/avm/self/instance/entry_keys.rb +12 -0
  179. data/sub/avm/lib/avm/self/instance.rb +27 -0
  180. data/sub/avm/lib/avm/source_generators/base.rb +69 -0
  181. data/sub/avm/lib/avm/source_generators/option.rb +11 -0
  182. data/sub/avm/lib/avm/source_generators/option_list.rb +29 -0
  183. data/sub/avm/lib/avm/source_generators/runner.rb +55 -0
  184. data/sub/avm/lib/avm/sources/auto_commit/for_file.rb +29 -0
  185. data/sub/avm/lib/avm/sources/base/application.rb +32 -0
  186. data/sub/avm/lib/avm/sources/base/configuration.rb +89 -0
  187. data/sub/avm/lib/avm/sources/base/instance.rb +13 -0
  188. data/sub/avm/lib/avm/sources/base/locale.rb +30 -0
  189. data/sub/avm/lib/avm/sources/base/organizational.rb +30 -0
  190. data/sub/avm/lib/avm/sources/base/parent.rb +26 -0
  191. data/sub/avm/lib/avm/sources/base/stereotype.rb +16 -0
  192. data/sub/avm/lib/avm/sources/base/sub/remove.rb +36 -0
  193. data/sub/avm/lib/avm/sources/base/sub.rb +23 -0
  194. data/sub/avm/lib/avm/sources/base/subs.rb +63 -0
  195. data/sub/avm/lib/avm/sources/base/subs_paths.rb +30 -0
  196. data/sub/avm/lib/avm/sources/base/testing.rb +67 -0
  197. data/sub/avm/lib/avm/sources/base/update.rb +37 -0
  198. data/sub/avm/lib/avm/sources/base/update_sub.rb +55 -0
  199. data/sub/avm/lib/avm/sources/base/update_subs.rb +17 -0
  200. data/sub/avm/lib/avm/sources/base/version_bump.rb +26 -0
  201. data/sub/avm/lib/avm/sources/base.rb +56 -0
  202. data/sub/avm/lib/avm/sources/configuration/rubocop.rb +26 -0
  203. data/sub/avm/lib/avm/sources/configuration.rb +57 -0
  204. data/sub/avm/lib/avm/sources/issues/deliver.rb +51 -0
  205. data/sub/avm/lib/avm/sources/runner.rb +38 -0
  206. data/sub/avm/lib/avm/sources/tests/builder.rb +91 -0
  207. data/sub/avm/lib/avm/sources/tests/performer.rb +32 -0
  208. data/sub/avm/lib/avm/sources/tests/result.rb +13 -0
  209. data/sub/avm/lib/avm/sources/tests/single.rb +71 -0
  210. data/sub/avm/lib/avm/sources/update_error.rb +8 -0
  211. data/sub/avm/lib/avm/sync.rb +90 -0
  212. data/sub/avm/lib/avm/version.rb +5 -0
  213. data/sub/avm/lib/avm/version_number.rb +45 -0
  214. data/sub/avm/lib/avm/with/application_stereotype.rb +29 -0
  215. data/sub/avm/lib/avm/with/extra_subcommands.rb +41 -0
  216. data/sub/avm/lib/avm.rb +18 -0
  217. data/sub/avm/locale/en.yml +6 -0
  218. data/sub/avm/locale/pt-BR.yml +6 -0
  219. data/sub/avm/spec/lib/avm/applications/base/entries_spec.rb +29 -0
  220. data/sub/avm/spec/lib/avm/applications/base/entries_spec_files/config.yml +12 -0
  221. data/sub/avm/spec/lib/avm/applications/base_spec.rb +21 -0
  222. data/sub/avm/spec/lib/avm/applications/base_spec_fixture.yml +3 -0
  223. data/sub/avm/spec/lib/avm/file_formats/base_spec.rb +9 -0
  224. data/sub/avm/spec/lib/avm/instances/base/entries_spec.rb +78 -0
  225. data/sub/avm/spec/lib/avm/instances/base/entries_spec_files/config.yml +50 -0
  226. data/sub/avm/spec/lib/avm/instances/base_spec.rb +29 -0
  227. data/sub/avm/spec/lib/avm/launcher/context_spec.rb +98 -0
  228. data/sub/avm/spec/lib/avm/launcher/context_spec.yml +5 -0
  229. data/sub/avm/spec/lib/avm/launcher/context_spec_files/config.yml +9 -0
  230. data/sub/avm/spec/lib/avm/launcher/instances/base_spec.rb +39 -0
  231. data/sub/avm/spec/lib/avm/launcher/instances/base_spec_files/config.yml +5 -0
  232. data/sub/avm/spec/lib/avm/launcher/instances/base_spec_files/settings.yaml +5 -0
  233. data/sub/avm/spec/lib/avm/patches/eac_config/entry_path_spec.rb +26 -0
  234. data/sub/avm/spec/lib/avm/scms/auto_commit/file_resource_name_spec.rb +20 -0
  235. data/sub/avm/spec/lib/avm/scms/base_spec.rb +5 -0
  236. data/sub/avm/spec/lib/avm/sources/base_spec.rb +5 -0
  237. data/sub/avm/spec/lib/avm/sources/runner_spec.rb +7 -0
  238. data/sub/avm/spec/meta/rubocop_spec.rb +3 -0
  239. data/sub/avm/spec/spec_helper/launcher_context/settings.yml +6 -0
  240. data/sub/avm/spec/spec_helper.rb +7 -0
  241. data/sub/avm/template/avm/rspec/launcher_controller/dummy/avm-tools_stub/avm-tools.gemspec +29 -0
  242. data/sub/avm/template/avm/rspec/launcher_controller/dummy/avm-tools_stub/lib/avm/tools/version.rb +7 -0
  243. data/sub/avm/template/avm/rspec/launcher_controller/dummy/avm-tools_stub/lib/avm/tools.rb +6 -0
  244. data/sub/avm/template/avm/rspec/launcher_controller/dummy/ruby_gem_stub/lib/ruby_gem_stub/version.rb +5 -0
  245. data/sub/avm/template/avm/rspec/launcher_controller/dummy/ruby_gem_stub/lib/ruby_gem_stub.rb +3 -0
  246. data/sub/avm/template/avm/rspec/launcher_controller/dummy/ruby_gem_stub/ruby_gem_stub.gemspec +16 -0
  247. data/sub/avm/template/avm/rspec/launcher_controller/settings.yml +1 -0
  248. data/sub/avm/template/avm/self/docker_image/Dockerfile +17 -0
  249. data/sub/avm/template/avm/self/docker_image/entrypoint.sh +12 -0
  250. data/sub/avm-eac_webapp_base0/Gemfile +8 -0
  251. data/sub/avm-eac_webapp_base0/avm-eac_webapp_base0.gemspec +24 -0
  252. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/executables.rb +23 -0
  253. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/file_formats/css/file_apply.rb +44 -0
  254. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/file_formats/css.rb +17 -0
  255. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/file_formats/html.rb +42 -0
  256. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/file_formats/javascript.rb +19 -0
  257. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/file_formats/json.rb +23 -0
  258. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/file_formats/provider.rb +17 -0
  259. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/file_formats/xml.rb +23 -0
  260. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/apache_base.rb +28 -0
  261. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/apache_host.rb +72 -0
  262. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/apache_path.rb +37 -0
  263. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/base/apache.rb +42 -0
  264. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/base/deploy.rb +24 -0
  265. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/base/deploy_info.rb +27 -0
  266. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/base/install.rb +24 -0
  267. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/base.rb +37 -0
  268. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/deploy/appended_directories.rb +25 -0
  269. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/deploy/build.rb +45 -0
  270. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/deploy/info.rb +44 -0
  271. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/deploy/scm.rb +88 -0
  272. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/deploy/setup_files_unit.rb +53 -0
  273. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/deploy/write_on_target.rb +18 -0
  274. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/deploy.rb +70 -0
  275. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/deploy_info.rb +35 -0
  276. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/processes/web_server.rb +34 -0
  277. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/runners/apache_host.rb +34 -0
  278. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/runners/apache_path.rb +38 -0
  279. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/runners/deploy.rb +47 -0
  280. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/runners/deploy_info.rb +24 -0
  281. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/sources/base.rb +13 -0
  282. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/version.rb +7 -0
  283. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0.rb +14 -0
  284. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/css_spec.rb +7 -0
  285. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/css_spec_files/css1.source.css +11 -0
  286. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/css_spec_files/css1.target.css +11 -0
  287. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/html_spec.rb +7 -0
  288. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/html_spec_files/html_code.html.erb.source +8 -0
  289. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/html_spec_files/html_code.html.erb.target +8 -0
  290. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/html_spec_files/html_code.html.source +5 -0
  291. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/html_spec_files/html_code.html.target +5 -0
  292. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/javascript_spec.rb +7 -0
  293. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/javascript_spec_files/javascript_code1.js.source +29 -0
  294. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/javascript_spec_files/javascript_code1.js.target +21 -0
  295. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/json_spec.rb +7 -0
  296. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/json_spec_files/json_code.json.source +8 -0
  297. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/json_spec_files/json_code.json.target +7 -0
  298. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/xml_spec.rb +7 -0
  299. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/xml_spec_files/xml_code.xml.source +11 -0
  300. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/xml_spec_files/xml_code.xml.target +9 -0
  301. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/instances/base_spec.rb +11 -0
  302. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/sources/base_spec.rb +7 -0
  303. data/sub/avm-eac_webapp_base0/spec/meta/rubocop_spec.rb +3 -0
  304. data/sub/avm-eac_webapp_base0/spec/spec_helper.rb +5 -0
  305. data/sub/avm-eac_webapp_base0/template/avm/eac_webapp_base0/instances/apache_host/no_ssl.conf +11 -0
  306. data/sub/avm-eac_webapp_base0/template/avm/eac_webapp_base0/instances/apache_path/default.conf +7 -0
  307. data/sub/avm-tools/Gemfile +8 -0
  308. data/sub/avm-tools/README.textile +28 -0
  309. data/sub/avm-tools/avm-tools.gemspec +24 -0
  310. data/sub/avm-tools/exe/avm +6 -0
  311. data/sub/avm-tools/lib/avm/tools/core_ext.rb +1 -0
  312. data/sub/avm-tools/lib/avm/tools/rspec/helpers/runner.rb +19 -0
  313. data/sub/avm-tools/lib/avm/tools/rspec/setup.rb +21 -0
  314. data/sub/avm-tools/lib/avm/tools/runner/application/info.rb +34 -0
  315. data/sub/avm-tools/lib/avm/tools/runner/application.rb +21 -0
  316. data/sub/avm-tools/lib/avm/tools/runner/application_stereotypes/list.rb +29 -0
  317. data/sub/avm-tools/lib/avm/tools/runner/application_stereotypes.rb +13 -0
  318. data/sub/avm-tools/lib/avm/tools/runner/applications/list.rb +29 -0
  319. data/sub/avm-tools/lib/avm/tools/runner/applications.rb +13 -0
  320. data/sub/avm-tools/lib/avm/tools/runner/config/load_path.rb +48 -0
  321. data/sub/avm-tools/lib/avm/tools/runner/config.rb +14 -0
  322. data/sub/avm-tools/lib/avm/tools/runner/files/format.rb +46 -0
  323. data/sub/avm-tools/lib/avm/tools/runner/files/rotate.rb +28 -0
  324. data/sub/avm-tools/lib/avm/tools/runner/files.rb +14 -0
  325. data/sub/avm-tools/lib/avm/tools/runner/instance/data/clear.rb +15 -0
  326. data/sub/avm-tools/lib/avm/tools/runner/instance/data/dump.rb +17 -0
  327. data/sub/avm-tools/lib/avm/tools/runner/instance/data/load.rb +22 -0
  328. data/sub/avm-tools/lib/avm/tools/runner/instance/data/unit/clear.rb +17 -0
  329. data/sub/avm-tools/lib/avm/tools/runner/instance/data/unit/dump.rb +17 -0
  330. data/sub/avm-tools/lib/avm/tools/runner/instance/data/unit/load.rb +22 -0
  331. data/sub/avm-tools/lib/avm/tools/runner/instance/data/unit.rb +40 -0
  332. data/sub/avm-tools/lib/avm/tools/runner/instance/data.rb +23 -0
  333. data/sub/avm-tools/lib/avm/tools/runner/instance/entry.rb +41 -0
  334. data/sub/avm-tools/lib/avm/tools/runner/instance/info.rb +35 -0
  335. data/sub/avm-tools/lib/avm/tools/runner/instance/system.rb +63 -0
  336. data/sub/avm-tools/lib/avm/tools/runner/instance.rb +10 -0
  337. data/sub/avm-tools/lib/avm/tools/runner/launcher/instances.rb +34 -0
  338. data/sub/avm-tools/lib/avm/tools/runner/launcher/projects.rb +37 -0
  339. data/sub/avm-tools/lib/avm/tools/runner/launcher/publish.rb +51 -0
  340. data/sub/avm-tools/lib/avm/tools/runner/launcher.rb +14 -0
  341. data/sub/avm-tools/lib/avm/tools/runner/launcher_stereotypes/list.rb +38 -0
  342. data/sub/avm-tools/lib/avm/tools/runner/launcher_stereotypes.rb +13 -0
  343. data/sub/avm-tools/lib/avm/tools/runner/self/docker.rb +12 -0
  344. data/sub/avm-tools/lib/avm/tools/runner/self/registry.rb +22 -0
  345. data/sub/avm-tools/lib/avm/tools/runner/self.rb +18 -0
  346. data/sub/avm-tools/lib/avm/tools/runner/source/auto_commit.rb +67 -0
  347. data/sub/avm-tools/lib/avm/tools/runner/source/info.rb +54 -0
  348. data/sub/avm-tools/lib/avm/tools/runner/source/issue/complete.rb +85 -0
  349. data/sub/avm-tools/lib/avm/tools/runner/source/issue/deliver.rb +32 -0
  350. data/sub/avm-tools/lib/avm/tools/runner/source/issue.rb +16 -0
  351. data/sub/avm-tools/lib/avm/tools/runner/source/sub/remove.rb +20 -0
  352. data/sub/avm-tools/lib/avm/tools/runner/source/sub.rb +25 -0
  353. data/sub/avm-tools/lib/avm/tools/runner/source/subs.rb +70 -0
  354. data/sub/avm-tools/lib/avm/tools/runner/source/test.rb +90 -0
  355. data/sub/avm-tools/lib/avm/tools/runner/source/update.rb +20 -0
  356. data/sub/avm-tools/lib/avm/tools/runner/source/version_bump.rb +78 -0
  357. data/sub/avm-tools/lib/avm/tools/runner/source.rb +13 -0
  358. data/sub/avm-tools/lib/avm/tools/runner/source_generate.rb +10 -0
  359. data/sub/avm-tools/lib/avm/tools/runner.rb +19 -0
  360. data/sub/avm-tools/lib/avm/tools/runner_with/include_exclude.rb +20 -0
  361. data/sub/avm-tools/lib/avm/tools/runner_with/instance_data_clear.rb +19 -0
  362. data/sub/avm-tools/lib/avm/tools/runner_with/instance_data_dump.rb +55 -0
  363. data/sub/avm-tools/lib/avm/tools/runner_with/instance_data_load.rb +64 -0
  364. data/sub/avm-tools/lib/avm/tools/runner_with/instance_data_performer.rb +37 -0
  365. data/sub/avm-tools/lib/avm/tools/self.rb +17 -0
  366. data/sub/avm-tools/lib/avm/tools/version.rb +7 -0
  367. data/sub/avm-tools/lib/avm/tools.rb +16 -0
  368. data/sub/avm-tools/spec/lib/avm/tools/runner/files/rotate_spec.rb +71 -0
  369. data/sub/avm-tools/spec/lib/avm/tools/runner/launcher_stereotypes/list_spec.rb +15 -0
  370. data/sub/avm-tools/spec/lib/avm/tools/runner/source/issue/complete_spec.rb +47 -0
  371. data/sub/avm-tools/spec/lib/avm/tools/runner_spec.rb +12 -0
  372. data/sub/avm-tools/spec/meta/rubocop_spec.rb +3 -0
  373. data/sub/avm-tools/spec/spec_helper.rb +7 -0
  374. metadata +381 -12
@@ -0,0 +1,91 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'fileutils'
4
+ require 'ruby-progressbar'
5
+ require 'tmpdir'
6
+
7
+ module Avm
8
+ module Rspec
9
+ class LauncherController
10
+ attr_accessor :remotes_dir
11
+
12
+ # @param application_id [String]
13
+ # @param path [Pathname]
14
+ # @return void
15
+ def application_source_path(application_id, path)
16
+ EacConfig::Node.context.current.entry("#{application_id}_dev.install.path").value =
17
+ path.to_pathname.to_path
18
+ end
19
+
20
+ # @param settings_path [Pathname]
21
+ # @param projects_root [Pathname]
22
+ def context_set(settings_path, projects_root)
23
+ Avm::Launcher::Context.current = Avm::Launcher::Context.new(
24
+ settings_file: settings_path.to_pathname.to_path,
25
+ cache_root: Dir.mktmpdir
26
+ )
27
+ self.projects_root = projects_root
28
+ end
29
+
30
+ # @return [Pathname]
31
+ def default_settings_path
32
+ templates_directory.join('settings.yml')
33
+ end
34
+
35
+ # @return [Pathname]
36
+ def dummy_directory
37
+ templates_directory.join('dummy')
38
+ end
39
+
40
+ # @param settings_path [Pathname]
41
+ def temp_context(settings_path)
42
+ context_set(settings_path, Dir.mktmpdir)
43
+ end
44
+
45
+ def init_remote(name)
46
+ r = Avm::Git::Launcher::Base.new(File.join(remotes_dir, name))
47
+ r.init_bare
48
+ r
49
+ end
50
+
51
+ def init_git(subdir)
52
+ r = Avm::Git::Launcher::Base.new(File.join(projects_root, subdir))
53
+ r.git
54
+ r.execute!('config', 'user.email', 'theuser@example.net')
55
+ r.execute!('config', 'user.name', 'The User')
56
+ r
57
+ end
58
+
59
+ # @return [Avm::Launcher::Context]
60
+ def new_context
61
+ Avm::Launcher::Context.new(
62
+ settings_file: default_settings_path,
63
+ cache_root: Dir.mktmpdir
64
+ )
65
+ end
66
+
67
+ # @param path [String]
68
+ def projects_root
69
+ @projects_root ||= Dir.mktmpdir
70
+ end
71
+
72
+ # @param path [Pathname]
73
+ def projects_root=(path)
74
+ @projects_root = path.to_pathname.to_path
75
+ end
76
+
77
+ # @return [Pathname]
78
+ def templates_directory
79
+ '../../../template/avm/rspec/launcher_controller'.to_pathname.expand_path(__dir__)
80
+ end
81
+
82
+ def touch_commit(repos, subpath)
83
+ require 'fileutils'
84
+ FileUtils.mkdir_p(File.dirname(repos.subpath(subpath)))
85
+ FileUtils.touch(repos.subpath(subpath))
86
+ repos.execute!('add', repos.subpath(subpath))
87
+ repos.execute!('commit', '-m', subpath)
88
+ end
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'tmpdir'
4
+
5
+ module Avm
6
+ module Rspec
7
+ module Setup
8
+ module Launcher
9
+ def temp_launcher_context(settings_file = nil)
10
+ settings_file ||= temp_file
11
+ ::Avm::Launcher::Context.current = ::Avm::Launcher::Context.new(
12
+ projects_root: ::Dir.mktmpdir, settings_file: settings_file, cache_root: ::Dir.mktmpdir
13
+ )
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Rspec
5
+ module Setup
6
+ module SourceGenerator
7
+ DEFAULT_TARGET_BASENAME = 'generated_app'
8
+
9
+ # @return [Avm::Sources::Base]
10
+ def avm_source(stereotype_name, options = {})
11
+ options = options.dup
12
+ target_basename ||= options.delete(:target_basename) || DEFAULT_TARGET_BASENAME
13
+ target_path ||= options.delete(:target_path) || temp_dir.join(target_basename)
14
+ ::Avm::Registry.source_generators.detect(stereotype_name, target_path, options).perform
15
+ ::Avm::Registry.sources.detect(target_path)
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Rspec
5
+ module Setup
6
+ EXAMPLES = %w[avm_file_formats_with_fixtures avm_file_format_file_resource_name
7
+ avm_source_generated entries_values in_avm_registry not_in_avm_registry
8
+ with_config with_launcher].freeze
9
+
10
+ def self.extended(obj)
11
+ obj.setup_examples
12
+ obj.rspec_config.include(::Avm::Rspec::Setup::Launcher)
13
+ obj.rspec_config.include(::Avm::Rspec::Setup::SourceGenerator)
14
+ end
15
+
16
+ def setup_examples
17
+ EXAMPLES.each do |example|
18
+ require "avm/rspec/shared_examples/#{example}"
19
+ end
20
+ end
21
+
22
+ # @return [self]
23
+ def stub_avm_contexts
24
+ stub_eac_config_node
25
+ stub_eac_fs_contexts
26
+ stub_eac_speaker
27
+
28
+ self
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.shared_examples 'avm_file_format_file_resource_name' do |input_expected|
4
+ describe '#file_resource_name' do
5
+ input_expected.each do |path, expected_resource_name|
6
+ context "when path is \"#{path}\"" do
7
+ let(:instance) { described_class.new }
8
+
9
+ it { expect(instance.file_resource_name(path)).to eq(expected_resource_name) }
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.shared_examples 'avm_file_formats_with_fixtures' do |the_spec_file|
4
+ include_examples 'source_target_fixtures', the_spec_file
5
+
6
+ def format_files_in_directory(target_dir)
7
+ Avm::FileFormats::SearchFormatter
8
+ .new([target_dir], recursive: true, apply: true, verbose: false)
9
+ .run
10
+ end
11
+
12
+ def source_data(source_file)
13
+ dir = temp_dir
14
+ source_basename = source_file_basename_without_source_extname(source_file)
15
+ source_path = dir.join(source_basename)
16
+ FileUtils.cp(source_file, source_path)
17
+ format_files_in_directory(dir)
18
+ source_path.read
19
+ end
20
+
21
+ def source_file_basename_without_source_extname(source_file)
22
+ source_file.to_pathname.basename_sub { |b| b.to_path.gsub('.source', '') }.basename
23
+ end
24
+
25
+ def target_data(target_file)
26
+ File.read(target_file)
27
+ end
28
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.shared_examples 'avm_source_generated' do |spec_file, stereotype, options = {}|
4
+ include_context 'spec_paths', spec_file
5
+ block_on_each_source = options.delete(:block_on_each_source)
6
+
7
+ spec_paths_controller.fixtures_directory.children.select(&:directory?).each do |target_dir|
8
+ context "when target is \"#{target_dir.basename}\"" do
9
+ let(:source) { avm_source(stereotype, options.merge(target_basename: target_dir.basename)) }
10
+
11
+ it do
12
+ expect(fs_comparator.build(source.path)).to eq(fs_comparator.build(target_dir))
13
+ end
14
+
15
+ instance_exec(&block_on_each_source) if block_on_each_source
16
+ end
17
+ end
18
+
19
+ # @return [EacFs::Comparato]
20
+ def fs_comparator
21
+ EacFs::Comparator.new.rename_file('.gitignore', '_gitignore')
22
+ end
23
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.shared_examples 'entries_values' do |spec_file, expected_values|
4
+ describe '#read_entry' do
5
+ include_examples 'with_config', spec_file
6
+
7
+ expected_values.each do |instance_id, values|
8
+ values.each do |input, expected|
9
+ context "when a auto value is requested for \"#{instance_id}.#{input}\"" do
10
+ let(:instance) { described_class.by_id(instance_id) }
11
+
12
+ it ".entry('#{input}').value should return \"#{expected}\"" do
13
+ expect(instance.entry(input).value).to eq(expected)
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.shared_examples 'in_avm_registry' do |registry_method|
4
+ let(:avm_registry) { Avm::Registry.send(registry_method) }
5
+
6
+ it 'is in the avm registry' do
7
+ expect(avm_registry.registered_modules).to include(described_class)
8
+ end
9
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.shared_examples 'not_in_avm_registry' do |registry_method = nil|
4
+ registry_method.if_present(Avm::Registry.registries) { |v| [Avm::Registry.send(v)] }
5
+ .each do |registry|
6
+ context "when registry is #{registry}" do
7
+ it 'is not in the avm registry' do
8
+ expect(registry.available).not_to include(described_class)
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.shared_examples 'with_config' do |spec_file|
4
+ config_path = spec_file.to_pathname
5
+ config_path = config_path.dirname.join("#{config_path.basename_noext}_files", 'config.yml')
6
+ temp_config_path = EacRubyUtils::Fs::Temp.file
7
+ FileUtils.cp(config_path, temp_config_path)
8
+ EacRubyUtils::Rspec.default_setup.stub_eac_config_node(self, temp_config_path)
9
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.shared_context 'with_launcher' do
4
+ let(:launcher_controller) { Avm::Rspec::LauncherController.new }
5
+
6
+ before do
7
+ Avm::Launcher::Context.current = launcher_controller.new_context
8
+ launcher_controller.remotes_dir = Dir.mktmpdir
9
+ end
10
+
11
+ delegate :application_source_path, :context_set, :init_git, :init_remote, :temp_context,
12
+ :projects_root, :projects_root=, :touch_commit, to: :launcher_controller
13
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module RunnerWith
5
+ module FileReplacer
6
+ common_concern do
7
+ include ::Avm::RunnerWith::FilesystemTraverser
8
+ include TopMethods
9
+ end
10
+
11
+ module TopMethods
12
+ def text_replacer
13
+ ::Avm::Files::TextReplacer.new
14
+ end
15
+
16
+ def replace_file?(_file)
17
+ true
18
+ end
19
+
20
+ def traverser_check_file(file)
21
+ return unless replace_file?(file)
22
+
23
+ infov 'Changed', file if text_replacer.file_apply(file)
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,99 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module RunnerWith
5
+ module FilesystemRenamer
6
+ common_concern do
7
+ runner_with :confirmation, :filesystem_traverser
8
+ prepend PrependMethods
9
+ end
10
+
11
+ class RenameFile
12
+ enable_speaker
13
+ common_constructor :runner, :file
14
+ delegate :path, :target_path, :valid?, to: :file
15
+
16
+ CONFIRM_MESSAGE = 'Rename?'
17
+
18
+ def show
19
+ if rename?
20
+ puts [target_path_to_s, '<='.green, path_to_s].join(' ')
21
+ else
22
+ puts path_to_s
23
+ end
24
+ end
25
+
26
+ def rename
27
+ return unless rename?
28
+
29
+ show
30
+ do_rename if runner.confirm?(CONFIRM_MESSAGE)
31
+ end
32
+
33
+ # @return [Boolean]
34
+ def rename?
35
+ path.to_pathname != target_path.to_pathname
36
+ end
37
+
38
+ private
39
+
40
+ def do_rename
41
+ ::FileUtils.mv(path, target_path)
42
+ end
43
+
44
+ # @return [String]
45
+ def path_to_s
46
+ path.basename.to_path.light_black
47
+ end
48
+
49
+ # @return [String]
50
+ def target_path_to_s
51
+ target_path.relative_path_from(path.dirname).to_path
52
+ end
53
+ end
54
+
55
+ module PrependMethods
56
+ # @param path [Pathname]
57
+ # @return [void]
58
+ def traverser_check_file(path)
59
+ file = RenameFile.new(self, file_class.new(path))
60
+ files << file if file.valid?
61
+ end
62
+ end
63
+
64
+ FILE_WRAPPER_CLASS_BASENAME = 'FileWrapper'
65
+
66
+ # @return [Class]
67
+ def file_class
68
+ self.class.const_get(FILE_WRAPPER_CLASS_BASENAME)
69
+ end
70
+
71
+ # @return [void]
72
+ def run_filesystem_renamer
73
+ self.files = []
74
+ run_filesystem_traverser
75
+ show_files
76
+ rename_files
77
+ success 'Done'
78
+ end
79
+
80
+ # @return [void]
81
+ def show_files
82
+ infov 'Files found', files.count
83
+ files.each(&:show)
84
+ end
85
+
86
+ # @return [void]
87
+ def rename_files
88
+ return if parsed.no? || files.none?(&:rename?)
89
+
90
+ infom 'Renaming files...'
91
+ files.each(&:rename)
92
+ end
93
+
94
+ private
95
+
96
+ attr_accessor :files
97
+ end
98
+ end
99
+ end
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module RunnerWith
5
+ module FilesystemTraverser
6
+ DEFAULT_DEFAULT_TRAVERSER_RECURSIVE = false
7
+
8
+ common_concern do
9
+ include ::EacCli::Runner
10
+ include ::EacFs::Traversable
11
+
12
+ enable_settings_provider
13
+ include TopMethods
14
+
15
+ runner_definition do
16
+ bool_opt '-R', '--recursive', 'Recursive.'
17
+ bool_opt '--no-recursive', 'No recursive.'
18
+ pos_arg :paths, optional: true, repeat: true
19
+ end
20
+ end
21
+
22
+ module TopMethods
23
+ def on_none_path_informed
24
+ infom 'Warning: none path informed'
25
+ end
26
+
27
+ def paths
28
+ parsed.paths.map(&:to_pathname)
29
+ end
30
+
31
+ def run_filesystem_traverser
32
+ if paths.any?
33
+ paths.each { |path| traverser_check_path(path) }
34
+ else
35
+ on_none_path_informed
36
+ end
37
+ end
38
+
39
+ def traverser_recursive
40
+ return false if parsed.no_recursive?
41
+ return true if parsed.recursive?
42
+
43
+ setting_value(:default_traverser_recursive, required: false)
44
+ .if_not_nil(DEFAULT_DEFAULT_TRAVERSER_RECURSIVE)
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Runners
5
+ class Base
6
+ enable_abstract_methods
7
+
8
+ class << self
9
+ def command_argument
10
+ stereotype_name.underscore.dasherize
11
+ end
12
+
13
+ def stereotype_name
14
+ name.split('::')[-3]
15
+ end
16
+ end
17
+
18
+ delegate :command_argument, :stereotype_name, to: :class
19
+
20
+ def to_s
21
+ stereotype_name
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Scms
5
+ module AutoCommit
6
+ class FileResourceName
7
+ require_sub __FILE__, include_modules: true
8
+ enable_simple_cache
9
+ common_constructor :scm, :path do
10
+ self.path = path.to_pathname
11
+ end
12
+
13
+ def class_name
14
+ file_format.file_resource_name(relative_path)
15
+ end
16
+
17
+ def commit_message
18
+ r = class_name
19
+ r += ': *' if modified?
20
+ r += ': remove' unless path.file?
21
+ "#{r}."
22
+ end
23
+
24
+ # @return [Boolean]
25
+ def modified?
26
+ dirty_file.if_present(false, &:modify?)
27
+ end
28
+
29
+ # @return [Pathname]
30
+ def relative_path
31
+ path.expand_path.relative_path_from(scm.path.expand_path)
32
+ end
33
+
34
+ private
35
+
36
+ def dirty_file_uncached
37
+ scm.changed_files.find { |e| e.absolute_path == path.expand_path }
38
+ end
39
+
40
+ # @return [Avm::FileFormats::Base]
41
+ def file_format_uncached
42
+ ::Avm::Registry.file_formats.detect(path)
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,79 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Scms
5
+ module AutoCommit
6
+ class ForFile
7
+ enable_speaker
8
+ enable_simple_cache
9
+ enable_listable
10
+
11
+ common_constructor :scm, :path, :rules do
12
+ self.path = path.to_pathname.expand_path(scm.path)
13
+ end
14
+
15
+ COMMITS_SEARCH_INTERVAL = 'origin/master..HEAD'
16
+
17
+ def scm_relative_path
18
+ path.to_pathname.relative_path_from(scm.path)
19
+ end
20
+
21
+ def run
22
+ start_banner
23
+ run_commit || warn("No rule returned commit information for \"#{path}\"")
24
+ end
25
+
26
+ private
27
+
28
+ # @return [Boolean]
29
+ def changed?
30
+ scm.changed_files.any? { |cf| cf.path == scm_relative_path }
31
+ end
32
+
33
+ def commit_info_uncached
34
+ rules.lazy.map { |rule| rule.with_file(self).commit_info }.find(&:present?)
35
+ .if_present { |v| v.path(path) }
36
+ end
37
+
38
+ def start_banner
39
+ infov 'Path', path
40
+ infov ' Commits found', commits.count
41
+ end
42
+
43
+ def run_commit # rubocop:disable Naming/PredicateMethod
44
+ return false if commit_info.blank?
45
+
46
+ infov ' Commit info', commit_info
47
+ if changed?
48
+ scm.run_commit(commit_info)
49
+ success ' Commited'
50
+ else
51
+ warn " File \"#{path}\" unchanged"
52
+ end
53
+
54
+ true
55
+ end
56
+
57
+ def commits_uncached
58
+ scm.current_milestone_interval.commits
59
+ .select { |c| c.changed_files.include?(path.relative_path_from(scm.path)) }
60
+ .reject(&:fixup?).each_with_index
61
+ .map { |commit, index| CommitDelegator.new(commit, index) }
62
+ end
63
+
64
+ class CommitDelegator < ::SimpleDelegator
65
+ attr_reader :index
66
+
67
+ def initialize(commit, index)
68
+ super(commit)
69
+ @index = index
70
+ end
71
+
72
+ def position
73
+ index + 1
74
+ end
75
+ end
76
+ end
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Scms
5
+ module AutoCommit
6
+ module Rules
7
+ class Base
8
+ class << self
9
+ def keys
10
+ [long_key, short_key]
11
+ end
12
+
13
+ def long_key
14
+ name.demodulize.variableize
15
+ end
16
+
17
+ def short_key
18
+ long_key[0, 1]
19
+ end
20
+ end
21
+
22
+ def with_file(file)
23
+ self.class.const_get('WithFile').new(self, file)
24
+ end
25
+
26
+ class WithFile
27
+ common_constructor :rule, :file
28
+
29
+ def new_commit_info
30
+ ::Avm::Scms::CommitInfo.new
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Scms
5
+ module AutoCommit
6
+ module Rules
7
+ class Last < ::Avm::Scms::AutoCommit::Rules::Base
8
+ class WithFile < ::Avm::Scms::AutoCommit::Rules::Base::WithFile
9
+ def commit_info
10
+ file.commits.last.if_present { |v| new_commit_info.fixup(v) }
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end