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,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module Sources
7
+ class Base
8
+ module Parent
9
+ # @return [Avm::Sources::Base]
10
+ def parent_by_option
11
+ options[OPTION_PARENT]
12
+ end
13
+
14
+ # @return [Avm::Sources::Base]
15
+ def parent_by_search
16
+ ::Avm::Registry.sources.detect_by_path_optional(path.parent)
17
+ end
18
+
19
+ private
20
+
21
+ # @return [Avm::Sources::Base]
22
+ def parent_uncached
23
+ parent_by_option || parent_by_search
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module Sources
7
+ class Base
8
+ module Stereotype
9
+ STEREOTYPE_NAME_KEY = 'stereotype'
10
+
11
+ # @return [String, nil]
12
+ def stereotype_name_by_configuration
13
+ configuration.entry(STEREOTYPE_NAME_KEY).value
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module Sources
7
+ class Base
8
+ class Sub
9
+ class Remove
10
+ acts_as_instance_method
11
+
12
+ # !method initialize(sub)
13
+ # @param sub [Avm::Sources::Base::Sub]
14
+ common_constructor :sub
15
+ delegate :source, to: :sub
16
+
17
+ # @return [void]
18
+ def result
19
+ source.scm.commit_if_change(commit_message) { do_changes }
20
+ end
21
+
22
+ private
23
+
24
+ # @return [String]
25
+ def commit_message
26
+ sub.i18n_translate(:remove_commit_message, sub_path: sub.sub_path)
27
+ end
28
+
29
+ # @return [void]
30
+ def do_changes
31
+ ::FileUtils.rm_rf(sub.absolute_path)
32
+ source.on_sub_updated
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/sources/base/subs_paths'
4
+ require 'eac_ruby_utils/core_ext'
5
+
6
+ module Avm
7
+ module Sources
8
+ class Base
9
+ class Sub
10
+ # !method initialize(source, sub_path)
11
+ # @param source [Avm::Sources::Base]
12
+ # @param sub_path [Pathname]
13
+ common_constructor :source, :sub_path do
14
+ self.sub_path = sub_path.to_pathname
15
+ end
16
+
17
+ # @return [Pathname]
18
+ def absolute_path
19
+ sub_path.expand_path(source.path)
20
+ end
21
+
22
+ require_sub __FILE__, require_mode: :kernel
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,67 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/sources/base/sub'
4
+ require 'avm/sources/base/subs_paths'
5
+ require 'eac_ruby_utils/core_ext'
6
+
7
+ module Avm
8
+ module Sources
9
+ class Base
10
+ module Subs
11
+ CONFIGURATION_SUBS_EXCLUDE_PATHS_KEY = 'subs.exclude_path'
12
+ CONFIGURATION_SUBS_INCLUDE_PATHS_KEY = 'subs.include_path'
13
+ SUBS_EXCLUDE_PATHS_DEFAULT = [].freeze
14
+ SUBS_INCLUDE_PATHS_DEFAULT = ['sub/*'].freeze
15
+
16
+ # @return [Avm::Sources::Base, nil]
17
+ def sub_for_path(path)
18
+ subs.lazy.map { |sub| path.expand_path.child_of?(sub.path) ? sub : nil }.find(&:present?)
19
+ end
20
+
21
+ # @param sub_path [Pathname]
22
+ # @return [Avm::Sources::Base::Sub]
23
+ def sub(sub_path)
24
+ ::Avm::Sources::Base::Sub.new(self, sub_path)
25
+ end
26
+
27
+ # @return [Enumerable<Avm::Sources::Base>]
28
+ def subs
29
+ subs_paths_to_search
30
+ .map { |sub_path| ::Avm::Registry.sources.detect_optional(sub_path, parent: self) }
31
+ .compact_blank
32
+ .sort_by { |sub| [sub.path] }
33
+ end
34
+
35
+ def subs_paths_to_search
36
+ subs_include_paths.flat_map do |subs_include_path|
37
+ ::Pathname.glob(path.join(subs_include_path)).reject do |sub_path|
38
+ subs_exclude_paths.any? do |subs_exclude_path|
39
+ sub_path.fnmatch?(path.join(subs_exclude_path).to_path)
40
+ end
41
+ end
42
+ end
43
+ end
44
+
45
+ %i[include exclude].each do |type|
46
+ %i[path paths configured_paths default_paths].each do |method_suffix|
47
+ obj_method_name = "subs_#{type}_path_obj"
48
+
49
+ define_method "subs_#{type}_#{method_suffix}" do
50
+ send(obj_method_name).send(method_suffix)
51
+ end
52
+
53
+ define_method "#{obj_method_name}_uncached" do
54
+ ::Avm::Sources::Base::SubsPaths.new(
55
+ self,
56
+ self.class.const_get("CONFIGURATION_SUBS_#{type}_PATHS_KEY".upcase),
57
+ self.class.const_get("SUBS_#{type}_PATHS_DEFAULT".upcase)
58
+ )
59
+ end
60
+
61
+ private "#{obj_method_name}_uncached" # rubocop:disable Style/AccessModifierDeclarations
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module Sources
7
+ class Base
8
+ class SubsPaths
9
+ SUBS_PATH_SEPARATOR = ':'
10
+
11
+ common_constructor :source, :configuration_key, :default_paths
12
+
13
+ # @return [String]
14
+ def path
15
+ paths.join(SUBS_PATH_SEPARATOR)
16
+ end
17
+
18
+ # @return [Array<String>]
19
+ def paths
20
+ configured_paths || default_paths
21
+ end
22
+
23
+ # @return [Array<String>]
24
+ def configured_paths
25
+ source.configuration_entry(configuration_key).value.if_present do |v|
26
+ v.split(SUBS_PATH_SEPARATOR)
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,70 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+ require 'eac_ruby_utils/envs/command'
5
+
6
+ module Avm
7
+ module Sources
8
+ class Base
9
+ module Testing
10
+ DEFAULT_TEST_COMMANDS = {}.freeze
11
+ TEST_KEY = 'test'
12
+ TEST_COMMAND_KEY = "#{TEST_KEY}.command"
13
+ TEST_COMMANDS_KEY = "#{TEST_KEY}.commands"
14
+
15
+ def configured_test_command
16
+ read_configuration_as_env_command(TEST_COMMAND_KEY)
17
+ end
18
+
19
+ # @return [Hash<String, EacRubyUtils::Envs::Command>, nil]
20
+ def configured_test_commands
21
+ configured_value_as_test_commands(configuration_entry(TEST_COMMANDS_KEY).value)
22
+ end
23
+
24
+ # @return [Hash<String, EacRubyUtils::Envs::Command>, nil]
25
+ def configured_value_as_test_commands(value)
26
+ return nil if value.nil?
27
+
28
+ [::EacRubyUtils::Envs::Command, ::Hash, ::Enumerable].each do |type|
29
+ next unless value.is_a?(type)
30
+
31
+ return send(
32
+ "configured_#{type.name.demodulize.variableize}_value_as_test_commands",
33
+ value
34
+ )
35
+ end
36
+
37
+ raise "Value for test commands should be a Hash or a Enumerable (Actual: #{value})"
38
+ end
39
+
40
+ # @return [Hash<String, EacRubyUtils::Envs::Command>]
41
+ def default_test_commands
42
+ DEFAULT_TEST_COMMANDS
43
+ end
44
+
45
+ # @return [Enumerable<EacRubyUtils::Envs::Command>]
46
+ def test_commands
47
+ configured_test_commands ||
48
+ configured_value_as_test_commands(configured_test_command) ||
49
+ default_test_commands
50
+ end
51
+
52
+ protected
53
+
54
+ def configured_command_value_as_test_commands(value)
55
+ configured_enumerable_value_as_test_commands([value])
56
+ end
57
+
58
+ def configured_enumerable_value_as_test_commands(value)
59
+ configured_hash_value_as_test_commands(
60
+ value.each_with_index.to_h { |v, i| ["test_#{i}", v] }
61
+ )
62
+ end
63
+
64
+ def configured_hash_value_as_test_commands(value)
65
+ value.to_h { |k, v| [k.to_s.strip, configuration_value_to_env_command(v)] }
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module Sources
7
+ class Base
8
+ module Update
9
+ # To override in subclasses.
10
+ def on_sub_updated
11
+ # Do nothing
12
+ end
13
+
14
+ def update
15
+ update_self
16
+ update_subs
17
+ end
18
+
19
+ def update_self
20
+ scm.commit_if_change(-> { update_self_commit_message }) do
21
+ update_self_content
22
+ parent.if_present(&:on_sub_updated)
23
+ end
24
+ end
25
+
26
+ # Update source self content.
27
+ #
28
+ # To override in subclasses.
29
+ def update_self_content
30
+ # Do nothing
31
+ end
32
+
33
+ def update_self_commit_message
34
+ i18n_translate(__method__)
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module Sources
7
+ class Base
8
+ class UpdateSub
9
+ enable_method_class
10
+
11
+ common_constructor :source, :sub
12
+
13
+ def result
14
+ update_version
15
+ return unless sub.organizational?
16
+
17
+ sub.update
18
+ end
19
+
20
+ private
21
+
22
+ def update_version
23
+ base_commit = source.scm.head_commit
24
+ sub.scm.update
25
+ on_update_version_commit_change(base_commit) unless base_commit == source.scm.head_commit
26
+ end
27
+
28
+ def on_update_version_commit_change(base_commit)
29
+ source.on_sub_updated if no_scm_updated?
30
+ source.scm.reset_and_commit(base_commit, update_version_commit_info)
31
+ end
32
+
33
+ def no_scm_updated?
34
+ source.scm.head_commit.no_scm_changed_files.any?
35
+ end
36
+
37
+ # @param commit_info [Avm::Scms::CommitInfo]
38
+ def update_version_commit_info
39
+ Avm::Scms::CommitInfo.new.message(
40
+ no_scm_updated? ? update_version_no_scm_message : update_version_scm_message
41
+ )
42
+ end
43
+
44
+ # @return [String]
45
+ def update_version_no_scm_message
46
+ source.i18n_translate(__method__, application_id: sub.application_id,
47
+ path: sub.relative_path, version: sub.version)
48
+ end
49
+
50
+ # @return [String]
51
+ def update_version_scm_message
52
+ sub.scm.i18n_translate(__method__)
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module Sources
7
+ class Base
8
+ class UpdateSubs
9
+ enable_method_class
10
+
11
+ common_constructor :source
12
+
13
+ def result
14
+ source.subs.each { |sub| source.update_sub(sub) }
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/sources/base'
4
+ require 'eac_ruby_utils/core_ext'
5
+
6
+ module Avm
7
+ module Sources
8
+ class Base
9
+ module VersionBump
10
+ # @return [Avm::Scms::Commit, nil]
11
+ def version_bump(target_version)
12
+ scm.commit_if_change(version_bump_commit_message(target_version)) do
13
+ version_bump_do_changes(target_version)
14
+ parent.if_present(&:on_sub_updated)
15
+ end
16
+ end
17
+
18
+ # @return [String]
19
+ def version_bump_commit_message(target_version)
20
+ i18n_translate(__method__, version: target_version, __locale: locale)
21
+ end
22
+
23
+ def version_bump_do_changes(_target_version)
24
+ raise_abstract_method(__METHOD__)
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,61 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/registry'
4
+ require 'avm/scms/null'
5
+ require 'avm/with/application_stereotype'
6
+ require 'avm/with/extra_subcommands'
7
+ require 'eac_ruby_utils/core_ext'
8
+
9
+ module Avm
10
+ module Sources
11
+ class Base
12
+ require_sub __FILE__, include_modules: true
13
+ include ::Avm::With::ApplicationStereotype
14
+ include ::Avm::With::ExtraSubcommands
15
+ compare_by :path
16
+ enable_abstract_methods
17
+ enable_simple_cache
18
+ enable_listable
19
+ lists.add_symbol :option, :parent
20
+ common_constructor :path, :options, default: [{}] do
21
+ self.path = path.to_pathname.expand_path
22
+ self.options = ::Avm::Sources::Base.lists.option.hash_keys_validate!(options)
23
+ end
24
+
25
+ abstract_methods :valid?
26
+
27
+ # @param options [Hash<Symbol, Object>]
28
+ def completer(options = {})
29
+ scm.completer(options)
30
+ end
31
+
32
+ # @return [EacRubyUtils::Envs::LocalEnv]
33
+ def env
34
+ ::EacRubyUtils::Envs::LocalEnv.new
35
+ end
36
+
37
+ # @return [Pathname]
38
+ def relative_path
39
+ return path if parent.blank?
40
+
41
+ path.relative_path_from(parent.path)
42
+ end
43
+
44
+ def to_s
45
+ "#{self.class}[#{path}]"
46
+ end
47
+
48
+ # @return [Avm::VersionNumber, nil]
49
+ def version
50
+ raise_abstract __method__, 'Should return a Avm::VersionNumber or nil'
51
+ end
52
+
53
+ private
54
+
55
+ # @return [Avm::Scms::Base]
56
+ def scm_uncached
57
+ ::Avm::Registry.scms.detect_optional(path) || ::Avm::Scms::Null.new(path)
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Sources
5
+ class Configuration < ::EacConfig::OldConfigs
6
+ module Rubocop
7
+ RUBOCOP_COMMAND_KEY = 'ruby.rubocop.command'
8
+ RUBOCOP_GEMFILE_KEY = 'ruby.rubocop.gemfile'
9
+
10
+ def rubocop_command
11
+ read_command(RUBOCOP_COMMAND_KEY)
12
+ end
13
+
14
+ def rubocop_gemfile
15
+ gemfile_path = read_entry(RUBOCOP_GEMFILE_KEY)
16
+ return nil if gemfile_path.blank?
17
+
18
+ gemfile_path = gemfile_path.to_pathname.expand_path(storage_path.parent)
19
+ return gemfile_path if gemfile_path.file?
20
+
21
+ raise "Gemfile path \"#{gemfile_path}\" does not exist or is not a file"
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,59 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_config/old_configs'
4
+ require 'eac_ruby_utils/core_ext'
5
+ require 'yaml'
6
+
7
+ module Avm
8
+ module Sources
9
+ class Configuration < ::EacConfig::OldConfigs
10
+ require_sub __FILE__, include_modules: true
11
+
12
+ FILENAMES = %w[.avm.yml .avm.yaml].freeze
13
+
14
+ class << self
15
+ def find_by_path(path)
16
+ path = ::Pathname.new(path.to_s) unless path.is_a?(::Pathname)
17
+ internal_find_path(path.expand_path)
18
+ end
19
+
20
+ def find_in_path(path)
21
+ absolute_pathname = path.to_pathname.expand_path
22
+ if absolute_pathname.directory?
23
+ FILENAMES.each do |filename|
24
+ file = absolute_pathname.join(filename)
25
+ return new(file) if file.exist?
26
+ end
27
+ end
28
+ nil
29
+ end
30
+
31
+ def temp_instance
32
+ new(::Tempfile.new(['.avm', '.yaml']))
33
+ end
34
+
35
+ private
36
+
37
+ def internal_find_path(absolute_pathname)
38
+ r = find_in_path(absolute_pathname)
39
+ return r if r.present?
40
+
41
+ internal_find_path(absolute_pathname.dirname) unless absolute_pathname.root?
42
+ end
43
+ end
44
+
45
+ def initialize(path)
46
+ super(nil, storage_path: path)
47
+ end
48
+
49
+ # Utility to read a configuration as a [EacRubyUtils::Envs::Command].
50
+ # @return [EacRubyUtils::Envs::Command]
51
+ def read_command(key)
52
+ read_entry(key).if_present do |v|
53
+ args = v.is_a?(::Enumerable) ? v.map(&:to_s) : ::Shellwords.split(v)
54
+ ::EacRubyUtils::Envs.local.command(args).chdir(::File.dirname(storage_path))
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,52 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_cli/core_ext'
4
+ require 'clipboard'
5
+
6
+ module Avm
7
+ module Sources
8
+ module Issues
9
+ class Deliver
10
+ enable_simple_cache
11
+ enable_speaker
12
+
13
+ common_constructor :scm
14
+ delegate :head_branch, to: :scm
15
+
16
+ def run
17
+ push
18
+ clipboard_copy_tracker_message
19
+ true
20
+ end
21
+
22
+ def start_banner
23
+ infov 'Branch ID', branch_id
24
+ infov 'Commit ID', branch_commit_id
25
+ end
26
+
27
+ private
28
+
29
+ def branch_commit_id
30
+ head_branch.head_commit.id
31
+ end
32
+
33
+ def branch_id
34
+ head_branch.id
35
+ end
36
+
37
+ def clipboard_copy_tracker_message
38
+ ::Clipboard.copy(textile_tracker_message)
39
+ infov 'Copied to clipboard', textile_tracker_message
40
+ end
41
+
42
+ def push
43
+ head_branch.push(scm.default_remote)
44
+ end
45
+
46
+ def textile_tracker_message
47
+ "#{branch_id}: commit:#{branch_commit_id}."
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module Sources
7
+ module Issues
8
+ require_sub __FILE__
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_cli/core_ext'
4
+
5
+ module Avm
6
+ module Sources
7
+ class Runner
8
+ runner_with :help, :subcommands do
9
+ desc 'Root command for sources.'
10
+ arg_opt '-C', '--path', 'Path to the source.', default: '.'
11
+ subcommands
12
+ end
13
+
14
+ for_context :optional_source, :source
15
+
16
+ def extra_available_subcommands
17
+ optional_source.if_present({}, &:extra_available_subcommands)
18
+ end
19
+
20
+ def source_banner
21
+ infov 'Source', source
22
+ end
23
+
24
+ # @return [Pathname]
25
+ def source_path
26
+ parsed.path.to_pathname
27
+ end
28
+
29
+ private
30
+
31
+ def source_uncached
32
+ ::Avm::Registry.sources.detect(source_path)
33
+ end
34
+
35
+ def optional_source_uncached
36
+ ::Avm::Registry.sources.detect_optional(source_path)
37
+ end
38
+ end
39
+ end
40
+ end