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,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Sources
5
+ class Base
6
+ module VersionBump
7
+ # @return [Avm::Scms::Commit, nil]
8
+ def version_bump(target_version)
9
+ scm.commit_if_change(version_bump_commit_message(target_version)) do
10
+ version_bump_do_changes(target_version)
11
+ parent.if_present(&:on_sub_updated)
12
+ end
13
+ end
14
+
15
+ # @return [String]
16
+ def version_bump_commit_message(target_version)
17
+ i18n_translate(__method__, version: target_version, __locale: locale)
18
+ end
19
+
20
+ def version_bump_do_changes(_target_version)
21
+ raise_abstract_method(__method__)
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,56 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Sources
5
+ class Base
6
+ require_sub __FILE__, include_modules: true
7
+ include ::Avm::With::ApplicationStereotype
8
+ include ::Avm::With::ExtraSubcommands
9
+
10
+ compare_by :path
11
+ enable_abstract_methods
12
+ enable_simple_cache
13
+ enable_listable
14
+ lists.add_symbol :option, :parent
15
+ common_constructor :path, :options, default: [{}] do
16
+ self.path = path.to_pathname.expand_path
17
+ self.options = ::Avm::Sources::Base.lists.option.hash_keys_validate!(options)
18
+ end
19
+
20
+ abstract_methods :valid?
21
+
22
+ # @param options [Hash<Symbol, Object>]
23
+ def completer(options = {})
24
+ scm.completer(options)
25
+ end
26
+
27
+ # @return [EacRubyUtils::Envs::LocalEnv]
28
+ def env
29
+ ::EacRubyUtils::Envs::LocalEnv.new
30
+ end
31
+
32
+ # @return [Pathname]
33
+ def relative_path
34
+ return path if parent.blank?
35
+
36
+ path.relative_path_from(parent.path)
37
+ end
38
+
39
+ def to_s
40
+ "#{self.class}[#{path}]"
41
+ end
42
+
43
+ # @return [Avm::VersionNumber, nil]
44
+ def version
45
+ raise_abstract __method__, 'Should return a Avm::VersionNumber or nil'
46
+ end
47
+
48
+ private
49
+
50
+ # @return [Avm::Scms::Base]
51
+ def scm_uncached
52
+ ::Avm::Registry.scms.detect_optional(path) || ::Avm::Scms::Null.new(path)
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Sources
5
+ class Configuration < ::EacConfig::OldConfigs
6
+ module Rubocop
7
+ RUBOCOP_COMMAND_KEY = 'ruby.rubocop.command'
8
+ RUBOCOP_GEMFILE_KEY = 'ruby.rubocop.gemfile'
9
+
10
+ def rubocop_command
11
+ read_command(RUBOCOP_COMMAND_KEY)
12
+ end
13
+
14
+ def rubocop_gemfile
15
+ gemfile_path = read_entry(RUBOCOP_GEMFILE_KEY)
16
+ return nil if gemfile_path.blank?
17
+
18
+ gemfile_path = gemfile_path.to_pathname.expand_path(storage_path.parent)
19
+ return gemfile_path if gemfile_path.file?
20
+
21
+ raise "Gemfile path \"#{gemfile_path}\" does not exist or is not a file"
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'yaml'
4
+
5
+ module Avm
6
+ module Sources
7
+ class Configuration < ::EacConfig::OldConfigs
8
+ require_sub __FILE__, include_modules: true
9
+
10
+ FILENAMES = %w[.avm.yml .avm.yaml].freeze
11
+
12
+ class << self
13
+ def find_by_path(path)
14
+ path = ::Pathname.new(path.to_s) unless path.is_a?(::Pathname)
15
+ internal_find_path(path.expand_path)
16
+ end
17
+
18
+ def find_in_path(path)
19
+ absolute_pathname = path.to_pathname.expand_path
20
+ if absolute_pathname.directory?
21
+ FILENAMES.each do |filename|
22
+ file = absolute_pathname.join(filename)
23
+ return new(file) if file.exist?
24
+ end
25
+ end
26
+ nil
27
+ end
28
+
29
+ def temp_instance
30
+ new(::Tempfile.new(['.avm', '.yaml']))
31
+ end
32
+
33
+ private
34
+
35
+ def internal_find_path(absolute_pathname)
36
+ r = find_in_path(absolute_pathname)
37
+ return r if r.present?
38
+
39
+ internal_find_path(absolute_pathname.dirname) unless absolute_pathname.root?
40
+ end
41
+ end
42
+
43
+ def initialize(path)
44
+ super(nil, storage_path: path)
45
+ end
46
+
47
+ # Utility to read a configuration as a [EacRubyUtils::Envs::Command].
48
+ # @return [EacRubyUtils::Envs::Command]
49
+ def read_command(key)
50
+ read_entry(key).if_present do |v|
51
+ args = v.is_a?(::Enumerable) ? v.map(&:to_s) : ::Shellwords.split(v)
52
+ ::EacRubyUtils::Envs.local.command(args).chdir(::File.dirname(storage_path))
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'clipboard'
4
+
5
+ module Avm
6
+ module Sources
7
+ module Issues
8
+ class Deliver
9
+ enable_simple_cache
10
+ enable_speaker
11
+
12
+ common_constructor :scm
13
+ delegate :head_branch, to: :scm
14
+
15
+ def run # rubocop:disable Naming/PredicateMethod
16
+ push
17
+ clipboard_copy_tracker_message
18
+ true
19
+ end
20
+
21
+ def start_banner
22
+ infov 'Branch ID', branch_id
23
+ infov 'Commit ID', branch_commit_id
24
+ end
25
+
26
+ private
27
+
28
+ def branch_commit_id
29
+ head_branch.head_commit.id
30
+ end
31
+
32
+ def branch_id
33
+ head_branch.id
34
+ end
35
+
36
+ def clipboard_copy_tracker_message
37
+ ::Clipboard.copy(textile_tracker_message)
38
+ infov 'Copied to clipboard', textile_tracker_message
39
+ end
40
+
41
+ def push
42
+ head_branch.push(scm.default_remote)
43
+ end
44
+
45
+ def textile_tracker_message
46
+ "#{branch_id}: commit:#{branch_commit_id}."
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Sources
5
+ class Runner
6
+ runner_with :help, :subcommands do
7
+ desc 'Root command for sources.'
8
+ arg_opt '-C', '--path', 'Path to the source.', default: '.'
9
+ subcommands
10
+ end
11
+
12
+ for_context :optional_source, :source
13
+
14
+ def extra_available_subcommands
15
+ optional_source.if_present({}, &:extra_available_subcommands)
16
+ end
17
+
18
+ def source_banner
19
+ infov 'Source', source
20
+ end
21
+
22
+ # @return [Pathname]
23
+ def source_path
24
+ parsed.path.to_pathname
25
+ end
26
+
27
+ private
28
+
29
+ def source_uncached
30
+ ::Avm::Registry.sources.detect(source_path)
31
+ end
32
+
33
+ def optional_source_uncached
34
+ ::Avm::Registry.sources.detect_optional(source_path)
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,91 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Sources
5
+ module Tests
6
+ class Builder
7
+ NO_TEST_TEST_NAME = 'no_test'
8
+
9
+ enable_immutable
10
+
11
+ immutable_accessor :include_main, :include_subs, type: :boolean
12
+ immutable_accessor :include_id, type: :array
13
+ common_constructor :main_source
14
+
15
+ def immutable_constructor_args
16
+ [main_source]
17
+ end
18
+
19
+ # @return [Avm::Sources::Tests::Performer]
20
+ def performer
21
+ ::Avm::Sources::Tests::Performer.new(self)
22
+ end
23
+
24
+ def selected_units
25
+ (select_units_from_subs + select_units_from_main + select_units_from_ids).sort.uniq
26
+ end
27
+
28
+ private
29
+
30
+ # @return [Array<Avm::Sources::Tests::Single>]
31
+ def available_units
32
+ @available_units ||= ([main_source] + main_source.subs)
33
+ .flat_map { |a_source| create_source_units(a_source) }
34
+ end
35
+
36
+ def available_units_from_main
37
+ create_units([main_source])
38
+ end
39
+
40
+ def available_units_from_subs
41
+ create_units(main_source.subs)
42
+ end
43
+
44
+ # @return [Avm::Sources::Tests::Single]
45
+ def create_source_no_test_unit(source)
46
+ ::Avm::Sources::Tests::Single.new(self, source, NO_TEST_TEST_NAME,
47
+ source.env.command('true'))
48
+ end
49
+
50
+ # @return [Array<Avm::Sources::Tests::Single>]
51
+ def create_source_units(source)
52
+ tests = source.test_commands
53
+ return create_source_no_test_unit(source) unless tests.any?
54
+
55
+ tests.map do |test_name, test_command|
56
+ ::Avm::Sources::Tests::Single.new(self, source, test_name, test_command)
57
+ end
58
+ end
59
+
60
+ # @return [Array<Avm::Sources::Tests::Single>]
61
+ def create_units(sources)
62
+ sources.flat_map { |a_source| create_source_units(a_source) }
63
+ end
64
+
65
+ # @return [Avm::Sources::Tests::Single]
66
+ def create_units_by_id(source_id)
67
+ r = available_units.select { |unit| unit.source.relative_path.to_path == source_id.to_s }
68
+ return r if r.any?
69
+
70
+ raise ::ArgumentError, "Source not found with ID=#{source_id}" \
71
+ "(Available: #{available_units.map(&:id).join(', ')})"
72
+ end
73
+
74
+ # @return [Array<Avm::Sources::Tests::Single>]
75
+ def select_units_from_ids
76
+ include_ids.flat_map { |source_id| create_units_by_id(source_id) }
77
+ end
78
+
79
+ # @return [Array<Avm::Sources::Tests::Single>]
80
+ def select_units_from_main
81
+ include_main? ? available_units_from_main : []
82
+ end
83
+
84
+ # @return [Array<Avm::Sources::Tests::Single>]
85
+ def select_units_from_subs
86
+ include_subs? ? available_units_from_subs : []
87
+ end
88
+ end
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Sources
5
+ module Tests
6
+ class Performer
7
+ enable_simple_cache
8
+
9
+ common_constructor(:owner)
10
+
11
+ def non_failed_units
12
+ units.reject(&:failed?)
13
+ end
14
+
15
+ def failed_units
16
+ units.select(&:failed?)
17
+ end
18
+
19
+ # @return [Boolean]
20
+ def successful?
21
+ failed_units.none?
22
+ end
23
+
24
+ protected
25
+
26
+ def units_uncached
27
+ owner.selected_units
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Sources
5
+ module Tests
6
+ class Result < ::EacCli::Enum
7
+ enum :failed, :red
8
+ enum :nonexistent, :white
9
+ enum :sucessful, :green
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,71 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Sources
5
+ module Tests
6
+ class Single
7
+ MAIN_SOURCE_ID = '#main'
8
+
9
+ compare_by :order_group, :id
10
+ enable_simple_cache
11
+ enable_speaker
12
+
13
+ common_constructor :builder, :source, :test_name, :test_command
14
+
15
+ delegate :to_s, to: :id
16
+
17
+ def failed?
18
+ result == ::Avm::Sources::Tests::Result::FAILED
19
+ end
20
+
21
+ # @return [String]
22
+ def id
23
+ "#{main? ? MAIN_SOURCE_ID : relative_path_from_main_source}##{test_name}"
24
+ end
25
+
26
+ def main?
27
+ relative_path_from_main_source.to_s == '.'
28
+ end
29
+
30
+ def order_group
31
+ main? ? 1 : 0
32
+ end
33
+
34
+ # @return [Pathname]
35
+ def relative_path_from_main_source
36
+ source.path.relative_path_from(builder.main_source.path)
37
+ end
38
+
39
+ private
40
+
41
+ # @return [EacFs::Logs]
42
+ def logs_uncached
43
+ ::EacFs::Logs.new.add(:stdout).add(:stderr)
44
+ end
45
+
46
+ # @return [Avm::Sources::Tests::Result]
47
+ def result_uncached
48
+ if test_command.blank?
49
+ ::Avm::Sources::Tests::Result::NONEXISTENT
50
+ elsif run_test_command
51
+ ::Avm::Sources::Tests::Result::SUCESSFUL
52
+ else
53
+ ::Avm::Sources::Tests::Result::FAILED
54
+ end
55
+ end
56
+
57
+ def run_test_command
58
+ execute_command_and_log(test_command)
59
+ end
60
+
61
+ # @return [true, false]
62
+ def execute_command_and_log(command) # rubocop:disable Naming/PredicateMethod
63
+ r = command.execute
64
+ logs[:stdout].write(r[:stdout])
65
+ logs[:stderr].write(r[:stderr])
66
+ r[:exit_code].zero?
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Sources
5
+ class UpdateError < ::RuntimeError
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,90 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ class Sync
5
+ attr_reader :excludes, :includes
6
+
7
+ common_constructor :source_path, :target_path do
8
+ self.source_path = source_path.to_pathname
9
+ self.target_path = target_path.to_pathname
10
+ @excludes = []
11
+ @includes = []
12
+ end
13
+
14
+ def run
15
+ clear_target
16
+ copy
17
+ end
18
+
19
+ def add_exclude(exclude)
20
+ excludes << exclude
21
+
22
+ self
23
+ end
24
+
25
+ def add_excludes(*excludes)
26
+ excludes.each { |exclude| add_exclude(exclude) }
27
+
28
+ self
29
+ end
30
+
31
+ def add_include(include)
32
+ includes << include
33
+
34
+ self
35
+ end
36
+
37
+ def add_includes(*includes)
38
+ includes.each { |include| add_include(include) }
39
+
40
+ self
41
+ end
42
+
43
+ def move_mode(value)
44
+ @move_mode = value
45
+
46
+ self
47
+ end
48
+
49
+ def move_mode?
50
+ @move_mode ? true : false
51
+ end
52
+
53
+ private
54
+
55
+ def clear_target
56
+ target_remove(target_path)
57
+ target_path.children.each { |tchild| target_remove(tchild) }
58
+ end
59
+
60
+ def copy
61
+ source_path.children.each do |schild|
62
+ ::FileUtils.cp_r(schild.to_path, target_path.to_path)
63
+ schild.rmtree if move_mode?
64
+ end
65
+ end
66
+
67
+ def source_to_target_path(source_path)
68
+ source_path.relative_path_from(self.source_path).expand_path(target_path)
69
+ end
70
+
71
+ def target_remove(tpath)
72
+ if tpath.directory?
73
+ tpath.children.each { |tchild| target_remove(tchild) }
74
+ tpath.rmdir if tpath.children.empty?
75
+ elsif tpath.file? && !skip_target_path?(tpath)
76
+ tpath.unlink
77
+ end
78
+ end
79
+
80
+ def skip_target_path?(tpath)
81
+ skip_path?(tpath.relative_path_from(target_path))
82
+ end
83
+
84
+ def skip_path?(relpath)
85
+ relpath = relpath.expand_path('/')
86
+ excludes.any? { |exclude| relpath.fnmatch?(exclude) } &&
87
+ includes.none? { |include| relpath.fnmatch?(include) }
88
+ end
89
+ end
90
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ VERSION = '0.98.5'
5
+ end
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ # A sequence of segments of integer versions (Ex.: 2, 1.0.1, 3.0.0.0.0).
5
+ class VersionNumber
6
+ include ::Comparable
7
+
8
+ SEGMENT_SEPARATOR = '.'
9
+
10
+ class << self
11
+ def segments_from_mixed(segments)
12
+ (segments.is_a?(::Enumerable) ? segments.to_a : segments.to_s.split(SEGMENT_SEPARATOR))
13
+ .map(&:to_i)
14
+ end
15
+ end
16
+
17
+ attr_reader :segments
18
+
19
+ def initialize(segments)
20
+ @segments = self.class.segments_from_mixed(segments).freeze
21
+ end
22
+
23
+ delegate :[], to: :segments
24
+
25
+ def <=>(other)
26
+ segments <=> other.segments
27
+ end
28
+
29
+ def to_s
30
+ segments.join(SEGMENT_SEPARATOR)
31
+ end
32
+
33
+ # @return [Avm::Version]
34
+ def increment_segment(segment_index)
35
+ x = [segments.count, segment_index + 1].max.times.map do |index|
36
+ value = index < segments.count ? segments[index] : 0
37
+ next value if index < segment_index
38
+ next value + 1 if index == segment_index
39
+
40
+ 0
41
+ end
42
+ self.class.new x
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module With
5
+ module ApplicationStereotype
6
+ common_concern
7
+
8
+ module ClassMethods
9
+ # @return [Avm::ApplicationStereotype::Base]
10
+ def application_stereotype
11
+ @application_stereotype ||=
12
+ ::Avm::Registry.application_stereotypes.detect(application_stereotype_name)
13
+ end
14
+
15
+ # @return [String]
16
+ def application_stereotype_name
17
+ stereotype_namespace_module.name.demodulize
18
+ end
19
+
20
+ # @return [Module]
21
+ def stereotype_namespace_module
22
+ module_parent.module_parent
23
+ end
24
+ end
25
+
26
+ delegate :stereotype_namespace_module, to: :class
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module With
5
+ module ExtraSubcommands
6
+ # @return [Hash<String, EacCli::Runner>]
7
+ def extra_available_subcommands
8
+ extra_available_subcommands_from_runners_module
9
+ end
10
+
11
+ # @return [Hash<String, EacCli::Runner>]
12
+ def extra_available_subcommands_from_runners_module
13
+ self.class.ancestors.reverse.inject({}) do |a, e|
14
+ a.merge(RunnersFromModule.new(e).result)
15
+ end
16
+ end
17
+
18
+ class RunnersFromModule
19
+ enable_simple_cache
20
+ common_constructor :the_module
21
+
22
+ # @return [Hash<String, EacCli::Runner>]
23
+ def result
24
+ return {} if runners_module.blank?
25
+
26
+ ::EacCli::RunnerWith::Subcommands.subcommands_from_module(runners_module)
27
+ end
28
+
29
+ def runners_module_uncached
30
+ return nil if the_module.module_parent.blank?
31
+
32
+ begin
33
+ the_module.module_parent.const_get('Runners')
34
+ rescue ::NameError
35
+ nil
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end