eac_tools 0.86.13 → 0.87.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 (339) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +43 -28
  3. data/lib/eac_tools/version.rb +1 -1
  4. data/sub/avm/Gemfile +8 -0
  5. data/sub/avm/avm.gemspec +28 -0
  6. data/sub/avm/lib/avm/application_scms/base.rb +39 -0
  7. data/sub/avm/lib/avm/application_scms.rb +9 -0
  8. data/sub/avm/lib/avm/application_stereotypes/base.rb +31 -0
  9. data/sub/avm/lib/avm/application_stereotypes.rb +9 -0
  10. data/sub/avm/lib/avm/applications/base/auto_local_source_path.rb +24 -0
  11. data/sub/avm/lib/avm/applications/base/local_instance.rb +31 -0
  12. data/sub/avm/lib/avm/applications/base/local_source.rb +30 -0
  13. data/sub/avm/lib/avm/applications/base/naming.rb +28 -0
  14. data/sub/avm/lib/avm/applications/base/organization.rb +29 -0
  15. data/sub/avm/lib/avm/applications/base/publishing.rb +43 -0
  16. data/sub/avm/lib/avm/applications/base/scm.rb +27 -0
  17. data/sub/avm/lib/avm/applications/base/stereotype.rb +31 -0
  18. data/sub/avm/lib/avm/applications/base.rb +37 -0
  19. data/sub/avm/lib/avm/applications.rb +9 -0
  20. data/sub/avm/lib/avm/data/callbacks.rb +37 -0
  21. data/sub/avm/lib/avm/data/clearer.rb +20 -0
  22. data/sub/avm/lib/avm/data/dumper.rb +142 -0
  23. data/sub/avm/lib/avm/data/loader.rb +28 -0
  24. data/sub/avm/lib/avm/data/package/base_performer.rb +38 -0
  25. data/sub/avm/lib/avm/data/package/build_directory.rb +28 -0
  26. data/sub/avm/lib/avm/data/package/clear.rb +22 -0
  27. data/sub/avm/lib/avm/data/package/dump.rb +45 -0
  28. data/sub/avm/lib/avm/data/package/load.rb +36 -0
  29. data/sub/avm/lib/avm/data/package.rb +67 -0
  30. data/sub/avm/lib/avm/data/performer.rb +49 -0
  31. data/sub/avm/lib/avm/data/rotate.rb +107 -0
  32. data/sub/avm/lib/avm/data/unit.rb +49 -0
  33. data/sub/avm/lib/avm/data/unit_with_commands.rb +52 -0
  34. data/sub/avm/lib/avm/docker/container.rb +50 -0
  35. data/sub/avm/lib/avm/docker/image.rb +76 -0
  36. data/sub/avm/lib/avm/docker/runner.rb +121 -0
  37. data/sub/avm/lib/avm/docker.rb +9 -0
  38. data/sub/avm/lib/avm/entries/auto_values/entry.rb +39 -0
  39. data/sub/avm/lib/avm/entries/auto_values/uri_entry.rb +24 -0
  40. data/sub/avm/lib/avm/entries/auto_values.rb +11 -0
  41. data/sub/avm/lib/avm/entries/base/inherited_entry_value.rb +46 -0
  42. data/sub/avm/lib/avm/entries/base/uri_component_entry_value/default_value.rb +28 -0
  43. data/sub/avm/lib/avm/entries/base/uri_component_entry_value/inherited_value.rb +39 -0
  44. data/sub/avm/lib/avm/entries/base/uri_component_entry_value/url_entry_value.rb +31 -0
  45. data/sub/avm/lib/avm/entries/base/uri_component_entry_value.rb +44 -0
  46. data/sub/avm/lib/avm/entries/base/uri_components_entries_values/component_factory.rb +42 -0
  47. data/sub/avm/lib/avm/entries/base/uri_components_entries_values/generic_component.rb +63 -0
  48. data/sub/avm/lib/avm/entries/base/uri_components_entries_values/path_component.rb +19 -0
  49. data/sub/avm/lib/avm/entries/base/uri_components_entries_values/url_component.rb +28 -0
  50. data/sub/avm/lib/avm/entries/base/uri_components_entries_values.rb +25 -0
  51. data/sub/avm/lib/avm/entries/base.rb +57 -0
  52. data/sub/avm/lib/avm/entries/entry/no_context_entry.rb +23 -0
  53. data/sub/avm/lib/avm/entries/entry.rb +70 -0
  54. data/sub/avm/lib/avm/entries/jobs/base.rb +62 -0
  55. data/sub/avm/lib/avm/entries/jobs/variables_source/read_entry.rb +50 -0
  56. data/sub/avm/lib/avm/entries/jobs/variables_source.rb +15 -0
  57. data/sub/avm/lib/avm/entries/jobs/with_variables_source.rb +15 -0
  58. data/sub/avm/lib/avm/entries/jobs.rb +11 -0
  59. data/sub/avm/lib/avm/entries/keys_constants_set.rb +43 -0
  60. data/sub/avm/lib/avm/entries/uri_builder.rb +91 -0
  61. data/sub/avm/lib/avm/entries.rb +9 -0
  62. data/sub/avm/lib/avm/executables.rb +24 -0
  63. data/sub/avm/lib/avm/file_formats/base.rb +35 -0
  64. data/sub/avm/lib/avm/file_formats/file_result.rb +13 -0
  65. data/sub/avm/lib/avm/file_formats/search_formatter.rb +87 -0
  66. data/sub/avm/lib/avm/file_formats/unknown.rb +18 -0
  67. data/sub/avm/lib/avm/file_formats/utf8_assert.rb +72 -0
  68. data/sub/avm/lib/avm/file_formats.rb +9 -0
  69. data/sub/avm/lib/avm/instances/base/auto_values/data.rb +25 -0
  70. data/sub/avm/lib/avm/instances/base/auto_values/database.rb +62 -0
  71. data/sub/avm/lib/avm/instances/base/auto_values/mailer.rb +35 -0
  72. data/sub/avm/lib/avm/instances/base/auto_values/source.rb +15 -0
  73. data/sub/avm/lib/avm/instances/base/auto_values.rb +14 -0
  74. data/sub/avm/lib/avm/instances/base/dockerizable.rb +45 -0
  75. data/sub/avm/lib/avm/instances/base/entry_keys.rb +27 -0
  76. data/sub/avm/lib/avm/instances/base/install.rb +31 -0
  77. data/sub/avm/lib/avm/instances/base/processes.rb +27 -0
  78. data/sub/avm/lib/avm/instances/base/subcommand_parent.rb +25 -0
  79. data/sub/avm/lib/avm/instances/base/web.rb +16 -0
  80. data/sub/avm/lib/avm/instances/base.rb +71 -0
  81. data/sub/avm/lib/avm/instances/data/files_unit.rb +59 -0
  82. data/sub/avm/lib/avm/instances/data/package.rb +27 -0
  83. data/sub/avm/lib/avm/instances/data/unit.rb +30 -0
  84. data/sub/avm/lib/avm/instances/data.rb +11 -0
  85. data/sub/avm/lib/avm/instances/docker_image.rb +15 -0
  86. data/sub/avm/lib/avm/instances/entry_keys.rb +43 -0
  87. data/sub/avm/lib/avm/instances/ids.rb +30 -0
  88. data/sub/avm/lib/avm/instances/process.rb +31 -0
  89. data/sub/avm/lib/avm/instances/runner.rb +37 -0
  90. data/sub/avm/lib/avm/instances.rb +9 -0
  91. data/sub/avm/lib/avm/launcher/context/instance_collector.rb +46 -0
  92. data/sub/avm/lib/avm/launcher/context/instance_discovery.rb +56 -0
  93. data/sub/avm/lib/avm/launcher/context/instance_manager/cached_instance.rb +37 -0
  94. data/sub/avm/lib/avm/launcher/context/instance_manager/cached_instances.rb +35 -0
  95. data/sub/avm/lib/avm/launcher/context/instance_manager.rb +77 -0
  96. data/sub/avm/lib/avm/launcher/context/settings.rb +53 -0
  97. data/sub/avm/lib/avm/launcher/context.rb +100 -0
  98. data/sub/avm/lib/avm/launcher/errors/base.rb +10 -0
  99. data/sub/avm/lib/avm/launcher/errors/non_project.rb +15 -0
  100. data/sub/avm/lib/avm/launcher/errors.rb +11 -0
  101. data/sub/avm/lib/avm/launcher/instances/base/cache.rb +43 -0
  102. data/sub/avm/lib/avm/launcher/instances/base/publishing.rb +53 -0
  103. data/sub/avm/lib/avm/launcher/instances/base.rb +78 -0
  104. data/sub/avm/lib/avm/launcher/instances/error.rb +10 -0
  105. data/sub/avm/lib/avm/launcher/instances/runner_helper.rb +47 -0
  106. data/sub/avm/lib/avm/launcher/instances/settings.rb +26 -0
  107. data/sub/avm/lib/avm/launcher/instances.rb +11 -0
  108. data/sub/avm/lib/avm/launcher/paths/logical.rb +80 -0
  109. data/sub/avm/lib/avm/launcher/paths/real.rb +44 -0
  110. data/sub/avm/lib/avm/launcher/paths.rb +11 -0
  111. data/sub/avm/lib/avm/launcher/project.rb +17 -0
  112. data/sub/avm/lib/avm/launcher/publish/base.rb +47 -0
  113. data/sub/avm/lib/avm/launcher/publish/check_result.rb +65 -0
  114. data/sub/avm/lib/avm/launcher/publish.rb +11 -0
  115. data/sub/avm/lib/avm/launcher/stereotype.rb +63 -0
  116. data/sub/avm/lib/avm/launcher.rb +9 -0
  117. data/sub/avm/lib/avm/launcher_stereotypes.rb +9 -0
  118. data/sub/avm/lib/avm/patches/eac_config/entry_path.rb +46 -0
  119. data/sub/avm/lib/avm/path_string.rb +27 -0
  120. data/sub/avm/lib/avm/registry/application_scms.rb +15 -0
  121. data/sub/avm/lib/avm/registry/application_stereotypes/build_available.rb +49 -0
  122. data/sub/avm/lib/avm/registry/application_stereotypes/stereotype_builder.rb +33 -0
  123. data/sub/avm/lib/avm/registry/application_stereotypes.rb +52 -0
  124. data/sub/avm/lib/avm/registry/applications.rb +38 -0
  125. data/sub/avm/lib/avm/registry/config_objects.rb +18 -0
  126. data/sub/avm/lib/avm/registry/file_formats.rb +20 -0
  127. data/sub/avm/lib/avm/registry/from_gems.rb +80 -0
  128. data/sub/avm/lib/avm/registry/instances.rb +16 -0
  129. data/sub/avm/lib/avm/registry/launcher_stereotypes.rb +11 -0
  130. data/sub/avm/lib/avm/registry/runners.rb +10 -0
  131. data/sub/avm/lib/avm/registry/scms.rb +10 -0
  132. data/sub/avm/lib/avm/registry/source_generators.rb +17 -0
  133. data/sub/avm/lib/avm/registry/sources.rb +40 -0
  134. data/sub/avm/lib/avm/registry/with_path/cache.rb +31 -0
  135. data/sub/avm/lib/avm/registry/with_path.rb +49 -0
  136. data/sub/avm/lib/avm/registry.rb +35 -0
  137. data/sub/avm/lib/avm/result.rb +82 -0
  138. data/sub/avm/lib/avm/rspec/setup/launcher.rb +20 -0
  139. data/sub/avm/lib/avm/rspec/setup/source_generator.rb +22 -0
  140. data/sub/avm/lib/avm/rspec/setup.rb +35 -0
  141. data/sub/avm/lib/avm/rspec/shared_examples/avm_file_format_file_resource_name.rb +15 -0
  142. data/sub/avm/lib/avm/rspec/shared_examples/avm_file_formats_with_fixtures.rb +31 -0
  143. data/sub/avm/lib/avm/rspec/shared_examples/avm_source_generated.rb +23 -0
  144. data/sub/avm/lib/avm/rspec/shared_examples/entries_values.rb +23 -0
  145. data/sub/avm/lib/avm/rspec/shared_examples/in_avm_registry.rb +11 -0
  146. data/sub/avm/lib/avm/rspec/shared_examples/not_in_avm_registry.rb +14 -0
  147. data/sub/avm/lib/avm/rspec.rb +9 -0
  148. data/sub/avm/lib/avm/runners/base.rb +27 -0
  149. data/sub/avm/lib/avm/scms/auto_commit/file_resource_name.rb +39 -0
  150. data/sub/avm/lib/avm/scms/auto_commit/for_file.rb +82 -0
  151. data/sub/avm/lib/avm/scms/auto_commit/rules/base.rb +40 -0
  152. data/sub/avm/lib/avm/scms/auto_commit/rules/last.rb +19 -0
  153. data/sub/avm/lib/avm/scms/auto_commit/rules/manual.rb +40 -0
  154. data/sub/avm/lib/avm/scms/auto_commit/rules/new.rb +24 -0
  155. data/sub/avm/lib/avm/scms/auto_commit/rules/nth.rb +31 -0
  156. data/sub/avm/lib/avm/scms/auto_commit/rules/unique.rb +21 -0
  157. data/sub/avm/lib/avm/scms/auto_commit/rules.rb +36 -0
  158. data/sub/avm/lib/avm/scms/auto_commit.rb +11 -0
  159. data/sub/avm/lib/avm/scms/base/branches.rb +22 -0
  160. data/sub/avm/lib/avm/scms/base/commits.rb +34 -0
  161. data/sub/avm/lib/avm/scms/base/milestones.rb +21 -0
  162. data/sub/avm/lib/avm/scms/base/remotes.rb +22 -0
  163. data/sub/avm/lib/avm/scms/base.rb +61 -0
  164. data/sub/avm/lib/avm/scms/branch.rb +26 -0
  165. data/sub/avm/lib/avm/scms/changed_file.rb +26 -0
  166. data/sub/avm/lib/avm/scms/commit.rb +66 -0
  167. data/sub/avm/lib/avm/scms/commit_info.rb +39 -0
  168. data/sub/avm/lib/avm/scms/inflector.rb +22 -0
  169. data/sub/avm/lib/avm/scms/interval.rb +18 -0
  170. data/sub/avm/lib/avm/scms/null/commit.rb +15 -0
  171. data/sub/avm/lib/avm/scms/null.rb +21 -0
  172. data/sub/avm/lib/avm/scms/remote.rb +11 -0
  173. data/sub/avm/lib/avm/scms.rb +9 -0
  174. data/sub/avm/lib/avm/self/docker_image.rb +14 -0
  175. data/sub/avm/lib/avm/self/instance/entry_keys.rb +12 -0
  176. data/sub/avm/lib/avm/self/instance.rb +31 -0
  177. data/sub/avm/lib/avm/source_generators/base.rb +45 -0
  178. data/sub/avm/lib/avm/source_generators/option.rb +11 -0
  179. data/sub/avm/lib/avm/source_generators/option_list.rb +32 -0
  180. data/sub/avm/lib/avm/source_generators/runner.rb +58 -0
  181. data/sub/avm/lib/avm/source_generators.rb +9 -0
  182. data/sub/avm/lib/avm/sources/auto_commit/for_file.rb +31 -0
  183. data/sub/avm/lib/avm/sources/auto_commit.rb +11 -0
  184. data/sub/avm/lib/avm/sources/base/application.rb +36 -0
  185. data/sub/avm/lib/avm/sources/base/configuration.rb +92 -0
  186. data/sub/avm/lib/avm/sources/base/instance.rb +16 -0
  187. data/sub/avm/lib/avm/sources/base/locale.rb +33 -0
  188. data/sub/avm/lib/avm/sources/base/organizational.rb +32 -0
  189. data/sub/avm/lib/avm/sources/base/parent.rb +28 -0
  190. data/sub/avm/lib/avm/sources/base/stereotype.rb +18 -0
  191. data/sub/avm/lib/avm/sources/base/sub/remove.rb +38 -0
  192. data/sub/avm/lib/avm/sources/base/sub.rb +26 -0
  193. data/sub/avm/lib/avm/sources/base/subs.rb +67 -0
  194. data/sub/avm/lib/avm/sources/base/subs_paths.rb +32 -0
  195. data/sub/avm/lib/avm/sources/base/testing.rb +70 -0
  196. data/sub/avm/lib/avm/sources/base/update.rb +39 -0
  197. data/sub/avm/lib/avm/sources/base/update_sub.rb +57 -0
  198. data/sub/avm/lib/avm/sources/base/update_subs.rb +19 -0
  199. data/sub/avm/lib/avm/sources/base/version_bump.rb +29 -0
  200. data/sub/avm/lib/avm/sources/base.rb +61 -0
  201. data/sub/avm/lib/avm/sources/configuration/rubocop.rb +26 -0
  202. data/sub/avm/lib/avm/sources/configuration.rb +59 -0
  203. data/sub/avm/lib/avm/sources/issues/deliver.rb +52 -0
  204. data/sub/avm/lib/avm/sources/issues.rb +11 -0
  205. data/sub/avm/lib/avm/sources/runner.rb +40 -0
  206. data/sub/avm/lib/avm/sources/tests/builder.rb +96 -0
  207. data/sub/avm/lib/avm/sources/tests/performer.rb +35 -0
  208. data/sub/avm/lib/avm/sources/tests/result.rb +15 -0
  209. data/sub/avm/lib/avm/sources/tests/single.rb +75 -0
  210. data/sub/avm/lib/avm/sources/tests.rb +11 -0
  211. data/sub/avm/lib/avm/sources/update_error.rb +8 -0
  212. data/sub/avm/lib/avm/sources.rb +9 -0
  213. data/sub/avm/lib/avm/sync.rb +94 -0
  214. data/sub/avm/lib/avm/version.rb +5 -0
  215. data/sub/avm/lib/avm/version_number.rb +45 -0
  216. data/sub/avm/lib/avm/with/application_stereotype.rb +33 -0
  217. data/sub/avm/lib/avm/with/extra_subcommands.rb +44 -0
  218. data/sub/avm/lib/avm.rb +7 -0
  219. data/sub/avm/locale/en.yml +6 -0
  220. data/sub/avm/locale/pt-BR.yml +6 -0
  221. data/sub/avm/spec/dummy/avm-tools_stub/avm-tools.gemspec +29 -0
  222. data/sub/avm/spec/dummy/avm-tools_stub/lib/avm/tools/version.rb +7 -0
  223. data/sub/avm/spec/dummy/avm-tools_stub/lib/avm/tools.rb +6 -0
  224. data/sub/avm/spec/dummy/ruby_gem_stub/lib/ruby_gem_stub/version.rb +5 -0
  225. data/sub/avm/spec/dummy/ruby_gem_stub/lib/ruby_gem_stub.rb +3 -0
  226. data/sub/avm/spec/dummy/ruby_gem_stub/ruby_gem_stub.gemspec +16 -0
  227. data/sub/avm/spec/lib/avm/applications/base/entries_spec.rb +31 -0
  228. data/sub/avm/spec/lib/avm/applications/base/entries_spec_files/config.yml +12 -0
  229. data/sub/avm/spec/lib/avm/applications/base_spec.rb +23 -0
  230. data/sub/avm/spec/lib/avm/applications/base_spec_fixture.yml +3 -0
  231. data/sub/avm/spec/lib/avm/file_formats/base_spec.rb +11 -0
  232. data/sub/avm/spec/lib/avm/instances/base_spec.rb +107 -0
  233. data/sub/avm/spec/lib/avm/instances/base_spec_files/config.yml +50 -0
  234. data/sub/avm/spec/lib/avm/launcher/context_spec.rb +128 -0
  235. data/sub/avm/spec/lib/avm/launcher/context_spec.yml +5 -0
  236. data/sub/avm/spec/lib/avm/launcher/instances/base_spec.rb +43 -0
  237. data/sub/avm/spec/lib/avm/launcher/instances/base_spec_files/projects/avm-tools_stub/avm-tools.gemspec +29 -0
  238. data/sub/avm/spec/lib/avm/launcher/instances/base_spec_files/projects/avm-tools_stub/lib/avm/tools/version.rb +7 -0
  239. data/sub/avm/spec/lib/avm/launcher/instances/base_spec_files/projects/avm-tools_stub/lib/avm/tools.rb +6 -0
  240. data/sub/avm/spec/lib/avm/launcher/instances/base_spec_files/projects/ruby_gem_stub/lib/ruby_gem_stub/version.rb +5 -0
  241. data/sub/avm/spec/lib/avm/launcher/instances/base_spec_files/projects/ruby_gem_stub/lib/ruby_gem_stub.rb +3 -0
  242. data/sub/avm/spec/lib/avm/launcher/instances/base_spec_files/projects/ruby_gem_stub/ruby_gem_stub.gemspec +16 -0
  243. data/sub/avm/spec/lib/avm/launcher/instances/base_spec_files/settings.yaml +5 -0
  244. data/sub/avm/spec/lib/avm/patches/eac_config/entry_path_spec.rb +28 -0
  245. data/sub/avm/spec/lib/avm/scms/auto_commit/file_resource_name_spec.rb +21 -0
  246. data/sub/avm/spec/lib/avm/scms/base_spec.rb +7 -0
  247. data/sub/avm/spec/lib/avm/sources/base_spec.rb +7 -0
  248. data/sub/avm/spec/lib/avm/sources/runner_spec.rb +9 -0
  249. data/sub/avm/spec/rubocop_spec.rb +3 -0
  250. data/sub/avm/spec/spec_helper/eac_launcher/settings.yml +6 -0
  251. data/sub/avm/spec/spec_helper/eac_launcher.rb +52 -0
  252. data/sub/avm/spec/spec_helper.rb +5 -0
  253. data/sub/avm/template/avm/self/docker_image/Dockerfile +17 -0
  254. data/sub/avm/template/avm/self/docker_image/entrypoint.sh +12 -0
  255. data/sub/avm-eac_generic_base0/Gemfile +8 -0
  256. data/sub/avm-eac_generic_base0/avm-eac_generic_base0.gemspec +21 -0
  257. data/sub/avm-eac_generic_base0/lib/avm/eac_generic_base0/file_formats/base/apply.rb +34 -0
  258. data/sub/avm-eac_generic_base0/lib/avm/eac_generic_base0/file_formats/base/file_resource_name_helper.rb +23 -0
  259. data/sub/avm-eac_generic_base0/lib/avm/eac_generic_base0/file_formats/base/match.rb +69 -0
  260. data/sub/avm-eac_generic_base0/lib/avm/eac_generic_base0/file_formats/base.rb +41 -0
  261. data/sub/avm-eac_generic_base0/lib/avm/eac_generic_base0/file_formats.rb +11 -0
  262. data/sub/avm-eac_generic_base0/lib/avm/eac_generic_base0/instances/base.rb +12 -0
  263. data/sub/avm-eac_generic_base0/lib/avm/eac_generic_base0/instances.rb +11 -0
  264. data/sub/avm-eac_generic_base0/lib/avm/eac_generic_base0/sources/base.rb +33 -0
  265. data/sub/avm-eac_generic_base0/lib/avm/eac_generic_base0/sources/docker/runner.rb +61 -0
  266. data/sub/avm-eac_generic_base0/lib/avm/eac_generic_base0/sources/docker.rb +13 -0
  267. data/sub/avm-eac_generic_base0/lib/avm/eac_generic_base0/sources.rb +11 -0
  268. data/sub/avm-eac_generic_base0/lib/avm/eac_generic_base0/version.rb +7 -0
  269. data/sub/avm-eac_generic_base0/lib/avm/eac_generic_base0.rb +9 -0
  270. data/sub/avm-eac_generic_base0/locale/en.yml +6 -0
  271. data/sub/avm-eac_generic_base0/locale/pt-BR.yml +6 -0
  272. data/sub/avm-eac_generic_base0/spec/lib/avm/eac_generic_base0/file_formats/base_spec.rb +7 -0
  273. data/sub/avm-eac_generic_base0/spec/lib/avm/eac_generic_base0/file_formats/base_spec_files/plain_text.source +3 -0
  274. data/sub/avm-eac_generic_base0/spec/lib/avm/eac_generic_base0/file_formats/base_spec_files/plain_text.target +3 -0
  275. data/sub/avm-eac_generic_base0/spec/lib/avm/eac_generic_base0/sources/base_spec.rb +7 -0
  276. data/sub/avm-eac_generic_base0/spec/rubocop_spec.rb +3 -0
  277. data/sub/avm-eac_generic_base0/spec/spec_helper.rb +4 -0
  278. data/sub/avm-eac_webapp_base0/Gemfile +8 -0
  279. data/sub/avm-eac_webapp_base0/avm-eac_webapp_base0.gemspec +25 -0
  280. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/executables.rb +26 -0
  281. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/file_formats/css/file_apply.rb +48 -0
  282. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/file_formats/css.rb +22 -0
  283. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/file_formats/html.rb +43 -0
  284. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/file_formats/javascript.rb +22 -0
  285. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/file_formats/json.rb +25 -0
  286. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/file_formats/provider.rb +24 -0
  287. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/file_formats/xml.rb +26 -0
  288. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/file_formats.rb +11 -0
  289. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/apache_base.rb +33 -0
  290. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/apache_host.rb +78 -0
  291. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/apache_path.rb +42 -0
  292. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/base/apache.rb +44 -0
  293. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/base/deploy_info.rb +30 -0
  294. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/base/install.rb +22 -0
  295. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/base.rb +44 -0
  296. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/deploy/appended_directories.rb +27 -0
  297. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/deploy/build.rb +50 -0
  298. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/deploy/info.rb +47 -0
  299. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/deploy/scm.rb +72 -0
  300. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/deploy/setup_files_unit.rb +53 -0
  301. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/deploy/write_on_target.rb +20 -0
  302. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/deploy.rb +73 -0
  303. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/deploy_info.rb +37 -0
  304. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/processes/web_server.rb +37 -0
  305. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/processes.rb +13 -0
  306. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/runners/apache_host.rb +36 -0
  307. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/runners/apache_path.rb +40 -0
  308. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/runners/data/load.rb +60 -0
  309. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/runners/deploy.rb +43 -0
  310. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/runners/deploy_info.rb +28 -0
  311. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/runners.rb +13 -0
  312. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/sources/base.rb +15 -0
  313. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/sources.rb +11 -0
  314. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/version.rb +7 -0
  315. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0.rb +9 -0
  316. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/css_spec.rb +7 -0
  317. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/css_spec_files/css1.source.css +11 -0
  318. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/css_spec_files/css1.target.css +11 -0
  319. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/html_spec.rb +7 -0
  320. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/html_spec_files/html_code.html.erb.source +8 -0
  321. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/html_spec_files/html_code.html.erb.target +8 -0
  322. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/html_spec_files/html_code.html.source +5 -0
  323. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/html_spec_files/html_code.html.target +5 -0
  324. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/javascript_spec.rb +7 -0
  325. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/javascript_spec_files/javascript_code1.js.source +29 -0
  326. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/javascript_spec_files/javascript_code1.js.target +21 -0
  327. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/json_spec.rb +7 -0
  328. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/json_spec_files/json_code.json.source +8 -0
  329. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/json_spec_files/json_code.json.target +7 -0
  330. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/xml_spec.rb +7 -0
  331. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/xml_spec_files/xml_code.xml.source +11 -0
  332. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/xml_spec_files/xml_code.xml.target +9 -0
  333. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/instances/base_spec.rb +11 -0
  334. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/sources/base_spec.rb +7 -0
  335. data/sub/avm-eac_webapp_base0/spec/rubocop_spec.rb +3 -0
  336. data/sub/avm-eac_webapp_base0/spec/spec_helper.rb +4 -0
  337. data/sub/avm-eac_webapp_base0/template/avm/eac_webapp_base0/instances/apache_host/no_ssl.conf +11 -0
  338. data/sub/avm-eac_webapp_base0/template/avm/eac_webapp_base0/instances/apache_path/default.conf +7 -0
  339. metadata +343 -20
