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,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/eac_generic_base0/file_formats/base'
4
+ require 'avm/eac_webapp_base0/executables'
5
+
6
+ module Avm
7
+ module EacWebappBase0
8
+ module FileFormats
9
+ class Xml < ::Avm::EacGenericBase0::FileFormats::Base
10
+ VALID_BASENAMES = %w[*.svg *.xml].freeze
11
+ VALID_TYPES = ['image/svg+xml', 'xml'].freeze
12
+
13
+ def internal_apply(files)
14
+ format_command(files).system!
15
+ super(files)
16
+ end
17
+
18
+ def format_command(files)
19
+ ::Avm::EacWebappBase0::Executables.tidy.command.append(
20
+ %w[-xml -modify --indent auto --indent-spaces 2 --wrap 100] + files
21
+ )
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 EacWebappBase0
7
+ module FileFormats
8
+ require_sub __FILE__
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+ require 'avm/entries/jobs/base'
5
+ require 'avm/eac_ubuntu_base0/apache'
6
+ require 'eac_templates/core_ext'
7
+
8
+ module Avm
9
+ module EacWebappBase0
10
+ module Instances
11
+ class ApacheBase
12
+ # @return [String]
13
+ def document_root
14
+ instance.read_entry(::Avm::Instances::EntryKeys::INSTALL_PATH)
15
+ end
16
+
17
+ protected
18
+
19
+ def reload_apache
20
+ infom 'Reloading Apache...'
21
+ apache.service('reload')
22
+ end
23
+
24
+ private
25
+
26
+ # @return [Avm::EacUbuntuBase0::Apache]
27
+ def apache_uncached
28
+ instance.platform_instance.apache
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,78 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+ require 'avm/entries/jobs/base'
5
+ require 'avm/eac_ubuntu_base0/apache'
6
+ require 'avm/eac_webapp_base0/instances/apache_base'
7
+ require 'eac_templates/core_ext'
8
+
9
+ module Avm
10
+ module EacWebappBase0
11
+ module Instances
12
+ class ApacheHost < ::Avm::EacWebappBase0::Instances::ApacheBase
13
+ APACHE_DIRECTORY_EXTRA_CONFIG_KEY = 'install.apache_directory_extra_config'
14
+ JOBS = %w[write_available_no_ssl_site enable_no_ssl_site remove_ssl_site reload_apache
15
+ run_certbot enable_ssl_site reload_apache].freeze
16
+ include ::Avm::Entries::Jobs::Base
17
+
18
+ def directory_extra_config
19
+ instance.entry(APACHE_DIRECTORY_EXTRA_CONFIG_KEY).optional_value
20
+ .if_present { |v| " #{v}\n" }
21
+ end
22
+
23
+ def no_ssl_site_content
24
+ ::Avm::EacWebappBase0::Instances::ApacheHost
25
+ .template.child('no_ssl.conf')
26
+ .apply(variables_source)
27
+ end
28
+
29
+ def ssl?
30
+ options[:certbot]
31
+ end
32
+
33
+ private
34
+
35
+ def enable_no_ssl_site
36
+ infom 'Enabling no SSL site...'
37
+ no_ssl_site.enable
38
+ end
39
+
40
+ def enable_ssl_site
41
+ return unless ssl?
42
+
43
+ infom 'Enabling SSL site...'
44
+ ssl_site.enable
45
+ end
46
+
47
+ def no_ssl_site_uncached
48
+ apache.site(instance.id)
49
+ end
50
+
51
+ def remove_ssl_site
52
+ infom 'Removing SSL site...'
53
+ ssl_site.remove
54
+ end
55
+
56
+ def run_certbot
57
+ return unless ssl?
58
+
59
+ infom 'Running Certbot...'
60
+ instance.host_env.command(
61
+ 'sudo', 'certbot', '--apache', '--domain', instance.read_entry('web.hostname'),
62
+ '--redirect', '--non-interactive', '--agree-tos',
63
+ '--email', instance.install_email
64
+ ).system!
65
+ end
66
+
67
+ def ssl_site_uncached
68
+ apache.site("#{no_ssl_site.name}-le-ssl")
69
+ end
70
+
71
+ def write_available_no_ssl_site
72
+ infom 'Writing no SSL site conf...'
73
+ no_ssl_site.write(no_ssl_site_content)
74
+ end
75
+ end
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/entries/jobs/base'
4
+ require 'avm/eac_ubuntu_base0/apache'
5
+ require 'avm/eac_webapp_base0/instances/apache_base'
6
+ require 'eac_ruby_utils/core_ext'
7
+
8
+ module Avm
9
+ module EacWebappBase0
10
+ module Instances
11
+ class ApachePath < ::Avm::EacWebappBase0::Instances::ApacheBase
12
+ JOBS = %w[write_available_conf enable_conf reload_apache].freeze
13
+ include ::Avm::Entries::Jobs::Base
14
+
15
+ def content
16
+ ::Avm::EacWebappBase0::Instances::ApachePath.template.child('default.conf')
17
+ .apply(variables_source)
18
+ end
19
+
20
+ def extra_content
21
+ ''
22
+ end
23
+
24
+ private
25
+
26
+ def enable_conf
27
+ infom 'Enabling configuration...'
28
+ conf.enable
29
+ end
30
+
31
+ def conf_uncached
32
+ apache.conf(instance.id)
33
+ end
34
+
35
+ def write_available_conf
36
+ infom 'Writing available configuration...'
37
+ conf.write(content)
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacWebappBase0
5
+ module Instances
6
+ class Base < ::Avm::Instances::Base
7
+ module Apache
8
+ common_concern
9
+
10
+ class_methods do
11
+ # @return [Class]
12
+ def apache_path_class
13
+ ancestors.lazy.map { |ancestor| apache_path_class_by_ancestor(ancestor) }
14
+ .find(&:present?) || raise("No apache patch class found for \"#{self}\"")
15
+ end
16
+
17
+ private
18
+
19
+ # @param ancestor [Module]
20
+ # @return [Class]
21
+ def apache_path_class_by_ancestor(ancestor)
22
+ "#{ancestor.name.deconstantize}::ApachePath".constantize
23
+ rescue ::NameError
24
+ nil
25
+ end
26
+ end
27
+
28
+ # @return [Class]
29
+ def apache_path_class
30
+ self.class.apache_path_class
31
+ end
32
+
33
+ # @return [Avm::EacUbuntuBase0::Apache::Resource, nil]
34
+ def apache_resource
35
+ %i[conf site]
36
+ .lazy
37
+ .map { |type| platform_instance.apache.send(type, install_apache_resource_name) }
38
+ .find(&:available?)
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/eac_webapp_base0/instances/deploy_info'
4
+ require 'avm/instances/base'
5
+
6
+ module Avm
7
+ module EacWebappBase0
8
+ module Instances
9
+ class Base < ::Avm::Instances::Base
10
+ module DeployInfo
11
+ common_concern
12
+
13
+ DEPLOY_INFO_SUBPATH = '.deploy.yaml'
14
+
15
+ # @return [Avm::EacWebappBase0::Instances::DeployInfo]
16
+ def deploy_info
17
+ ::Avm::EacWebappBase0::Instances::DeployInfo.from_string(
18
+ host_env.command('cat', deploy_info_path).execute!
19
+ )
20
+ end
21
+
22
+ # @return [Pathname]
23
+ def deploy_info_path
24
+ install_path.to_pathname.join(DEPLOY_INFO_SUBPATH)
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/entries/uri_builder'
4
+ require 'avm/instances/entry_keys'
5
+
6
+ module Avm
7
+ module EacWebappBase0
8
+ module Instances
9
+ class Base < ::Avm::Instances::Base
10
+ module Install
11
+ common_concern do
12
+ uri_components_entries_values 'install', %w[apache_resource_name]
13
+ end
14
+
15
+ def install_apache_resource_name_default_value
16
+ id
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/instances/base'
4
+ require 'avm/eac_postgresql_base0/instance_with'
5
+ require 'avm/instances/data/files_unit'
6
+ require 'avm/instances/data/package'
7
+ require 'avm/eac_webapp_base0/instances/processes/web_server'
8
+ require 'avm/eac_webapp_base0/instances/runners'
9
+ require 'avm/eac_ubuntu_base0/instances/base'
10
+
11
+ module Avm
12
+ module EacWebappBase0
13
+ module Instances
14
+ class Base < ::Avm::Instances::Base
15
+ require_sub __FILE__, include_modules: true
16
+ include ::Avm::EacPostgresqlBase0::InstanceWith
17
+ enable_simple_cache
18
+
19
+ def run_subcommand(subcommand_class, argv)
20
+ subcommand_class.create(
21
+ argv: argv,
22
+ parent: ::Avm::Instances::Base::SubcommandParent.new(self)
23
+ ).run
24
+ end
25
+
26
+ def database_unit
27
+ pg_data_unit
28
+ end
29
+
30
+ # @return [Array<Avm::Instances::Process>]
31
+ def processes
32
+ super + [::Avm::EacWebappBase0::Instances::Processes::WebServer.new(self)]
33
+ end
34
+
35
+ private
36
+
37
+ # @return [Avm::EacUbuntuBase0::Instances::Base]
38
+ def platform_instance_uncached
39
+ ::Avm::EacUbuntuBase0::Instances::Base.by_id(id)
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/path_string'
4
+
5
+ module Avm
6
+ module EacWebappBase0
7
+ module Instances
8
+ class Deploy
9
+ module AppendedDirectories
10
+ APPENDED_DIRECTORIES_ENTRY_KEY = 'deploy.appended_directories'
11
+
12
+ def appended_directories
13
+ appended_directories_from_instance_entry + appended_directories_from_options
14
+ end
15
+
16
+ def appended_directories_from_instance_entry
17
+ ::Avm::PathString.paths(instance.read_entry_optional(APPENDED_DIRECTORIES_ENTRY_KEY))
18
+ end
19
+
20
+ def appended_directories_from_options
21
+ options[OPTION_APPENDED_DIRECTORIES] || []
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/files/appender'
4
+ require 'avm/files/deploy'
5
+ require 'eac_ruby_utils/envs'
6
+ require 'eac_ruby_utils/fs/temp'
7
+
8
+ module Avm
9
+ module EacWebappBase0
10
+ module Instances
11
+ class Deploy
12
+ module Build
13
+ private
14
+
15
+ attr_accessor :build_dir
16
+
17
+ def append_instance_content
18
+ ::Avm::Files::Appender
19
+ .new
20
+ .variables_source_set(variables_source)
21
+ .append_templatized_directory(template.path)
22
+ .append_templatized_directories(appended_directories)
23
+ .append_file_content(version_target_path, version)
24
+ .write_appended_on(build_dir)
25
+ end
26
+
27
+ def build_dir_env
28
+ ::EacRubyUtils::Envs.local
29
+ end
30
+
31
+ def create_build_dir
32
+ self.build_dir = ::EacRubyUtils::Fs::Temp.directory
33
+ end
34
+
35
+ def remove_build_dir
36
+ build_dir&.remove
37
+ end
38
+
39
+ def build_content
40
+ infom 'Writing Git source code...'
41
+ scm.commit(commit_reference).deploy_to_env_path(
42
+ build_dir_env,
43
+ build_dir
44
+ ).variables_source_set(variables_source).run
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/eac_webapp_base0/instances/deploy_info'
4
+ require 'avm/eac_webapp_base0/instances/base/deploy_info'
5
+
6
+ module Avm
7
+ module EacWebappBase0
8
+ module Instances
9
+ class Deploy
10
+ module Info
11
+ # @return [Hash]
12
+ def deploy_info
13
+ ::Avm::EacWebappBase0::Instances::DeployInfo.from_hash(
14
+ {
15
+ instance_id: instance.id,
16
+ time: ::Time.now,
17
+ commit_id: commit_reference,
18
+ commit_refs: version_git_refs,
19
+ version: version_number
20
+ }
21
+ )
22
+ end
23
+
24
+ # @return [String]
25
+ def version
26
+ deploy_info.to_yaml
27
+ end
28
+
29
+ def version_git_refs
30
+ git_remote_hashs.select { |_name, sha1| sha1 == commit_reference }.keys
31
+ .map { |ref| ref.gsub(%r{\Arefs/}, '') }.reject { |ref| ref == 'HEAD' }
32
+ end
33
+
34
+ # @return [String, nil]
35
+ def version_number
36
+ instance.application.local_source.version.if_present(&:to_s)
37
+ end
38
+
39
+ # @return [String]
40
+ def version_target_path
41
+ ::Avm::EacWebappBase0::Instances::Base::DeployInfo::DEPLOY_INFO_SUBPATH
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,72 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacWebappBase0
5
+ module Instances
6
+ class Deploy
7
+ module Scm
8
+ DEFAULT_REMOTE_NAME = 'origin'
9
+
10
+ def commit_reference_uncached
11
+ git_fetch
12
+ r = git.rev_parse(git_reference_found)
13
+ return r if r
14
+
15
+ raise ::Avm::Result::Error, "No commit SHA1 found for \"#{git_reference_found}\""
16
+ end
17
+
18
+ def git_fetch_uncached
19
+ infom "Fetching remote \"#{git_remote_name}\" from \"#{git_repository_path}\"..."
20
+ git.remote(git_remote_name).fetch
21
+ end
22
+
23
+ def git_reference
24
+ options[OPTION_REFERENCE] || DEFAULT_REFERENCE
25
+ end
26
+
27
+ def git_reference_found_uncached
28
+ %w[git_reference instance_branch master_branch].map { |b| send(b) }.find(&:present?) ||
29
+ raise(
30
+ ::Avm::Result::Error,
31
+ 'No git reference found (Searched for option, instance and master)'
32
+ )
33
+ end
34
+
35
+ def git_remote_hashs_uncached
36
+ git.remote(git_remote_name).ls.hashes
37
+ end
38
+
39
+ def git_remote_name
40
+ DEFAULT_REMOTE_NAME
41
+ end
42
+
43
+ def git_repository_path
44
+ instance.source_instance.read_entry(::Avm::Instances::EntryKeys::INSTALL_PATH)
45
+ end
46
+
47
+ # @return [EacGit::Local]
48
+ def git_uncached
49
+ scm.git_repo
50
+ end
51
+
52
+ def instance_branch
53
+ remote_branch(instance.id)
54
+ end
55
+
56
+ def remote_branch(name)
57
+ git_remote_hashs.key?("refs/heads/#{name}") ? "#{git_remote_name}/#{name}" : nil
58
+ end
59
+
60
+ def master_branch
61
+ remote_branch('master')
62
+ end
63
+
64
+ # @return [Avm::Scms::Base]
65
+ def scm
66
+ instance.application.local_source.scm
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacWebappBase0
5
+ module Instances
6
+ class Deploy
7
+ class SetupFilesUnit < ::SimpleDelegator
8
+ enable_method_class
9
+ attr_reader :data_key, :fs_path_subpath
10
+
11
+ def initialize(deploy, data_key, fs_path_subpath)
12
+ super(deploy)
13
+ @data_key = data_key
14
+ @fs_path_subpath = fs_path_subpath
15
+ end
16
+
17
+ def result
18
+ assert_source_directory
19
+ link_source_target
20
+ end
21
+
22
+ def assert_source_directory
23
+ infom "Asserting \"#{data_key}\" source directory..."
24
+ instance.host_env.command('mkdir', '-p', source_path).execute!
25
+ end
26
+
27
+ def source_path
28
+ ::File.join(instance.install_data_path, data_key.to_s)
29
+ end
30
+
31
+ def target_path
32
+ ::File.join(instance.read_entry(::Avm::Instances::EntryKeys::INSTALL_PATH),
33
+ fs_path_subpath.to_s)
34
+ end
35
+
36
+ def link_source_target
37
+ infom "Linking \"#{data_key}\" directory..."
38
+ return unless remove_target
39
+
40
+ instance.host_env.command('ln', '-s', source_path, target_path).execute!
41
+ end
42
+
43
+ private
44
+
45
+ # @return [Boolean]
46
+ def remove_target
47
+ instance.host_env.command('rm', '-rf', target_path).execute.fetch(:exit_code).zero?
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module EacWebappBase0
7
+ module Instances
8
+ class Deploy
9
+ module WriteOnTarget
10
+ def write_on_target
11
+ ::Avm::Files::Deploy.new(
12
+ instance.host_env,
13
+ instance.read_entry(::Avm::Instances::EntryKeys::INSTALL_PATH)
14
+ ).append_plain_directory(build_dir).run
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,73 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support/callbacks'
4
+ require 'avm/entries/jobs/base'
5
+ require 'eac_ruby_utils/core_ext'
6
+ require 'eac_templates/core_ext'
7
+ require 'net/http'
8
+
9
+ module Avm
10
+ module EacWebappBase0
11
+ module Instances
12
+ class Deploy
13
+ require_sub __FILE__, include_modules: true, require_dependency: true
14
+
15
+ DEFAULT_REFERENCE = 'HEAD'
16
+
17
+ REQUEST_TEST_JOB = 'request_test'
18
+ JOBS = (%w[create_build_dir build_content append_instance_content write_on_target
19
+ setup_files_units assert_instance_branch] + [REQUEST_TEST_JOB]).freeze
20
+
21
+ include ::Avm::Entries::Jobs::Base
22
+
23
+ lists.add_symbol :option, :appended_directories, :no_request_test, :reference
24
+
25
+ def option_list
26
+ ::Avm::EacWebappBase0::Instances::Deploy.lists.option
27
+ end
28
+
29
+ def run
30
+ super
31
+ ensure
32
+ remove_build_dir
33
+ end
34
+
35
+ def start_banner
36
+ infov 'Instance', instance
37
+ infov 'Git reference (User)', git_reference.if_present('- BLANK -')
38
+ infov 'Git remote name', git_remote_name
39
+ infov 'Git reference (Found)', git_reference_found
40
+ infov 'Git commit SHA1', commit_reference
41
+ infov 'Appended directories', appended_directories
42
+ end
43
+
44
+ def setup_files_units
45
+ instance.data_package.units.values.map(&:installation_files_data).select(&:present?)
46
+ .each { |unit_install| setup_files_unit(unit_install.key, unit_install.subpath) }
47
+ end
48
+
49
+ def assert_instance_branch
50
+ infom 'Setting instance branch...'
51
+ git.command('push', git_remote_name, "#{commit_reference}:refs/heads/#{instance.id}",
52
+ '-f').execute!
53
+ end
54
+
55
+ def request_test
56
+ infom 'Requesting web interface...'
57
+ uri = URI(instance.read_entry('web.url'))
58
+ response = ::Net::HTTP.get_response(uri)
59
+ infov 'Response status', response.code
60
+ fatal_error "Request to #{uri} failed" unless response.code.to_i == 200
61
+ end
62
+
63
+ protected
64
+
65
+ def jobs
66
+ r = super
67
+ r.delete(REQUEST_TEST_JOB) if options[OPTION_NO_REQUEST_TEST]
68
+ r
69
+ end
70
+ end
71
+ end
72
+ end
73
+ end