eac_tools 0.113.0 → 0.114.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 (319) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +33 -37
  3. data/eac_tools.gemspec +3 -3
  4. data/lib/eac_tools/version.rb +1 -1
  5. data/sub/avm/avm.gemspec +28 -0
  6. data/sub/avm/lib/avm/application_scms/base.rb +37 -0
  7. data/sub/avm/lib/avm/application_stereotypes/base.rb +29 -0
  8. data/sub/avm/lib/avm/applications/base/auto_local_source_path.rb +22 -0
  9. data/sub/avm/lib/avm/applications/base/local_instance.rb +28 -0
  10. data/sub/avm/lib/avm/applications/base/local_source.rb +31 -0
  11. data/sub/avm/lib/avm/applications/base/naming.rb +26 -0
  12. data/sub/avm/lib/avm/applications/base/organization.rb +27 -0
  13. data/sub/avm/lib/avm/applications/base/publishing.rb +39 -0
  14. data/sub/avm/lib/avm/applications/base/scm.rb +24 -0
  15. data/sub/avm/lib/avm/applications/base/stereotype.rb +29 -0
  16. data/sub/avm/lib/avm/applications/base.rb +34 -0
  17. data/sub/avm/lib/avm/data/callbacks.rb +36 -0
  18. data/sub/avm/lib/avm/data/clearer.rb +17 -0
  19. data/sub/avm/lib/avm/data/dumper.rb +137 -0
  20. data/sub/avm/lib/avm/data/loader.rb +23 -0
  21. data/sub/avm/lib/avm/data/package/base_performer.rb +36 -0
  22. data/sub/avm/lib/avm/data/package/build_directory.rb +25 -0
  23. data/sub/avm/lib/avm/data/package/clear.rb +19 -0
  24. data/sub/avm/lib/avm/data/package/dump.rb +42 -0
  25. data/sub/avm/lib/avm/data/package/load.rb +33 -0
  26. data/sub/avm/lib/avm/data/package.rb +64 -0
  27. data/sub/avm/lib/avm/data/performer.rb +45 -0
  28. data/sub/avm/lib/avm/data/rotate.rb +106 -0
  29. data/sub/avm/lib/avm/data/unit.rb +44 -0
  30. data/sub/avm/lib/avm/data/unit_with_commands.rb +48 -0
  31. data/sub/avm/lib/avm/docker/container.rb +47 -0
  32. data/sub/avm/lib/avm/docker/image.rb +70 -0
  33. data/sub/avm/lib/avm/docker/runner.rb +129 -0
  34. data/sub/avm/lib/avm/entries/auto_values/entry.rb +36 -0
  35. data/sub/avm/lib/avm/entries/auto_values/uri_entry.rb +21 -0
  36. data/sub/avm/lib/avm/entries/base/inherited_entry_value.rb +42 -0
  37. data/sub/avm/lib/avm/entries/base/uri_component_entry_value/default_value.rb +24 -0
  38. data/sub/avm/lib/avm/entries/base/uri_component_entry_value/inherited_value.rb +35 -0
  39. data/sub/avm/lib/avm/entries/base/uri_component_entry_value/url_entry_value.rb +27 -0
  40. data/sub/avm/lib/avm/entries/base/uri_component_entry_value.rb +40 -0
  41. data/sub/avm/lib/avm/entries/base/uri_components_entries_values/component_factory.rb +40 -0
  42. data/sub/avm/lib/avm/entries/base/uri_components_entries_values/generic_component.rb +59 -0
  43. data/sub/avm/lib/avm/entries/base/uri_components_entries_values/path_component.rb +16 -0
  44. data/sub/avm/lib/avm/entries/base/uri_components_entries_values/url_component.rb +22 -0
  45. data/sub/avm/lib/avm/entries/base/uri_components_entries_values.rb +23 -0
  46. data/sub/avm/lib/avm/entries/base.rb +53 -0
  47. data/sub/avm/lib/avm/entries/entry/no_context_entry.rb +21 -0
  48. data/sub/avm/lib/avm/entries/entry.rb +69 -0
  49. data/sub/avm/lib/avm/entries/jobs/base.rb +58 -0
  50. data/sub/avm/lib/avm/entries/jobs/variables_source/read_entry.rb +48 -0
  51. data/sub/avm/lib/avm/entries/jobs/variables_source.rb +13 -0
  52. data/sub/avm/lib/avm/entries/jobs/with_variables_source.rb +13 -0
  53. data/sub/avm/lib/avm/entries/keys_constants_set.rb +41 -0
  54. data/sub/avm/lib/avm/entries/uri_builder.rb +87 -0
  55. data/sub/avm/lib/avm/executables.rb +21 -0
  56. data/sub/avm/lib/avm/file_formats/base.rb +34 -0
  57. data/sub/avm/lib/avm/file_formats/file_result.rb +11 -0
  58. data/sub/avm/lib/avm/file_formats/search_formatter.rb +83 -0
  59. data/sub/avm/lib/avm/file_formats/unknown.rb +15 -0
  60. data/sub/avm/lib/avm/file_formats/utf8_assert.rb +72 -0
  61. data/sub/avm/lib/avm/files/appendable/file_content.rb +28 -0
  62. data/sub/avm/lib/avm/files/appendable/plain_directory.rb +27 -0
  63. data/sub/avm/lib/avm/files/appendable/resource_base.rb +17 -0
  64. data/sub/avm/lib/avm/files/appendable/tar_output_command.rb +27 -0
  65. data/sub/avm/lib/avm/files/appendable/templatized_directory.rb +36 -0
  66. data/sub/avm/lib/avm/files/appendable.rb +51 -0
  67. data/sub/avm/lib/avm/files/appender.rb +9 -0
  68. data/sub/avm/lib/avm/files/deploy.rb +70 -0
  69. data/sub/avm/lib/avm/files/text_replacer/gsub.rb +22 -0
  70. data/sub/avm/lib/avm/files/text_replacer.rb +29 -0
  71. data/sub/avm/lib/avm/instances/base/auto_values/data.rb +28 -0
  72. data/sub/avm/lib/avm/instances/base/auto_values/database.rb +60 -0
  73. data/sub/avm/lib/avm/instances/base/auto_values/mailer.rb +31 -0
  74. data/sub/avm/lib/avm/instances/base/auto_values/source.rb +16 -0
  75. data/sub/avm/lib/avm/instances/base/auto_values.rb +12 -0
  76. data/sub/avm/lib/avm/instances/base/dockerizable.rb +41 -0
  77. data/sub/avm/lib/avm/instances/base/entry_keys.rb +25 -0
  78. data/sub/avm/lib/avm/instances/base/install.rb +28 -0
  79. data/sub/avm/lib/avm/instances/base/processes.rb +25 -0
  80. data/sub/avm/lib/avm/instances/base/production.rb +33 -0
  81. data/sub/avm/lib/avm/instances/base/subcommand_parent.rb +23 -0
  82. data/sub/avm/lib/avm/instances/base/web.rb +15 -0
  83. data/sub/avm/lib/avm/instances/base.rb +70 -0
  84. data/sub/avm/lib/avm/instances/data/files_unit.rb +57 -0
  85. data/sub/avm/lib/avm/instances/data/loading_denied_error.rb +10 -0
  86. data/sub/avm/lib/avm/instances/data/package.rb +25 -0
  87. data/sub/avm/lib/avm/instances/data/unit.rb +36 -0
  88. data/sub/avm/lib/avm/instances/docker_image.rb +13 -0
  89. data/sub/avm/lib/avm/instances/entry_keys.rb +39 -0
  90. data/sub/avm/lib/avm/instances/ids.rb +28 -0
  91. data/sub/avm/lib/avm/instances/process.rb +29 -0
  92. data/sub/avm/lib/avm/instances/runner.rb +34 -0
  93. data/sub/avm/lib/avm/launcher/context/instance_collector.rb +44 -0
  94. data/sub/avm/lib/avm/launcher/context/instance_discovery/root_instance_paths.rb +51 -0
  95. data/sub/avm/lib/avm/launcher/context/instance_discovery.rb +53 -0
  96. data/sub/avm/lib/avm/launcher/context/instance_manager/cached_instance.rb +34 -0
  97. data/sub/avm/lib/avm/launcher/context/instance_manager/cached_instances.rb +32 -0
  98. data/sub/avm/lib/avm/launcher/context/instance_manager.rb +74 -0
  99. data/sub/avm/lib/avm/launcher/context/settings.rb +51 -0
  100. data/sub/avm/lib/avm/launcher/context.rb +83 -0
  101. data/sub/avm/lib/avm/launcher/errors/base.rb +10 -0
  102. data/sub/avm/lib/avm/launcher/errors/non_project.rb +13 -0
  103. data/sub/avm/lib/avm/launcher/instances/base/cache.rb +43 -0
  104. data/sub/avm/lib/avm/launcher/instances/base/publishing.rb +53 -0
  105. data/sub/avm/lib/avm/launcher/instances/base.rb +77 -0
  106. data/sub/avm/lib/avm/launcher/instances/error.rb +10 -0
  107. data/sub/avm/lib/avm/launcher/instances/runner_helper.rb +43 -0
  108. data/sub/avm/lib/avm/launcher/instances/settings.rb +24 -0
  109. data/sub/avm/lib/avm/launcher/paths/logical.rb +76 -0
  110. data/sub/avm/lib/avm/launcher/paths/real.rb +44 -0
  111. data/sub/avm/lib/avm/launcher/project.rb +15 -0
  112. data/sub/avm/lib/avm/launcher/publish/base.rb +44 -0
  113. data/sub/avm/lib/avm/launcher/publish/check_result.rb +64 -0
  114. data/sub/avm/lib/avm/launcher/stereotype.rb +63 -0
  115. data/sub/avm/lib/avm/patches/eac_config/entry_path.rb +44 -0
  116. data/sub/avm/lib/avm/path_string.rb +27 -0
  117. data/sub/avm/lib/avm/registry/application_scms.rb +13 -0
  118. data/sub/avm/lib/avm/registry/application_stereotypes/build_available.rb +45 -0
  119. data/sub/avm/lib/avm/registry/application_stereotypes/stereotype_builder.rb +30 -0
  120. data/sub/avm/lib/avm/registry/application_stereotypes.rb +42 -0
  121. data/sub/avm/lib/avm/registry/applications.rb +35 -0
  122. data/sub/avm/lib/avm/registry/base.rb +26 -0
  123. data/sub/avm/lib/avm/registry/config_objects.rb +15 -0
  124. data/sub/avm/lib/avm/registry/detection_error.rb +8 -0
  125. data/sub/avm/lib/avm/registry/file_formats.rb +17 -0
  126. data/sub/avm/lib/avm/registry/from_gems.rb +67 -0
  127. data/sub/avm/lib/avm/registry/instances.rb +13 -0
  128. data/sub/avm/lib/avm/registry/launcher_stereotypes.rb +8 -0
  129. data/sub/avm/lib/avm/registry/runners.rb +8 -0
  130. data/sub/avm/lib/avm/registry/scms.rb +8 -0
  131. data/sub/avm/lib/avm/registry/source_generators.rb +14 -0
  132. data/sub/avm/lib/avm/registry/sources.rb +38 -0
  133. data/sub/avm/lib/avm/registry/with_path/cache.rb +28 -0
  134. data/sub/avm/lib/avm/registry/with_path.rb +44 -0
  135. data/sub/avm/lib/avm/registry.rb +31 -0
  136. data/sub/avm/lib/avm/result.rb +80 -0
  137. data/sub/avm/lib/avm/rspec/launcher_controller.rb +91 -0
  138. data/sub/avm/lib/avm/rspec/setup/launcher.rb +18 -0
  139. data/sub/avm/lib/avm/rspec/setup/source_generator.rb +20 -0
  140. data/sub/avm/lib/avm/rspec/setup.rb +32 -0
  141. data/sub/avm/lib/avm/rspec/shared_examples/avm_file_format_file_resource_name.rb +13 -0
  142. data/sub/avm/lib/avm/rspec/shared_examples/avm_file_formats_with_fixtures.rb +28 -0
  143. data/sub/avm/lib/avm/rspec/shared_examples/avm_source_generated.rb +27 -0
  144. data/sub/avm/lib/avm/rspec/shared_examples/entries_values.rb +19 -0
  145. data/sub/avm/lib/avm/rspec/shared_examples/in_avm_registry.rb +9 -0
  146. data/sub/avm/lib/avm/rspec/shared_examples/not_in_avm_registry.rb +12 -0
  147. data/sub/avm/lib/avm/rspec/shared_examples/with_config.rb +9 -0
  148. data/sub/avm/lib/avm/rspec/shared_examples/with_launcher.rb +13 -0
  149. data/sub/avm/lib/avm/runner_with/file_replacer.rb +28 -0
  150. data/sub/avm/lib/avm/runner_with/filesystem_renamer.rb +99 -0
  151. data/sub/avm/lib/avm/runner_with/filesystem_traverser.rb +49 -0
  152. data/sub/avm/lib/avm/runners/base.rb +25 -0
  153. data/sub/avm/lib/avm/scms/auto_commit/file_resource_name.rb +47 -0
  154. data/sub/avm/lib/avm/scms/auto_commit/for_file.rb +79 -0
  155. data/sub/avm/lib/avm/scms/auto_commit/rules/base.rb +37 -0
  156. data/sub/avm/lib/avm/scms/auto_commit/rules/last.rb +17 -0
  157. data/sub/avm/lib/avm/scms/auto_commit/rules/manual.rb +38 -0
  158. data/sub/avm/lib/avm/scms/auto_commit/rules/new.rb +21 -0
  159. data/sub/avm/lib/avm/scms/auto_commit/rules/nth.rb +29 -0
  160. data/sub/avm/lib/avm/scms/auto_commit/rules/unique.rb +19 -0
  161. data/sub/avm/lib/avm/scms/auto_commit/rules.rb +32 -0
  162. data/sub/avm/lib/avm/scms/base/branches.rb +20 -0
  163. data/sub/avm/lib/avm/scms/base/commits.rb +32 -0
  164. data/sub/avm/lib/avm/scms/base/milestones.rb +19 -0
  165. data/sub/avm/lib/avm/scms/base/remotes.rb +20 -0
  166. data/sub/avm/lib/avm/scms/base.rb +59 -0
  167. data/sub/avm/lib/avm/scms/branch.rb +24 -0
  168. data/sub/avm/lib/avm/scms/changed_file.rb +46 -0
  169. data/sub/avm/lib/avm/scms/commit.rb +64 -0
  170. data/sub/avm/lib/avm/scms/commit_info.rb +37 -0
  171. data/sub/avm/lib/avm/scms/inflector.rb +22 -0
  172. data/sub/avm/lib/avm/scms/interval.rb +16 -0
  173. data/sub/avm/lib/avm/scms/null/commit.rb +11 -0
  174. data/sub/avm/lib/avm/scms/null.rb +16 -0
  175. data/sub/avm/lib/avm/scms/remote.rb +9 -0
  176. data/sub/avm/lib/avm/self/docker_image.rb +11 -0
  177. data/sub/avm/lib/avm/self/instance/entry_keys.rb +12 -0
  178. data/sub/avm/lib/avm/self/instance.rb +27 -0
  179. data/sub/avm/lib/avm/source_generators/base.rb +69 -0
  180. data/sub/avm/lib/avm/source_generators/option.rb +11 -0
  181. data/sub/avm/lib/avm/source_generators/option_list.rb +29 -0
  182. data/sub/avm/lib/avm/source_generators/runner.rb +55 -0
  183. data/sub/avm/lib/avm/sources/auto_commit/for_file.rb +29 -0
  184. data/sub/avm/lib/avm/sources/base/application.rb +32 -0
  185. data/sub/avm/lib/avm/sources/base/configuration.rb +89 -0
  186. data/sub/avm/lib/avm/sources/base/instance.rb +13 -0
  187. data/sub/avm/lib/avm/sources/base/locale.rb +30 -0
  188. data/sub/avm/lib/avm/sources/base/organizational.rb +30 -0
  189. data/sub/avm/lib/avm/sources/base/parent.rb +26 -0
  190. data/sub/avm/lib/avm/sources/base/stereotype.rb +16 -0
  191. data/sub/avm/lib/avm/sources/base/sub/remove.rb +36 -0
  192. data/sub/avm/lib/avm/sources/base/sub.rb +23 -0
  193. data/sub/avm/lib/avm/sources/base/subs.rb +63 -0
  194. data/sub/avm/lib/avm/sources/base/subs_paths.rb +30 -0
  195. data/sub/avm/lib/avm/sources/base/testing.rb +67 -0
  196. data/sub/avm/lib/avm/sources/base/update.rb +37 -0
  197. data/sub/avm/lib/avm/sources/base/update_sub.rb +55 -0
  198. data/sub/avm/lib/avm/sources/base/update_subs.rb +17 -0
  199. data/sub/avm/lib/avm/sources/base/version_bump.rb +26 -0
  200. data/sub/avm/lib/avm/sources/base.rb +56 -0
  201. data/sub/avm/lib/avm/sources/configuration/rubocop.rb +26 -0
  202. data/sub/avm/lib/avm/sources/configuration.rb +57 -0
  203. data/sub/avm/lib/avm/sources/issues/deliver.rb +51 -0
  204. data/sub/avm/lib/avm/sources/runner.rb +38 -0
  205. data/sub/avm/lib/avm/sources/tests/builder.rb +94 -0
  206. data/sub/avm/lib/avm/sources/tests/performer.rb +32 -0
  207. data/sub/avm/lib/avm/sources/tests/result.rb +13 -0
  208. data/sub/avm/lib/avm/sources/tests/single.rb +71 -0
  209. data/sub/avm/lib/avm/sources/update_error.rb +8 -0
  210. data/sub/avm/lib/avm/sync.rb +90 -0
  211. data/sub/avm/lib/avm/version.rb +5 -0
  212. data/sub/avm/lib/avm/version_number.rb +45 -0
  213. data/sub/avm/lib/avm/with/application_stereotype.rb +29 -0
  214. data/sub/avm/lib/avm/with/extra_subcommands.rb +41 -0
  215. data/sub/avm/lib/avm.rb +18 -0
  216. data/sub/avm/locale/en.yml +6 -0
  217. data/sub/avm/locale/pt-BR.yml +6 -0
  218. data/sub/avm/spec/lib/avm/applications/base/entries_spec.rb +29 -0
  219. data/sub/avm/spec/lib/avm/applications/base/entries_spec_files/config.yml +12 -0
  220. data/sub/avm/spec/lib/avm/applications/base_spec.rb +21 -0
  221. data/sub/avm/spec/lib/avm/applications/base_spec_fixture.yml +3 -0
  222. data/sub/avm/spec/lib/avm/file_formats/base_spec.rb +9 -0
  223. data/sub/avm/spec/lib/avm/instances/base/entries_spec.rb +78 -0
  224. data/sub/avm/spec/lib/avm/instances/base/entries_spec_files/config.yml +50 -0
  225. data/sub/avm/spec/lib/avm/instances/base_spec.rb +29 -0
  226. data/sub/avm/spec/lib/avm/launcher/context_spec.rb +98 -0
  227. data/sub/avm/spec/lib/avm/launcher/context_spec.yml +5 -0
  228. data/sub/avm/spec/lib/avm/launcher/context_spec_files/config.yml +9 -0
  229. data/sub/avm/spec/lib/avm/launcher/instances/base_spec.rb +39 -0
  230. data/sub/avm/spec/lib/avm/launcher/instances/base_spec_files/config.yml +5 -0
  231. data/sub/avm/spec/lib/avm/launcher/instances/base_spec_files/settings.yaml +5 -0
  232. data/sub/avm/spec/lib/avm/patches/eac_config/entry_path_spec.rb +26 -0
  233. data/sub/avm/spec/lib/avm/scms/auto_commit/file_resource_name_spec.rb +20 -0
  234. data/sub/avm/spec/lib/avm/scms/base_spec.rb +5 -0
  235. data/sub/avm/spec/lib/avm/sources/base_spec.rb +5 -0
  236. data/sub/avm/spec/lib/avm/sources/runner_spec.rb +7 -0
  237. data/sub/avm/spec/spec_helper/launcher_context/settings.yml +6 -0
  238. data/sub/{avm-eac_asciidoctor_base0 → avm}/spec/spec_helper.rb +4 -4
  239. data/sub/avm/template/avm/rspec/launcher_controller/dummy/avm-tools_stub/avm-tools.gemspec +29 -0
  240. data/sub/{avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0 → avm/template/avm/rspec/launcher_controller/dummy/avm-tools_stub/lib/avm/tools}/version.rb +2 -2
  241. data/sub/avm/template/avm/rspec/launcher_controller/dummy/avm-tools_stub/lib/avm/tools.rb +6 -0
  242. data/sub/avm/template/avm/rspec/launcher_controller/dummy/ruby_gem_stub/lib/ruby_gem_stub/version.rb +5 -0
  243. data/sub/avm/template/avm/rspec/launcher_controller/dummy/ruby_gem_stub/lib/ruby_gem_stub.rb +3 -0
  244. data/sub/avm/template/avm/rspec/launcher_controller/dummy/ruby_gem_stub/ruby_gem_stub.gemspec +16 -0
  245. data/sub/avm/template/avm/rspec/launcher_controller/settings.yml +1 -0
  246. data/sub/avm/template/avm/self/docker_image/Dockerfile +17 -0
  247. data/sub/avm/template/avm/self/docker_image/entrypoint.sh +12 -0
  248. metadata +253 -87
  249. data/sub/avm-eac_asciidoctor_base0/avm-eac_asciidoctor_base0.gemspec +0 -24
  250. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/documents_owner.rb +0 -27
  251. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/file_formats/base/file_resource_name.rb +0 -34
  252. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/file_formats/base.rb +0 -14
  253. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/apache_host.rb +0 -17
  254. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/apache_path.rb +0 -10
  255. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/base.rb +0 -28
  256. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document/body_source.rb +0 -49
  257. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document/body_target.rb +0 -35
  258. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document/children.rb +0 -47
  259. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document/header_lines.rb +0 -90
  260. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document/media.rb +0 -27
  261. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document/pre_process_line.rb +0 -62
  262. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document.rb +0 -49
  263. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/theme.rb +0 -38
  264. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build.rb +0 -61
  265. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/deploy.rb +0 -24
  266. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/macros/base.rb +0 -19
  267. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/macros/breadcrumbs.rb +0 -52
  268. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/macros/child_docs/document_builder.rb +0 -60
  269. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/macros/child_docs.rb +0 -30
  270. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/macros/default_body.rb +0 -18
  271. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/macros/todo.rb +0 -18
  272. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/logging/catcher.rb +0 -44
  273. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/logging/error.rb +0 -16
  274. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/source_generators/base.rb +0 -24
  275. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/base/instance_to_build.rb +0 -44
  276. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/base/theme.rb +0 -45
  277. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/base.rb +0 -42
  278. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/document/media.rb +0 -27
  279. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/document/title.rb +0 -30
  280. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/document.rb +0 -55
  281. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/runners/build.rb +0 -55
  282. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/runners/document/build.rb +0 -49
  283. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/runners/document.rb +0 -26
  284. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/runners/documents.rb +0 -26
  285. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/runners/ignore_errors_option.rb +0 -42
  286. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/runners.rb +0 -11
  287. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0.rb +0 -11
  288. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/file_formats/base_spec.rb +0 -11
  289. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build/document_spec.rb +0 -79
  290. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build/document_spec_files/pre_processed_root_body.adoc +0 -25
  291. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec.rb +0 -19
  292. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.source/content/_media/a_media_file +0 -1
  293. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.source/content/doc1/_media/a_media_file +0 -1
  294. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.source/content/doc1/body.adoc +0 -11
  295. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.source/content/doc1/title +0 -1
  296. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.source/content/doc2/body.adoc +0 -11
  297. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.source/content/doc2/doc2_1/_media/a_media_file +0 -1
  298. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.source/content/doc2/doc2_1/body.adoc +0 -11
  299. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.source/content/doc2/doc2_1/title +0 -1
  300. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.source/content/doc2/title +0 -1
  301. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.target/_media/a_media_file +0 -1
  302. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.target/_theme/main.css +0 -1
  303. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.target/doc1/_media/a_media_file +0 -1
  304. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.target/doc1/index.html +0 -1
  305. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.target/doc2/doc2_1/_media/a_media_file +0 -1
  306. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.target/doc2/doc2_1/index.html +0 -1
  307. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.target/doc2/index.html +0 -1
  308. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.target/index.html +0 -1
  309. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/source_generators/base_spec.rb +0 -5
  310. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/source_generators/base_spec_files/no_options/content/body.adoc +0 -11
  311. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/source_generators/base_spec_files/no_options/content/title +0 -1
  312. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/source_generators/base_spec_files/no_options/theme/main.css +0 -1
  313. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/sources/base_spec.rb +0 -13
  314. data/sub/avm-eac_asciidoctor_base0/spec/spec_helper/eac_asciidoctor_base0_stubs.rb +0 -55
  315. data/sub/avm-eac_asciidoctor_base0/template/avm/eac_asciidoctor_base0/source_generators/base/content/body.adoc +0 -11
  316. data/sub/avm-eac_asciidoctor_base0/template/avm/eac_asciidoctor_base0/source_generators/base/content/title +0 -1
  317. data/sub/avm-eac_asciidoctor_base0/template/avm/eac_asciidoctor_base0/source_generators/base/theme/main.css +0 -1
  318. /data/sub/{avm-eac_asciidoctor_base0 → avm}/Gemfile +0 -0
  319. /data/sub/{avm-eac_asciidoctor_base0/spec → avm/spec/meta}/rubocop_spec.rb +0 -0
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Files
5
+ module Appendable
6
+ class TemplatizedDirectory < ::Avm::Files::Appendable::ResourceBase
7
+ common_constructor :appender, :source_path, super_args: -> { [appender] }
8
+
9
+ # @return [Object]
10
+ def applier
11
+ return source_path if source_path.respond_to?(:apply)
12
+
13
+ applier_from_path
14
+ end
15
+
16
+ # @return [EacTemplates::Variables::Directory]
17
+ def applier_from_path
18
+ raise "\"#{source_path}\" is not a directory" unless ::File.directory?(source_path)
19
+
20
+ ::EacTemplates::Variables::Directory.new(source_path)
21
+ end
22
+
23
+ def write_on(target_dir)
24
+ raise 'Variables source not set' if appender.variables_source.blank?
25
+
26
+ applier.apply(appender.variables_source, target_dir)
27
+ end
28
+
29
+ # @return [Enumerable<Symbol>]
30
+ def to_s_attributes
31
+ [:source_path]
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Files
5
+ module Appendable
6
+ attr_reader :variables_source
7
+
8
+ def appended
9
+ @appended ||= []
10
+ end
11
+
12
+ def append_templatized_directories(directories)
13
+ directories.each { |directory| append_templatized_directory(directory) }
14
+ self
15
+ end
16
+
17
+ def append_plain_directory(directory)
18
+ appended << ::Avm::Files::Appendable::PlainDirectory.new(self, directory)
19
+ self
20
+ end
21
+
22
+ def append_tar_output_command(tar_command)
23
+ appended << ::Avm::Files::Appendable::TarOutputCommand.new(self, tar_command)
24
+ self
25
+ end
26
+
27
+ def append_templatized_directory(directory)
28
+ appended << ::Avm::Files::Appendable::TemplatizedDirectory.new(self, directory)
29
+ self
30
+ end
31
+
32
+ def append_file_content(target_path, content)
33
+ appended << ::Avm::Files::Appendable::FileContent
34
+ .new(self, target_path, content)
35
+ self
36
+ end
37
+
38
+ def variables_source_set(source)
39
+ @variables_source = source
40
+ self
41
+ end
42
+
43
+ def write_appended_on(target_dir)
44
+ target_dir = target_dir.to_pathname
45
+ raise "\"#{target_dir}\" is not a directory" unless target_dir.directory?
46
+
47
+ appended.each { |append| append.write_on(target_dir) }
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Files
5
+ class Appender
6
+ include ::Avm::Files::Appendable
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,70 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'addressable'
4
+
5
+ module Avm
6
+ module Files
7
+ class Deploy
8
+ include ::Avm::Files::Appendable
9
+
10
+ enable_simple_cache
11
+
12
+ attr_reader :build_dir, :target_env, :target_path
13
+
14
+ common_constructor :target_env, :target_path
15
+
16
+ def run
17
+ on_build_dir do
18
+ copy_content_to_build_dir
19
+ mkdir_target
20
+ clear_content
21
+ send_untar_package
22
+ set_target_permission
23
+ end
24
+ end
25
+
26
+ private
27
+
28
+ def on_build_dir
29
+ @build_dir = ::Dir.mktmpdir
30
+ yield
31
+ ensure
32
+ ::FileUtils.rm_rf(@build_dir)
33
+ end
34
+
35
+ def copy_content_to_build_dir
36
+ write_appended_on(build_dir)
37
+ end
38
+
39
+ def mkdir_target
40
+ target_env.command('mkdir', '-p', target_path).execute!
41
+ end
42
+
43
+ def clear_content
44
+ target_env.command(
45
+ 'find', target_path, '-mindepth', '1', '-maxdepth', '1', '-exec', 'rm', '-rf', '{}', ';'
46
+ ).execute!
47
+ end
48
+
49
+ def send_untar_package
50
+ tar_build_command.pipe(untar_build_command).execute!
51
+ end
52
+
53
+ def set_target_permission
54
+ target_env.command('chmod', '755', target_path).execute!
55
+ end
56
+
57
+ def tar_build_command
58
+ source_env.command('tar', '-czO', '-C', build_dir, '.')
59
+ end
60
+
61
+ def untar_build_command
62
+ target_env.command('tar', '-xzf', '-', '-C', target_path)
63
+ end
64
+
65
+ def source_env
66
+ ::EacRubyUtils::Envs.local
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Files
5
+ class TextReplacer
6
+ class Gsub
7
+ common_constructor :from, :to do
8
+ self.from = from
9
+ self.to = to
10
+ end
11
+
12
+ def apply(input)
13
+ input.gsub(from, to)
14
+ end
15
+
16
+ def to_s
17
+ "\"#{from}\" => \"#{to}\""
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Files
5
+ class TextReplacer
6
+ enable_immutable
7
+
8
+ immutable_accessor :replacement, type: :array
9
+
10
+ def apply(input)
11
+ replacements.inject(input) { |a, e| e.apply(a) }
12
+ end
13
+
14
+ def file_apply(file) # rubocop:disable Naming/PredicateMethod
15
+ file = file.to_pathname
16
+ input = file.read
17
+ output = apply(file.read)
18
+ return false if output == input
19
+
20
+ file.write(output)
21
+ true
22
+ end
23
+
24
+ def gsub(from, to)
25
+ replacement(::Avm::Files::TextReplacer::Gsub.new(from, to))
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Instances
5
+ class Base
6
+ module AutoValues
7
+ module Data
8
+ def auto_data_default_dump_path
9
+ ::Avm::Self::Instance
10
+ .default
11
+ .read_entry_optional(::Avm::Self::Instance::EntryKeys::DATA_DEFAULT_PATH)
12
+ .if_present do |v|
13
+ ::File.join(
14
+ v,
15
+ "#{id}#{data_package.data_file_extension}"
16
+ )
17
+ end
18
+ end
19
+
20
+ # @return [Boolean]
21
+ def auto_data_allow_loading # rubocop:disable Naming/PredicateMethod
22
+ local? || !production?
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,60 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Instances
5
+ class Base
6
+ module AutoValues
7
+ module Database
8
+ LOCAL_ADDRESS = '127.0.0.1'
9
+ LOCAL_ADDRESSES = [LOCAL_ADDRESS, '::1', 'localhost'].freeze
10
+ DEFAULT_EXTRA = ''
11
+ DEFAULT_HOSTNAME = LOCAL_ADDRESS
12
+ DEFAULT_LIMIT = 5
13
+ DEFAULT_PORTS = {
14
+ 'postgresql' => 5432,
15
+ 'mysql' => 3306,
16
+ 'oracle' => 1521,
17
+ 'sqlserver' => 1433
18
+ }.freeze
19
+ DEFAULT_SYSTEM = 'postgresql'
20
+ DEFAULT_TIMEOUT = 5000
21
+
22
+ %w[extra hostname limit system timeout].each do |attr|
23
+ define_method "auto_database_#{attr}" do
24
+ database_auto_common(attr) || self.class.const_get("default_#{attr}".upcase)
25
+ end
26
+ end
27
+
28
+ %w[username password].each do |attr|
29
+ define_method "auto_database_#{attr}" do
30
+ database_auto_common(attr) || id
31
+ end
32
+ end
33
+
34
+ def auto_database_name
35
+ inherited_entry_value(::Avm::Instances::EntryKeys::DATABASE_ID,
36
+ ::Avm::Instances::EntryKeys::DATABASE_NAME) || id
37
+ end
38
+
39
+ def auto_database_port
40
+ database_auto_common('port') || database_port_by_system
41
+ end
42
+
43
+ private
44
+
45
+ def database_auto_common(suffix)
46
+ database_key = ::Avm::Instances::EntryKeys.const_get("database_#{suffix}".upcase)
47
+ inherited_entry_value(::Avm::Instances::EntryKeys::DATABASE_ID, database_key) ||
48
+ inherited_entry_value(::Avm::Instances::EntryKeys::INSTALL_ID, database_key)
49
+ end
50
+
51
+ def database_port_by_system
52
+ read_entry_optional(::Avm::Instances::EntryKeys::DATABASE_SYSTEM).if_present do |v|
53
+ DEFAULT_PORTS.fetch(v)
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Instances
5
+ class Base
6
+ module AutoValues
7
+ module Mailer
8
+ ::Avm::Instances::EntryKeys.all.select { |c| c.to_s.start_with?('mailer.') }
9
+ .reject { |c| c == ::Avm::Instances::EntryKeys::MAILER_ID }
10
+ .each do |mailer_key|
11
+ define_method ::Avm::Entries::AutoValues::Entry.auto_value_method_name(mailer_key) do
12
+ mailer_auto_common(mailer_key)
13
+ end
14
+ end
15
+
16
+ def auto_mailer_id
17
+ inherited_entry_value(::Avm::Instances::EntryKeys::INSTALL_ID,
18
+ ::Avm::Instances::EntryKeys::MAILER_ID) ||
19
+ read_entry_optional(::Avm::Instances::EntryKeys::INSTALL_ID)
20
+ end
21
+
22
+ private
23
+
24
+ def mailer_auto_common(mailer_key)
25
+ inherited_entry_value(::Avm::Instances::EntryKeys::MAILER_ID, mailer_key)
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Instances
5
+ class Base
6
+ module AutoValues
7
+ module Source
8
+ def auto_source_instance_id
9
+ [application.id, ::Avm::Applications::Base::LocalInstance::LOCAL_INSTANCE_SUFFIX]
10
+ .join('_')
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Instances
5
+ class Base
6
+ module AutoValues
7
+ require_sub __FILE__, include_modules: true
8
+ common_concern
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Instances
5
+ class Base
6
+ module Dockerizable
7
+ enable_simple_cache
8
+ attr_reader :docker_image_options
9
+
10
+ def docker_image_options=(options)
11
+ @docker_image_options = ::ActiveSupport::HashWithIndifferentAccess.new(options)
12
+ reset_cache
13
+ end
14
+
15
+ def docker_container_exist?
16
+ ::EacDocker::Executables.docker.command.append(
17
+ ['ps', '-qaf', "name=#{docker_container_name}"]
18
+ ).execute!.present?
19
+ end
20
+
21
+ def docker_container_name
22
+ id
23
+ end
24
+
25
+ private
26
+
27
+ def docker_container_uncached
28
+ ::Avm::Docker::Container.new(self)
29
+ end
30
+
31
+ def docker_image_uncached
32
+ r = docker_image_class.new(docker_image_options.fetch(:registry))
33
+ r.instance = self if r.respond_to?(:instance)
34
+ r.version = docker_image_options[:version] if docker_image_options.key?(:version)
35
+ r.snapshot = docker_image_options[:snapshot] if docker_image_options.key?(:snapshot)
36
+ r
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Instances
5
+ class Base
6
+ module EntryKeys
7
+ # @return [Enumerable<String>]
8
+ def entry_keys
9
+ ::Avm::Instances::EntryKeys.all
10
+ end
11
+
12
+ ::Avm::Instances::EntryKeys.all.each do |key|
13
+ method_name = key.to_s.variableize
14
+ define_method method_name do
15
+ read_entry(key)
16
+ end
17
+
18
+ define_method "#{method_name}_optional" do
19
+ read_entry_optional(key)
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Instances
5
+ class Base
6
+ module Install
7
+ INSTALL_SCHEME_DEFAULT_VALUE = 'file'
8
+
9
+ common_concern do
10
+ uri_components_entries_values 'install', %w[data_path email groupname]
11
+ end
12
+
13
+ def install_data_path_inherited_value_proc(value)
14
+ "#{value}/#{id}"
15
+ end
16
+
17
+ def install_groupname_default_value
18
+ read_entry_optional(::Avm::Instances::EntryKeys::INSTALL_USERNAME)
19
+ end
20
+
21
+ # @return [String]
22
+ def install_scheme_default_value
23
+ INSTALL_SCHEME_DEFAULT_VALUE
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Instances
5
+ class Base
6
+ module Processes
7
+ # @return [Array<Avm::Instances::Process>]
8
+ def available_processes
9
+ processes.select(&:available?)
10
+ end
11
+
12
+ def on_disabled_processes(&block)
13
+ available_processes.inject(block) do |a, e|
14
+ -> { e.on_disabled(&a) }
15
+ end.call
16
+ end
17
+
18
+ # @return [Array<Avm::Instances::Process>]
19
+ def processes
20
+ []
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'addressable'
4
+
5
+ module Avm
6
+ module Instances
7
+ class Base
8
+ module Production
9
+ DEFAULT_PRODUCTION = true
10
+ PRODUCTION_KEY = 'production'
11
+
12
+ # @return [Boolean]
13
+ def default_production?
14
+ DEFAULT_PRODUCTION
15
+ end
16
+
17
+ # @return [Boolean]
18
+ def production?
19
+ if production_entry.found?
20
+ production_entry.value.to_bool
21
+ else
22
+ default_production?
23
+ end
24
+ end
25
+
26
+ # @return [Avm::Entries::Entry]
27
+ def production_entry
28
+ entry(PRODUCTION_KEY)
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Instances
5
+ class Base
6
+ class SubcommandParent
7
+ include ::EacCli::Runner
8
+
9
+ enable_simple_cache
10
+ common_constructor :instance do
11
+ self.runner_context = ::EacCli::Runner::Context.new(self, argv: runner_argv)
12
+ end
13
+ for_context :instance
14
+
15
+ private
16
+
17
+ def runner_argv
18
+ [instance.class.name.split('::')[-2].dasherize, instance.id]
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'addressable'
4
+
5
+ module Avm
6
+ module Instances
7
+ class Base
8
+ module Web
9
+ common_concern do
10
+ uri_components_entries_values 'web'
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,70 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Instances
5
+ class Base
6
+ enable_abstract_methods
7
+ enable_listable
8
+ enable_simple_cache
9
+ include ::Avm::Entries::Base
10
+
11
+ require_sub __FILE__, include_modules: true
12
+ include ::Avm::With::ExtraSubcommands
13
+ include ::Avm::With::ApplicationStereotype
14
+
15
+ lists.add_string :access, :local, :ssh
16
+
17
+ ID_PATTERN = /\A([a-z0-9]+(?:-[a-z0-9]+)*)_(.+)\z/.freeze
18
+
19
+ class << self
20
+ def by_id(id)
21
+ parsed_id = ::Avm::Instances::Ids.parse!(id)
22
+
23
+ new(::Avm::Applications::Base.new(parsed_id.application_id), parsed_id.instance_suffix)
24
+ end
25
+ end
26
+
27
+ common_constructor :application, :suffix do
28
+ self.suffix = suffix.to_s
29
+ end
30
+
31
+ # @return [Avm::Instances::Data::Package]
32
+ def data_package
33
+ @data_package ||= data_package_create
34
+ end
35
+
36
+ # @return [Avm::Instances::Data::Package]
37
+ def data_package_create
38
+ ::Avm::Instances::Data::Package.new(self)
39
+ end
40
+
41
+ # @return [String]
42
+ def id
43
+ ::Avm::Instances::Ids.build(application.id, suffix)
44
+ end
45
+
46
+ def to_s
47
+ id
48
+ end
49
+
50
+ def host_env_uncached
51
+ case install_scheme
52
+ when 'file' then ::EacRubyUtils::Envs.local
53
+ when 'ssh' then ::EacRubyUtils::Envs.ssh(install_url)
54
+ else raise("Unmapped access value: \"#{install_scheme}\"")
55
+ end
56
+ end
57
+
58
+ # @return [Boolean]
59
+ def local?
60
+ suffix == ::Avm::Applications::Base::LocalInstance::LOCAL_INSTANCE_SUFFIX
61
+ end
62
+
63
+ private
64
+
65
+ def source_instance_uncached
66
+ ::Avm::Instances::Base.by_id(source_instance_id)
67
+ end
68
+ end
69
+ end
70
+ end