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,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_fs/comparator'
4
+ require 'eac_ruby_utils/core_ext'
5
+
6
+ RSpec.shared_examples 'avm_source_generated' do |spec_file, stereotype, options = {}|
7
+ fixtures_dir = Pathname.new('base_spec_files').expand_path(File.dirname(spec_file))
8
+
9
+ fixtures_dir.children.select(&:directory?).each do |target_dir|
10
+ context "when target is \"#{target_dir.basename}\"" do
11
+ let(:source) { avm_source(stereotype, options.merge(target_basename: target_dir.basename)) }
12
+
13
+ it do
14
+ expect(fs_comparator.build(source.path)).to eq(fs_comparator.build(target_dir))
15
+ end
16
+ end
17
+ end
18
+
19
+ # @return [EacFs::Comparato]
20
+ def fs_comparator
21
+ EacFs::Comparator.new.rename_file('.gitignore', '_gitignore')
22
+ end
23
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ RSpec.shared_examples 'entries_values' do |spec_file, expected_values|
6
+ describe '#read_entry' do
7
+ config_path = spec_file.to_pathname
8
+ config_path = config_path.dirname.join("#{config_path.basename_noext}_files", 'config.yml')
9
+ EacRubyUtils::Rspec.default_setup.stub_eac_config_node(self, config_path)
10
+
11
+ expected_values.each do |instance_id, values|
12
+ values.each do |input, expected|
13
+ context "when a auto value is requested for \"#{instance_id}.#{input}\"" do
14
+ let(:instance) { described_class.by_id(instance_id) }
15
+
16
+ it ".entry('#{input}').value should return \"#{expected}\"" do
17
+ expect(instance.entry(input).value).to eq(expected)
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/registry'
4
+
5
+ RSpec.shared_examples 'in_avm_registry' do |registry_method|
6
+ let(:avm_registry) { Avm::Registry.send(registry_method) }
7
+
8
+ it 'is in the avm registry' do
9
+ expect(avm_registry.registered_modules).to include(described_class)
10
+ end
11
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/registry'
4
+
5
+ RSpec.shared_examples 'not_in_avm_registry' do |registry_method = nil|
6
+ registry_method.if_present(Avm::Registry.registries) { |v| [Avm::Registry.send(v)] }
7
+ .each do |registry|
8
+ context "when registry is #{registry}" do
9
+ it 'is not in the avm registry' do
10
+ expect(registry.available).not_to include(described_class)
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module Rspec
7
+ require_sub __FILE__
8
+ end
9
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_cli/core_ext'
4
+
5
+ module Avm
6
+ module Runners
7
+ class Base
8
+ enable_abstract_methods
9
+
10
+ class << self
11
+ def command_argument
12
+ stereotype_name.underscore.dasherize
13
+ end
14
+
15
+ def stereotype_name
16
+ name.split('::')[-3]
17
+ end
18
+ end
19
+
20
+ delegate :command_argument, :stereotype_name, to: :class
21
+
22
+ def to_s
23
+ stereotype_name
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module Scms
7
+ module AutoCommit
8
+ class FileResourceName
9
+ require_sub __FILE__, include_modules: true
10
+ enable_simple_cache
11
+ common_constructor :source_root, :path do
12
+ self.source_root = source_root.to_pathname
13
+ self.path = path.to_pathname
14
+ end
15
+
16
+ def class_name
17
+ file_format.file_resource_name(relative_path)
18
+ end
19
+
20
+ def commit_message
21
+ r = class_name
22
+ r += ': remove' unless path.file?
23
+ "#{r}."
24
+ end
25
+
26
+ def relative_path
27
+ path.expand_path.relative_path_from(source_root.expand_path)
28
+ end
29
+
30
+ private
31
+
32
+ # @return [Avm::FileFormats::Base]
33
+ def file_format_uncached
34
+ ::Avm::Registry.file_formats.detect(path)
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,82 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/scms/commit_info'
4
+ require 'eac_ruby_utils/core_ext'
5
+
6
+ module Avm
7
+ module Scms
8
+ module AutoCommit
9
+ class ForFile
10
+ enable_speaker
11
+ enable_simple_cache
12
+ enable_listable
13
+
14
+ common_constructor :scm, :path, :rules do
15
+ self.path = path.to_pathname.expand_path(scm.path)
16
+ end
17
+
18
+ COMMITS_SEARCH_INTERVAL = 'origin/master..HEAD'
19
+
20
+ def scm_relative_path
21
+ path.to_pathname.relative_path_from(scm.path)
22
+ end
23
+
24
+ def run
25
+ start_banner
26
+ run_commit || warn("No rule returned commit information for \"#{path}\"")
27
+ end
28
+
29
+ private
30
+
31
+ # @return [Boolean]
32
+ def changed?
33
+ scm.changed_files.any? { |cf| cf.path == scm_relative_path }
34
+ end
35
+
36
+ def commit_info_uncached
37
+ rules.lazy.map { |rule| rule.with_file(self).commit_info }.find(&:present?)
38
+ .if_present { |v| v.path(path) }
39
+ end
40
+
41
+ def start_banner
42
+ infov 'Path', path
43
+ infov ' Commits found', commits.count
44
+ end
45
+
46
+ def run_commit
47
+ return false if commit_info.blank?
48
+
49
+ infov ' Commit info', commit_info
50
+ if changed?
51
+ scm.run_commit(commit_info)
52
+ success ' Commited'
53
+ else
54
+ warn " File \"#{path}\" unchanged"
55
+ end
56
+
57
+ true
58
+ end
59
+
60
+ def commits_uncached
61
+ scm.current_milestone_interval.commits
62
+ .select { |c| c.changed_files.include?(path.relative_path_from(scm.path)) }
63
+ .reject(&:fixup?).each_with_index
64
+ .map { |commit, index| CommitDelegator.new(commit, index) }
65
+ end
66
+
67
+ class CommitDelegator < ::SimpleDelegator
68
+ attr_reader :index
69
+
70
+ def initialize(commit, index)
71
+ super(commit)
72
+ @index = index
73
+ end
74
+
75
+ def position
76
+ index + 1
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/scms/commit_info'
4
+ require 'eac_ruby_utils/core_ext'
5
+
6
+ module Avm
7
+ module Scms
8
+ module AutoCommit
9
+ module Rules
10
+ class Base
11
+ class << self
12
+ def keys
13
+ [long_key, short_key]
14
+ end
15
+
16
+ def long_key
17
+ name.demodulize.variableize
18
+ end
19
+
20
+ def short_key
21
+ long_key[0, 1]
22
+ end
23
+ end
24
+
25
+ def with_file(file)
26
+ self.class.const_get('WithFile').new(self, file)
27
+ end
28
+
29
+ class WithFile
30
+ common_constructor :rule, :file
31
+
32
+ def new_commit_info
33
+ ::Avm::Scms::CommitInfo.new
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/scms/auto_commit/rules/base'
4
+
5
+ module Avm
6
+ module Scms
7
+ module AutoCommit
8
+ module Rules
9
+ class Last < ::Avm::Scms::AutoCommit::Rules::Base
10
+ class WithFile < ::Avm::Scms::AutoCommit::Rules::Base::WithFile
11
+ def commit_info
12
+ file.commits.last.if_present { |v| new_commit_info.fixup(v) }
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/scms/auto_commit/rules/base'
4
+
5
+ module Avm
6
+ module Scms
7
+ module AutoCommit
8
+ module Rules
9
+ class Manual < ::Avm::Scms::AutoCommit::Rules::Base
10
+ class WithFile < ::Avm::Scms::AutoCommit::Rules::Base::WithFile
11
+ enable_speaker
12
+
13
+ SKIP_OPTION = 's'
14
+
15
+ def commit_info
16
+ return nil unless file.commits.any?
17
+
18
+ commits_banner
19
+ input('Which commit?', list: commits_by_position).if_present do |v|
20
+ new_commit_info.fixup(v)
21
+ end
22
+ end
23
+
24
+ def commits_banner
25
+ file.commits.each_with_index do |commit, _index|
26
+ infov " #{commit.position}", commit
27
+ end
28
+ infov " #{SKIP_OPTION}", 'skip'
29
+ end
30
+
31
+ def commits_by_position
32
+ (file.commits.map { |commit| [commit.position.to_s, commit] } + [[SKIP_OPTION, nil]])
33
+ .to_h
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/scms/auto_commit/rules/base'
4
+ require 'avm/scms/auto_commit/file_resource_name'
5
+
6
+ module Avm
7
+ module Scms
8
+ module AutoCommit
9
+ module Rules
10
+ class New < ::Avm::Scms::AutoCommit::Rules::Base
11
+ class WithFile < ::Avm::Scms::AutoCommit::Rules::Base::WithFile
12
+ def auto_commit_path
13
+ ::Avm::Scms::AutoCommit::FileResourceName.new(file.scm.path, file.path)
14
+ end
15
+
16
+ def commit_info
17
+ new_commit_info.message(auto_commit_path.commit_message)
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/scms/auto_commit/rules/base'
4
+
5
+ module Avm
6
+ module Scms
7
+ module AutoCommit
8
+ module Rules
9
+ class Nth < ::Avm::Scms::AutoCommit::Rules::Base
10
+ SHORT_KEY = 't'
11
+
12
+ class << self
13
+ def short_key
14
+ SHORT_KEY
15
+ end
16
+ end
17
+
18
+ common_constructor :number do
19
+ self.number = number.to_i
20
+ end
21
+
22
+ class WithFile < ::Avm::Scms::AutoCommit::Rules::Base::WithFile
23
+ def commit_info
24
+ file.commits(number - 1).if_present { |v| new_commit_info.fixup(v) }
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/scms/auto_commit/rules/base'
4
+
5
+ module Avm
6
+ module Scms
7
+ module AutoCommit
8
+ module Rules
9
+ class Unique < ::Avm::Scms::AutoCommit::Rules::Base
10
+ class WithFile < ::Avm::Scms::AutoCommit::Rules::Base::WithFile
11
+ def commit_info
12
+ return nil unless file.commits.count == 1
13
+
14
+ new_commit_info.fixup(file.commits.first)
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ EacRubyUtils.require_sub __FILE__
6
+
7
+ module Avm
8
+ module Scms
9
+ module AutoCommit
10
+ module Rules
11
+ RULES_CLASSES = %w[last manual new nth unique]
12
+ .map { |key| ::Avm::Scms::AutoCommit::Rules.const_get(key.camelcase) }
13
+
14
+ class << self
15
+ # @return [Array<Avm::Scms::AutoCommit::Rules>]
16
+ def all
17
+ RULES_CLASSES
18
+ end
19
+
20
+ def parse(string)
21
+ parts = string.split(':')
22
+
23
+ klass = rule_class_by_key(parts.shift)
24
+ klass.new(*parts)
25
+ end
26
+
27
+ def rule_class_by_key(key)
28
+ RULES_CLASSES.find { |klass| klass.keys.include?(key) } ||
29
+ raise("Rule not find with key \"#{key}\" (Available: " \
30
+ "#{RULES_CLASSES.flat_map(&:keys).join(', ')})")
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module Scms
7
+ module AutoCommit
8
+ require_sub __FILE__
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module Scms
7
+ class Base
8
+ module Branches
9
+ # @param id [String]
10
+ # @return [Avm::Scms::Branch, nil]
11
+ def branch(id) # rubocop:disable Lint/UnusedMethodArgument
12
+ raise_abstract_method __method__
13
+ end
14
+
15
+ # @return [Avm::Scms::Branch]
16
+ def head_branch
17
+ raise_abstract_method __method__
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module Scms
7
+ class Base
8
+ module Commits
9
+ # @return [Avm::Scms::Commit,NilClass]
10
+ def commit_if_change(_message = nil)
11
+ raise_abstract_method __method__
12
+ end
13
+
14
+ # @return [Avm::Scms::Commit]
15
+ def head_commit
16
+ raise_abstract_method __method__
17
+ end
18
+
19
+ # @param commit_to_reset [Avm::Scms::Commit]
20
+ # @param commit_info [Avm::Scms::CommitInfo]
21
+ # @return [Avm::Scms::Commit]
22
+ def reset_and_commit(_commit_to_reset, _commit_info)
23
+ raise_abstract_method __method__
24
+ end
25
+
26
+ # @param commit_info [Avm::Scms::CommitInfo]
27
+ # @return [Avm::Scms::Commit]
28
+ def run_commit(_commit_info)
29
+ raise_abstract_method __method__
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module Scms
7
+ class Base
8
+ module Milestones
9
+ # @return [Avm::Scms::Interval]
10
+ def current_milestone_interval
11
+ interval(current_milestone_base_commit, head_commit)
12
+ end
13
+
14
+ # @return [Avm::Scms::Commit]
15
+ def current_milestone_base_commit
16
+ raise_abstract_method __method__
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module Scms
7
+ class Base
8
+ module Branches
9
+ # @return [Avm::Scms::Remote]
10
+ def default_remote
11
+ raise_abstract_method __method__
12
+ end
13
+
14
+ # @param id [String]
15
+ # @return [Avm::Scms::Remote, nil]
16
+ def remote(id) # rubocop:disable Lint/UnusedMethodArgument
17
+ raise_abstract_method __method__
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,61 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/with/application_stereotype'
4
+ require 'eac_ruby_utils/core_ext'
5
+
6
+ module Avm
7
+ module Scms
8
+ class Base
9
+ require_sub __FILE__, include_modules: true
10
+ enable_abstract_methods
11
+ enable_simple_cache
12
+ include ::Avm::With::ApplicationStereotype
13
+ abstract_methods :update, :valid?
14
+ common_constructor :path do
15
+ self.path = path.to_pathname
16
+ end
17
+
18
+ # @return [Avm::Scms::ChangedFile]
19
+ def changed_files
20
+ raise_abstract_method __method__
21
+ end
22
+
23
+ # @param options [Hash<Symbol, Object>]
24
+ def completer(options = {}) # rubocop:disable Lint/UnusedMethodArgument
25
+ raise_abstract_method __method__
26
+ end
27
+
28
+ # @return [Avm::Scms::Interval]
29
+ def interval(_from, _to)
30
+ raise_abstract_method __method__
31
+ end
32
+
33
+ def name
34
+ self.class.name.demodulize
35
+ end
36
+
37
+ # @return [Pathname]
38
+ def relative_path_from_parent_scm
39
+ parent_scm.if_present(nil) do |v|
40
+ path.relative_path_from(v.path)
41
+ end
42
+ end
43
+
44
+ # @return [Enumerable<Avm::Scms::Base>]
45
+ def subs
46
+ raise_abstract_method __method__
47
+ end
48
+
49
+ def to_s
50
+ name
51
+ end
52
+
53
+ private
54
+
55
+ # @return [Avm::Scms::Base]
56
+ def parent_scm_uncached
57
+ ::Avm::Registry.scms.detect_by_path_optional(path.parent)
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module Scms
7
+ class Branch
8
+ acts_as_abstract
9
+
10
+ # @return [Avm::Scms::Commit]
11
+ def head_commit
12
+ raise_abstract_method __method__
13
+ end
14
+
15
+ # @return [String]
16
+ def id
17
+ raise_abstract_method __method__
18
+ end
19
+
20
+ # @param remote [Avm::Scms::Remote]
21
+ def push(remote) # rubocop:disable Lint/UnusedMethodArgument
22
+ raise_abstract_method __method__
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module Scms
7
+ class ChangedFile
8
+ enable_abstract_methods
9
+
10
+ # @return [Pathname]
11
+ def absolute_path
12
+ path.expand_path(scm.path)
13
+ end
14
+
15
+ # @return [Pathname]
16
+ def path
17
+ raise_abstract_method __method__
18
+ end
19
+
20
+ # @return [Avm::Scms::Base]
21
+ def scm
22
+ raise_abstract_method __method__
23
+ end
24
+ end
25
+ end
26
+ end