@@ -0,0 +1,78 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/launcher/errors/non_project'
4
+ require 'avm/registry'
5
+ require 'eac_ruby_utils/speaker/sender'
6
+
7
+ module Avm
8
+ module Launcher
9
+ module Instances
10
+ module Base
11
+ class << self
12
+ def extend_object(object)
13
+ object.extend ::EacRubyUtils::SimpleCache
14
+ object.extend ::EacRubyUtils::Speaker::Sender
15
+ object.extend ::Avm::Launcher::Instances::Base::Cache
16
+ object.extend ::Avm::Launcher::Instances::Base::Publishing
17
+ super
18
+ end
19
+
20
+ def instanciate(path, parent)
21
+ unless path.is_a?(::Avm::Launcher::Instances::Base)
22
+ raise ::Avm::Launcher::Errors::NonProject, path unless path.project?
23
+
24
+ path.extend(::Avm::Launcher::Instances::Base)
25
+ path.parent = parent
26
+ end
27
+ path
28
+ end
29
+ end
30
+
31
+ require_sub __FILE__
32
+
33
+ attr_accessor :parent
34
+
35
+ # @return [Avm::Applications::Base]
36
+ def application
37
+ @application ||= ::Avm::Registry.applications.detect(project_name)
38
+ end
39
+
40
+ def name
41
+ logical
42
+ end
43
+
44
+ def stereotype?(stereotype)
45
+ stereotypes.include?(stereotype)
46
+ end
47
+
48
+ def to_parent_path
49
+ return self unless @parent
50
+
51
+ logical.gsub(/\A#{Regexp.quote(@parent.logical)}/, '')
52
+ end
53
+
54
+ def project?
55
+ stereotypes.any?
56
+ end
57
+
58
+ def project_name
59
+ ::File.basename(logical)
60
+ end
61
+
62
+ def included?
63
+ ::Avm::Launcher::Context.current.settings.excluded_projects.exclude?(project_name)
64
+ end
65
+
66
+ def to_h
67
+ super.to_h.merge(parent: parent&.logical)
68
+ end
69
+
70
+ private
71
+
72
+ def options_uncached
73
+ ::Avm::Launcher::Context.current.settings.instance_settings(self)
74
+ end
75
+ end
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Launcher
5
+ module Instances
6
+ class Error < StandardError
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/launcher/context'
4
+ require 'avm/tools/core_ext'
5
+ require 'avm/launcher/context/instance_collector'
6
+
7
+ module Avm
8
+ module Launcher
9
+ module Instances
10
+ module RunnerHelper
11
+ common_concern do
12
+ runner_definition do
13
+ bool_opt '--all', 'Select all instances.'
14
+ bool_opt '--pending', 'Select pending instances.'
15
+ bool_opt '--recache', 'Rewrite instances cache.'
16
+ end
17
+
18
+ set_callback :run, :before, :setup_cache
19
+ end
20
+
21
+ def context
22
+ @context ||= ::Avm::Launcher::Context.current
23
+ end
24
+
25
+ def instances
26
+ collector = ::Avm::Launcher::Context::InstanceCollector.new(context)
27
+ collector.add_all if parsed.all?
28
+ collector.add_pending if parsed.pending?
29
+ parsed.instance_path.flat_map { |p| collector.add_path(p) }
30
+ collector.instances
31
+ end
32
+
33
+ def instance_stereotypes(instance)
34
+ instance.stereotypes.map(&:label).join(', ')
35
+ end
36
+
37
+ def instance_label(instance)
38
+ "#{instance.name} [#{instance_stereotypes(instance)}]"
39
+ end
40
+
41
+ def setup_cache
42
+ ::Avm::Launcher::Context.current.recache = parsed.recache?
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module Launcher
7
+ module Instances
8
+ class Settings
9
+ DEFAULT_CURRENT_REVISION = 'origin/master'
10
+ DEFAULT_PUBLISH_REMOTE = 'publish'
11
+
12
+ common_constructor :data do
13
+ self.data = (data.is_a?(Hash) ? data : {}).with_indifferent_access
14
+ end
15
+
16
+ def git_current_revision
17
+ data[__method__] || DEFAULT_CURRENT_REVISION
18
+ end
19
+
20
+ def git_publish_remote
21
+ data[__method__] || DEFAULT_PUBLISH_REMOTE
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module Launcher
7
+ module Instances
8
+ require_sub __FILE__
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,80 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/launcher/paths/real'
4
+ require 'avm/launcher/stereotype'
5
+ require 'eac_ruby_utils/core_ext'
6
+
7
+ module Avm
8
+ module Launcher
9
+ module Paths
10
+ class Logical
11
+ enable_simple_cache
12
+
13
+ class << self
14
+ def from_h(context, hash)
15
+ parent_path = hash[:parent_path] ? from_h(context, hash[:parent_path]) : nil
16
+ new(context, parent_path, hash[:real], hash[:logical])
17
+ end
18
+ end
19
+
20
+ common_constructor :context, :parent_path, :real, :logical do
21
+ self.real = ::Avm::Launcher::Paths::Real.new(real)
22
+ end
23
+
24
+ compare_by :logical, :real
25
+
26
+ def to_s
27
+ logical
28
+ end
29
+
30
+ def to_h
31
+ { logical: logical, real: real.to_s, parent_path: parent_path&.to_h }
32
+ end
33
+
34
+ def project?
35
+ stereotypes.any?
36
+ end
37
+
38
+ def children
39
+ r = []
40
+ Dir.entries(warped).each do |c|
41
+ c_path = ::File.join(warped, c)
42
+ next unless ::File.directory?(c_path)
43
+ next if c.start_with?('.')
44
+
45
+ r << build_child(c)
46
+ end
47
+ r
48
+ end
49
+
50
+ def included?
51
+ context.settings.excluded_paths.exclude?(logical)
52
+ end
53
+
54
+ private
55
+
56
+ def stereotypes_uncached
57
+ ::Avm::Launcher::Stereotype.stereotypes.select { |s| s.match?(self) } # rubocop:disable Style/SelectByRegexp
58
+ end
59
+
60
+ def build_child(name)
61
+ ::Avm::Launcher::Paths::Logical.new(
62
+ context,
63
+ self,
64
+ ::File.join(warped, name),
65
+ ::File.join(logical, name)
66
+ )
67
+ end
68
+
69
+ def warped_uncached
70
+ if is_a?(::Avm::Launcher::Instances::Base)
71
+ stereotypes.each do |s|
72
+ return s.warp_class.new(self) if s.warp_class
73
+ end
74
+ end
75
+ real
76
+ end
77
+ end
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Launcher
5
+ module Paths
6
+ class Real < String
7
+ def initialize(path)
8
+ raise "Argument path is not a string: \"#{path}\"|#{path.class}" unless path.is_a?(String)
9
+
10
+ super(path)
11
+ end
12
+
13
+ def subpath(relative_path)
14
+ ::Avm::Launcher::Paths::Real.new(::File.expand_path(relative_path, self))
15
+ end
16
+
17
+ def basename
18
+ ::File.basename(self)
19
+ end
20
+
21
+ def dirname
22
+ return nil if self == '/'
23
+
24
+ self.class.new(::File.dirname(self))
25
+ end
26
+
27
+ def find_file_with_extension(extension)
28
+ r = find_files_with_extension(extension)
29
+ return r.first if r.any?
30
+
31
+ raise "Extension \"#{extension}\" not found in directory \"#{self}\""
32
+ end
33
+
34
+ def find_files_with_extension(extension)
35
+ r = []
36
+ ::Dir.entries(self).each do |i|
37
+ r << ::File.expand_path(i, self) if i =~ /#{::Regexp.quote(extension)}\z/
38
+ end
39
+ r
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module Launcher
7
+ module Paths
8
+ require_sub __FILE__
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module Launcher
7
+ class Project
8
+ common_constructor :name, :instances do
9
+ self.instances = instances.to_a
10
+ end
11
+
12
+ def to_s
13
+ name
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/launcher/errors/base'
4
+ require 'eac_ruby_utils/core_ext'
5
+
6
+ module Avm
7
+ module Launcher
8
+ module Publish
9
+ class Base
10
+ common_constructor :instance
11
+
12
+ def run
13
+ s = check
14
+ info("Check: #{s}")
15
+ return unless s.status == ::Avm::Launcher::Publish::CheckResult::STATUS_PENDING
16
+
17
+ publish
18
+ end
19
+
20
+ def check
21
+ s = check_with_rescue
22
+ ::Avm::Launcher::Context.current.instance_manager.publish_state_set(
23
+ instance, stereotype.stereotype_name, s.status
24
+ )
25
+ s
26
+ end
27
+
28
+ private
29
+
30
+ def stereotype
31
+ self.class.name.deconstantize.constantize
32
+ end
33
+
34
+ def check_with_rescue
35
+ internal_check
36
+ rescue ::Avm::Launcher::Errors::Base => e
37
+ ::Avm::Launcher::Publish::CheckResult.blocked("Error: #{error_message(e)}")
38
+ end
39
+
40
+ # @return [String]
41
+ def error_message(error)
42
+ error.to_s + error.cause.if_present('') { |v| " / Caused by: #{error_message(v)}" }
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,65 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support/concern' # Missing on "eac/listable"
4
+ require 'active_support/hash_with_indifferent_access'
5
+ require 'eac_ruby_utils/listable'
6
+
7
+ module Avm
8
+ module Launcher
9
+ module Publish
10
+ class CheckResult
11
+ include ::EacRubyUtils::Listable
12
+
13
+ lists.add_string :status, :updated, :pending, :blocked, :outdated
14
+
15
+ lists.status.values.each do |status| # rubocop:disable Style/HashEachMethods
16
+ singleton_class.define_method status do |message|
17
+ new(status, message)
18
+ end
19
+ end
20
+
21
+ class << self
22
+ def pending_status?(status)
23
+ [STATUS_PENDING].include?(status)
24
+ end
25
+
26
+ def updated_color
27
+ 'green'
28
+ end
29
+
30
+ def pending_color
31
+ 'yellow'
32
+ end
33
+
34
+ def blocked_color
35
+ 'red'
36
+ end
37
+
38
+ def outdated_color
39
+ 'light_blue'
40
+ end
41
+ end
42
+
43
+ attr_reader :status, :message
44
+
45
+ def initialize(status, message)
46
+ raise "Status \"#{status}\" not in #{self.class.lists.status.values}" unless
47
+ self.class.lists.status.values.include?(status)
48
+
49
+ @status = status
50
+ @message = message
51
+ end
52
+
53
+ def to_s
54
+ message.light_white.send("on_#{background_color}")
55
+ end
56
+
57
+ private
58
+
59
+ def background_color
60
+ self.class.send("#{status}_color")
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module Launcher
7
+ module Paths
8
+ require_sub __FILE__
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,63 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support/core_ext/string/inflections'
4
+ require 'colorized_string'
5
+
6
+ module Avm
7
+ module Launcher
8
+ module Stereotype
9
+ class << self
10
+ def included(base)
11
+ base.extend(ClassMethods)
12
+ end
13
+
14
+ def git_stereotypes
15
+ stereotypes.select { |c| c.name.demodulize.downcase.match('git') }
16
+ end
17
+
18
+ def nogit_stereotypes
19
+ stereotypes - git_stereotypes
20
+ end
21
+
22
+ def stereotypes
23
+ ::Avm::Registry.launcher_stereotypes.available
24
+ end
25
+ end
26
+
27
+ module ClassMethods
28
+ def label
29
+ ::ColorizedString.new(stereotype_name).send(color)
30
+ end
31
+
32
+ def stereotype_name
33
+ name.demodulize
34
+ end
35
+
36
+ {
37
+ local_project_mixin: ::Module,
38
+ publish: ::Class,
39
+ update: ::Class,
40
+ version_bump: ::Class,
41
+ warp: ::Class
42
+ }.each do |name, is_a|
43
+ define_method "#{name}_#{is_a.name.underscore}" do
44
+ sub_constant(name.to_s.camelcase, is_a)
45
+ end
46
+ end
47
+
48
+ private
49
+
50
+ def sub_constant(constant_name, is_a)
51
+ return nil unless const_defined?(constant_name)
52
+
53
+ constant = const_get(constant_name)
54
+ unless is_a.if_present(true) { |v| constant.is_a?(v) }
55
+ raise("#{constant} is not a #{is_a}")
56
+ end
57
+
58
+ constant
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module Launcher
7
+ require_sub __FILE__
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module LauncherStereotypes
7
+ require_sub __FILE__
8
+ end
9
+ end
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_config/entry_path'
4
+
5
+ module EacConfig
6
+ class EntryPath
7
+ # @return [Symbol]
8
+ def auto_method_name
9
+ method_name('auto_', '')
10
+ end
11
+
12
+ # @return [Symbol]
13
+ def default_method_name
14
+ method_name('', '_default_value')
15
+ end
16
+
17
+ # @return [Symbol]
18
+ def get_method_name # rubocop:disable Naming/AccessorMethodName
19
+ method_name('', '')
20
+ end
21
+
22
+ # @return [Symbol]
23
+ def get_optional_method_name # rubocop:disable Naming/AccessorMethodName
24
+ method_name('', '_optional')
25
+ end
26
+
27
+ # @return [Symbol]
28
+ def inherited_block_method_name
29
+ method_name('', '_inherited_value_proc')
30
+ end
31
+
32
+ # @return [String]
33
+ def variableize
34
+ parts.join('_')
35
+ end
36
+
37
+ private
38
+
39
+ # @param before [String]
40
+ # @param after [String]
41
+ # @return [Symbol]
42
+ def method_name(before, after)
43
+ :"#{before}#{variableize}#{after}"
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support/core_ext/object/blank'
4
+
5
+ module Avm
6
+ # String with paths like PATH variable.
7
+ # Note: the separator is not system dependent.
8
+ class PathString < String
9
+ SEPARATOR = ':'
10
+
11
+ class << self
12
+ # Shortcut for [Avm::Paths.new(string).paths].
13
+ def paths(string)
14
+ new(string).paths
15
+ end
16
+ end
17
+
18
+ def initialize(string = nil)
19
+ super(string.to_s)
20
+ end
21
+
22
+ # @return [Array] List of paths. Blank paths are rejected.
23
+ def paths
24
+ split(SEPARATOR).compact_blank
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/registry/from_gems'
4
+
5
+ module Avm
6
+ module Registry
7
+ class ApplicationScms < ::Avm::Registry::FromGems
8
+ def class_detect(klass, detect_args)
9
+ return nil unless klass.type_name == detect_args.fetch(0).scm_type
10
+
11
+ klass.new(*detect_args)
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/application_stereotypes/base'
4
+ require 'avm/registry/application_stereotypes/stereotype_builder'
5
+ require 'eac_ruby_utils/core_ext'
6
+
7
+ module Avm
8
+ module Registry
9
+ class ApplicationStereotypes
10
+ class BuildAvailable
11
+ enable_method_class
12
+
13
+ common_constructor :owner
14
+
15
+ def result
16
+ reset_buffer
17
+ read_registries
18
+ buffer.values.map(&:build)
19
+ end
20
+
21
+ private
22
+
23
+ attr_accessor :buffer
24
+
25
+ def read_object(type, object)
26
+ buffer[object.stereotype_namespace_module] ||=
27
+ ::Avm::Registry::ApplicationStereotypes::StereotypeBuilder
28
+ .new(object.stereotype_namespace_module)
29
+ buffer[object.stereotype_namespace_module].add_object(type, object)
30
+ end
31
+
32
+ def read_registries
33
+ ::Avm::ApplicationStereotypes::Base.lists.resource.each_value do |resource|
34
+ read_registry(resource)
35
+ end
36
+ end
37
+
38
+ def read_registry(resource)
39
+ ::Avm::Registry.send(resource.to_s.pluralize).available
40
+ .each { |obj| read_object(resource, obj) }
41
+ end
42
+
43
+ def reset_buffer
44
+ self.buffer = {}
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end