eac_tools 0.113.0 → 0.114.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (319) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +33 -37
  3. data/eac_tools.gemspec +3 -3
  4. data/lib/eac_tools/version.rb +1 -1
  5. data/sub/avm/avm.gemspec +28 -0
  6. data/sub/avm/lib/avm/application_scms/base.rb +37 -0
  7. data/sub/avm/lib/avm/application_stereotypes/base.rb +29 -0
  8. data/sub/avm/lib/avm/applications/base/auto_local_source_path.rb +22 -0
  9. data/sub/avm/lib/avm/applications/base/local_instance.rb +28 -0
  10. data/sub/avm/lib/avm/applications/base/local_source.rb +31 -0
  11. data/sub/avm/lib/avm/applications/base/naming.rb +26 -0
  12. data/sub/avm/lib/avm/applications/base/organization.rb +27 -0
  13. data/sub/avm/lib/avm/applications/base/publishing.rb +39 -0
  14. data/sub/avm/lib/avm/applications/base/scm.rb +24 -0
  15. data/sub/avm/lib/avm/applications/base/stereotype.rb +29 -0
  16. data/sub/avm/lib/avm/applications/base.rb +34 -0
  17. data/sub/avm/lib/avm/data/callbacks.rb +36 -0
  18. data/sub/avm/lib/avm/data/clearer.rb +17 -0
  19. data/sub/avm/lib/avm/data/dumper.rb +137 -0
  20. data/sub/avm/lib/avm/data/loader.rb +23 -0
  21. data/sub/avm/lib/avm/data/package/base_performer.rb +36 -0
  22. data/sub/avm/lib/avm/data/package/build_directory.rb +25 -0
  23. data/sub/avm/lib/avm/data/package/clear.rb +19 -0
  24. data/sub/avm/lib/avm/data/package/dump.rb +42 -0
  25. data/sub/avm/lib/avm/data/package/load.rb +33 -0
  26. data/sub/avm/lib/avm/data/package.rb +64 -0
  27. data/sub/avm/lib/avm/data/performer.rb +45 -0
  28. data/sub/avm/lib/avm/data/rotate.rb +106 -0
  29. data/sub/avm/lib/avm/data/unit.rb +44 -0
  30. data/sub/avm/lib/avm/data/unit_with_commands.rb +48 -0
  31. data/sub/avm/lib/avm/docker/container.rb +47 -0
  32. data/sub/avm/lib/avm/docker/image.rb +70 -0
  33. data/sub/avm/lib/avm/docker/runner.rb +129 -0
  34. data/sub/avm/lib/avm/entries/auto_values/entry.rb +36 -0
  35. data/sub/avm/lib/avm/entries/auto_values/uri_entry.rb +21 -0
  36. data/sub/avm/lib/avm/entries/base/inherited_entry_value.rb +42 -0
  37. data/sub/avm/lib/avm/entries/base/uri_component_entry_value/default_value.rb +24 -0
  38. data/sub/avm/lib/avm/entries/base/uri_component_entry_value/inherited_value.rb +35 -0
  39. data/sub/avm/lib/avm/entries/base/uri_component_entry_value/url_entry_value.rb +27 -0
  40. data/sub/avm/lib/avm/entries/base/uri_component_entry_value.rb +40 -0
  41. data/sub/avm/lib/avm/entries/base/uri_components_entries_values/component_factory.rb +40 -0
  42. data/sub/avm/lib/avm/entries/base/uri_components_entries_values/generic_component.rb +59 -0
  43. data/sub/avm/lib/avm/entries/base/uri_components_entries_values/path_component.rb +16 -0
  44. data/sub/avm/lib/avm/entries/base/uri_components_entries_values/url_component.rb +22 -0
  45. data/sub/avm/lib/avm/entries/base/uri_components_entries_values.rb +23 -0
  46. data/sub/avm/lib/avm/entries/base.rb +53 -0
  47. data/sub/avm/lib/avm/entries/entry/no_context_entry.rb +21 -0
  48. data/sub/avm/lib/avm/entries/entry.rb +69 -0
  49. data/sub/avm/lib/avm/entries/jobs/base.rb +58 -0
  50. data/sub/avm/lib/avm/entries/jobs/variables_source/read_entry.rb +48 -0
  51. data/sub/avm/lib/avm/entries/jobs/variables_source.rb +13 -0
  52. data/sub/avm/lib/avm/entries/jobs/with_variables_source.rb +13 -0
  53. data/sub/avm/lib/avm/entries/keys_constants_set.rb +41 -0
  54. data/sub/avm/lib/avm/entries/uri_builder.rb +87 -0
  55. data/sub/avm/lib/avm/executables.rb +21 -0
  56. data/sub/avm/lib/avm/file_formats/base.rb +34 -0
  57. data/sub/avm/lib/avm/file_formats/file_result.rb +11 -0
  58. data/sub/avm/lib/avm/file_formats/search_formatter.rb +83 -0
  59. data/sub/avm/lib/avm/file_formats/unknown.rb +15 -0
  60. data/sub/avm/lib/avm/file_formats/utf8_assert.rb +72 -0
  61. data/sub/avm/lib/avm/files/appendable/file_content.rb +28 -0
  62. data/sub/avm/lib/avm/files/appendable/plain_directory.rb +27 -0
  63. data/sub/avm/lib/avm/files/appendable/resource_base.rb +17 -0
  64. data/sub/avm/lib/avm/files/appendable/tar_output_command.rb +27 -0
  65. data/sub/avm/lib/avm/files/appendable/templatized_directory.rb +36 -0
  66. data/sub/avm/lib/avm/files/appendable.rb +51 -0
  67. data/sub/avm/lib/avm/files/appender.rb +9 -0
  68. data/sub/avm/lib/avm/files/deploy.rb +70 -0
  69. data/sub/avm/lib/avm/files/text_replacer/gsub.rb +22 -0
  70. data/sub/avm/lib/avm/files/text_replacer.rb +29 -0
  71. data/sub/avm/lib/avm/instances/base/auto_values/data.rb +28 -0
  72. data/sub/avm/lib/avm/instances/base/auto_values/database.rb +60 -0
  73. data/sub/avm/lib/avm/instances/base/auto_values/mailer.rb +31 -0
  74. data/sub/avm/lib/avm/instances/base/auto_values/source.rb +16 -0
  75. data/sub/avm/lib/avm/instances/base/auto_values.rb +12 -0
  76. data/sub/avm/lib/avm/instances/base/dockerizable.rb +41 -0
  77. data/sub/avm/lib/avm/instances/base/entry_keys.rb +25 -0
  78. data/sub/avm/lib/avm/instances/base/install.rb +28 -0
  79. data/sub/avm/lib/avm/instances/base/processes.rb +25 -0
  80. data/sub/avm/lib/avm/instances/base/production.rb +33 -0
  81. data/sub/avm/lib/avm/instances/base/subcommand_parent.rb +23 -0
  82. data/sub/avm/lib/avm/instances/base/web.rb +15 -0
  83. data/sub/avm/lib/avm/instances/base.rb +70 -0
  84. data/sub/avm/lib/avm/instances/data/files_unit.rb +57 -0
  85. data/sub/avm/lib/avm/instances/data/loading_denied_error.rb +10 -0
  86. data/sub/avm/lib/avm/instances/data/package.rb +25 -0
  87. data/sub/avm/lib/avm/instances/data/unit.rb +36 -0
  88. data/sub/avm/lib/avm/instances/docker_image.rb +13 -0
  89. data/sub/avm/lib/avm/instances/entry_keys.rb +39 -0
  90. data/sub/avm/lib/avm/instances/ids.rb +28 -0
  91. data/sub/avm/lib/avm/instances/process.rb +29 -0
  92. data/sub/avm/lib/avm/instances/runner.rb +34 -0
  93. data/sub/avm/lib/avm/launcher/context/instance_collector.rb +44 -0
  94. data/sub/avm/lib/avm/launcher/context/instance_discovery/root_instance_paths.rb +51 -0
  95. data/sub/avm/lib/avm/launcher/context/instance_discovery.rb +53 -0
  96. data/sub/avm/lib/avm/launcher/context/instance_manager/cached_instance.rb +34 -0
  97. data/sub/avm/lib/avm/launcher/context/instance_manager/cached_instances.rb +32 -0
  98. data/sub/avm/lib/avm/launcher/context/instance_manager.rb +74 -0
  99. data/sub/avm/lib/avm/launcher/context/settings.rb +51 -0
  100. data/sub/avm/lib/avm/launcher/context.rb +83 -0
  101. data/sub/avm/lib/avm/launcher/errors/base.rb +10 -0
  102. data/sub/avm/lib/avm/launcher/errors/non_project.rb +13 -0
  103. data/sub/avm/lib/avm/launcher/instances/base/cache.rb +43 -0
  104. data/sub/avm/lib/avm/launcher/instances/base/publishing.rb +53 -0
  105. data/sub/avm/lib/avm/launcher/instances/base.rb +77 -0
  106. data/sub/avm/lib/avm/launcher/instances/error.rb +10 -0
  107. data/sub/avm/lib/avm/launcher/instances/runner_helper.rb +43 -0
  108. data/sub/avm/lib/avm/launcher/instances/settings.rb +24 -0
  109. data/sub/avm/lib/avm/launcher/paths/logical.rb +76 -0
  110. data/sub/avm/lib/avm/launcher/paths/real.rb +44 -0
  111. data/sub/avm/lib/avm/launcher/project.rb +15 -0
  112. data/sub/avm/lib/avm/launcher/publish/base.rb +44 -0
  113. data/sub/avm/lib/avm/launcher/publish/check_result.rb +64 -0
  114. data/sub/avm/lib/avm/launcher/stereotype.rb +63 -0
  115. data/sub/avm/lib/avm/patches/eac_config/entry_path.rb +44 -0
  116. data/sub/avm/lib/avm/path_string.rb +27 -0
  117. data/sub/avm/lib/avm/registry/application_scms.rb +13 -0
  118. data/sub/avm/lib/avm/registry/application_stereotypes/build_available.rb +45 -0
  119. data/sub/avm/lib/avm/registry/application_stereotypes/stereotype_builder.rb +30 -0
  120. data/sub/avm/lib/avm/registry/application_stereotypes.rb +42 -0
  121. data/sub/avm/lib/avm/registry/applications.rb +35 -0
  122. data/sub/avm/lib/avm/registry/base.rb +26 -0
  123. data/sub/avm/lib/avm/registry/config_objects.rb +15 -0
  124. data/sub/avm/lib/avm/registry/detection_error.rb +8 -0
  125. data/sub/avm/lib/avm/registry/file_formats.rb +17 -0
  126. data/sub/avm/lib/avm/registry/from_gems.rb +67 -0
  127. data/sub/avm/lib/avm/registry/instances.rb +13 -0
  128. data/sub/avm/lib/avm/registry/launcher_stereotypes.rb +8 -0
  129. data/sub/avm/lib/avm/registry/runners.rb +8 -0
  130. data/sub/avm/lib/avm/registry/scms.rb +8 -0
  131. data/sub/avm/lib/avm/registry/source_generators.rb +14 -0
  132. data/sub/avm/lib/avm/registry/sources.rb +38 -0
  133. data/sub/avm/lib/avm/registry/with_path/cache.rb +28 -0
  134. data/sub/avm/lib/avm/registry/with_path.rb +44 -0
  135. data/sub/avm/lib/avm/registry.rb +31 -0
  136. data/sub/avm/lib/avm/result.rb +80 -0
  137. data/sub/avm/lib/avm/rspec/launcher_controller.rb +91 -0
  138. data/sub/avm/lib/avm/rspec/setup/launcher.rb +18 -0
  139. data/sub/avm/lib/avm/rspec/setup/source_generator.rb +20 -0
  140. data/sub/avm/lib/avm/rspec/setup.rb +32 -0
  141. data/sub/avm/lib/avm/rspec/shared_examples/avm_file_format_file_resource_name.rb +13 -0
  142. data/sub/avm/lib/avm/rspec/shared_examples/avm_file_formats_with_fixtures.rb +28 -0
  143. data/sub/avm/lib/avm/rspec/shared_examples/avm_source_generated.rb +27 -0
  144. data/sub/avm/lib/avm/rspec/shared_examples/entries_values.rb +19 -0
  145. data/sub/avm/lib/avm/rspec/shared_examples/in_avm_registry.rb +9 -0
  146. data/sub/avm/lib/avm/rspec/shared_examples/not_in_avm_registry.rb +12 -0
  147. data/sub/avm/lib/avm/rspec/shared_examples/with_config.rb +9 -0
  148. data/sub/avm/lib/avm/rspec/shared_examples/with_launcher.rb +13 -0
  149. data/sub/avm/lib/avm/runner_with/file_replacer.rb +28 -0
  150. data/sub/avm/lib/avm/runner_with/filesystem_renamer.rb +99 -0
  151. data/sub/avm/lib/avm/runner_with/filesystem_traverser.rb +49 -0
  152. data/sub/avm/lib/avm/runners/base.rb +25 -0
  153. data/sub/avm/lib/avm/scms/auto_commit/file_resource_name.rb +47 -0
  154. data/sub/avm/lib/avm/scms/auto_commit/for_file.rb +79 -0
  155. data/sub/avm/lib/avm/scms/auto_commit/rules/base.rb +37 -0
  156. data/sub/avm/lib/avm/scms/auto_commit/rules/last.rb +17 -0
  157. data/sub/avm/lib/avm/scms/auto_commit/rules/manual.rb +38 -0
  158. data/sub/avm/lib/avm/scms/auto_commit/rules/new.rb +21 -0
  159. data/sub/avm/lib/avm/scms/auto_commit/rules/nth.rb +29 -0
  160. data/sub/avm/lib/avm/scms/auto_commit/rules/unique.rb +19 -0
  161. data/sub/avm/lib/avm/scms/auto_commit/rules.rb +32 -0
  162. data/sub/avm/lib/avm/scms/base/branches.rb +20 -0
  163. data/sub/avm/lib/avm/scms/base/commits.rb +32 -0
  164. data/sub/avm/lib/avm/scms/base/milestones.rb +19 -0
  165. data/sub/avm/lib/avm/scms/base/remotes.rb +20 -0
  166. data/sub/avm/lib/avm/scms/base.rb +59 -0
  167. data/sub/avm/lib/avm/scms/branch.rb +24 -0
  168. data/sub/avm/lib/avm/scms/changed_file.rb +46 -0
  169. data/sub/avm/lib/avm/scms/commit.rb +64 -0
  170. data/sub/avm/lib/avm/scms/commit_info.rb +37 -0
  171. data/sub/avm/lib/avm/scms/inflector.rb +22 -0
  172. data/sub/avm/lib/avm/scms/interval.rb +16 -0
  173. data/sub/avm/lib/avm/scms/null/commit.rb +11 -0
  174. data/sub/avm/lib/avm/scms/null.rb +16 -0
  175. data/sub/avm/lib/avm/scms/remote.rb +9 -0
  176. data/sub/avm/lib/avm/self/docker_image.rb +11 -0
  177. data/sub/avm/lib/avm/self/instance/entry_keys.rb +12 -0
  178. data/sub/avm/lib/avm/self/instance.rb +27 -0
  179. data/sub/avm/lib/avm/source_generators/base.rb +69 -0
  180. data/sub/avm/lib/avm/source_generators/option.rb +11 -0
  181. data/sub/avm/lib/avm/source_generators/option_list.rb +29 -0
  182. data/sub/avm/lib/avm/source_generators/runner.rb +55 -0
  183. data/sub/avm/lib/avm/sources/auto_commit/for_file.rb +29 -0
  184. data/sub/avm/lib/avm/sources/base/application.rb +32 -0
  185. data/sub/avm/lib/avm/sources/base/configuration.rb +89 -0
  186. data/sub/avm/lib/avm/sources/base/instance.rb +13 -0
  187. data/sub/avm/lib/avm/sources/base/locale.rb +30 -0
  188. data/sub/avm/lib/avm/sources/base/organizational.rb +30 -0
  189. data/sub/avm/lib/avm/sources/base/parent.rb +26 -0
  190. data/sub/avm/lib/avm/sources/base/stereotype.rb +16 -0
  191. data/sub/avm/lib/avm/sources/base/sub/remove.rb +36 -0
  192. data/sub/avm/lib/avm/sources/base/sub.rb +23 -0
  193. data/sub/avm/lib/avm/sources/base/subs.rb +63 -0
  194. data/sub/avm/lib/avm/sources/base/subs_paths.rb +30 -0
  195. data/sub/avm/lib/avm/sources/base/testing.rb +67 -0
  196. data/sub/avm/lib/avm/sources/base/update.rb +37 -0
  197. data/sub/avm/lib/avm/sources/base/update_sub.rb +55 -0
  198. data/sub/avm/lib/avm/sources/base/update_subs.rb +17 -0
  199. data/sub/avm/lib/avm/sources/base/version_bump.rb +26 -0
  200. data/sub/avm/lib/avm/sources/base.rb +56 -0
  201. data/sub/avm/lib/avm/sources/configuration/rubocop.rb +26 -0
  202. data/sub/avm/lib/avm/sources/configuration.rb +57 -0
  203. data/sub/avm/lib/avm/sources/issues/deliver.rb +51 -0
  204. data/sub/avm/lib/avm/sources/runner.rb +38 -0
  205. data/sub/avm/lib/avm/sources/tests/builder.rb +94 -0
  206. data/sub/avm/lib/avm/sources/tests/performer.rb +32 -0
  207. data/sub/avm/lib/avm/sources/tests/result.rb +13 -0
  208. data/sub/avm/lib/avm/sources/tests/single.rb +71 -0
  209. data/sub/avm/lib/avm/sources/update_error.rb +8 -0
  210. data/sub/avm/lib/avm/sync.rb +90 -0
  211. data/sub/avm/lib/avm/version.rb +5 -0
  212. data/sub/avm/lib/avm/version_number.rb +45 -0
  213. data/sub/avm/lib/avm/with/application_stereotype.rb +29 -0
  214. data/sub/avm/lib/avm/with/extra_subcommands.rb +41 -0
  215. data/sub/avm/lib/avm.rb +18 -0
  216. data/sub/avm/locale/en.yml +6 -0
  217. data/sub/avm/locale/pt-BR.yml +6 -0
  218. data/sub/avm/spec/lib/avm/applications/base/entries_spec.rb +29 -0
  219. data/sub/avm/spec/lib/avm/applications/base/entries_spec_files/config.yml +12 -0
  220. data/sub/avm/spec/lib/avm/applications/base_spec.rb +21 -0
  221. data/sub/avm/spec/lib/avm/applications/base_spec_fixture.yml +3 -0
  222. data/sub/avm/spec/lib/avm/file_formats/base_spec.rb +9 -0
  223. data/sub/avm/spec/lib/avm/instances/base/entries_spec.rb +78 -0
  224. data/sub/avm/spec/lib/avm/instances/base/entries_spec_files/config.yml +50 -0
  225. data/sub/avm/spec/lib/avm/instances/base_spec.rb +29 -0
  226. data/sub/avm/spec/lib/avm/launcher/context_spec.rb +98 -0
  227. data/sub/avm/spec/lib/avm/launcher/context_spec.yml +5 -0
  228. data/sub/avm/spec/lib/avm/launcher/context_spec_files/config.yml +9 -0
  229. data/sub/avm/spec/lib/avm/launcher/instances/base_spec.rb +39 -0
  230. data/sub/avm/spec/lib/avm/launcher/instances/base_spec_files/config.yml +5 -0
  231. data/sub/avm/spec/lib/avm/launcher/instances/base_spec_files/settings.yaml +5 -0
  232. data/sub/avm/spec/lib/avm/patches/eac_config/entry_path_spec.rb +26 -0
  233. data/sub/avm/spec/lib/avm/scms/auto_commit/file_resource_name_spec.rb +20 -0
  234. data/sub/avm/spec/lib/avm/scms/base_spec.rb +5 -0
  235. data/sub/avm/spec/lib/avm/sources/base_spec.rb +5 -0
  236. data/sub/avm/spec/lib/avm/sources/runner_spec.rb +7 -0
  237. data/sub/avm/spec/spec_helper/launcher_context/settings.yml +6 -0
  238. data/sub/{avm-eac_asciidoctor_base0 → avm}/spec/spec_helper.rb +4 -4
  239. data/sub/avm/template/avm/rspec/launcher_controller/dummy/avm-tools_stub/avm-tools.gemspec +29 -0
  240. data/sub/{avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0 → avm/template/avm/rspec/launcher_controller/dummy/avm-tools_stub/lib/avm/tools}/version.rb +2 -2
  241. data/sub/avm/template/avm/rspec/launcher_controller/dummy/avm-tools_stub/lib/avm/tools.rb +6 -0
  242. data/sub/avm/template/avm/rspec/launcher_controller/dummy/ruby_gem_stub/lib/ruby_gem_stub/version.rb +5 -0
  243. data/sub/avm/template/avm/rspec/launcher_controller/dummy/ruby_gem_stub/lib/ruby_gem_stub.rb +3 -0
  244. data/sub/avm/template/avm/rspec/launcher_controller/dummy/ruby_gem_stub/ruby_gem_stub.gemspec +16 -0
  245. data/sub/avm/template/avm/rspec/launcher_controller/settings.yml +1 -0
  246. data/sub/avm/template/avm/self/docker_image/Dockerfile +17 -0
  247. data/sub/avm/template/avm/self/docker_image/entrypoint.sh +12 -0
  248. metadata +253 -87
  249. data/sub/avm-eac_asciidoctor_base0/avm-eac_asciidoctor_base0.gemspec +0 -24
  250. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/documents_owner.rb +0 -27
  251. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/file_formats/base/file_resource_name.rb +0 -34
  252. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/file_formats/base.rb +0 -14
  253. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/apache_host.rb +0 -17
  254. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/apache_path.rb +0 -10
  255. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/base.rb +0 -28
  256. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document/body_source.rb +0 -49
  257. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document/body_target.rb +0 -35
  258. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document/children.rb +0 -47
  259. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document/header_lines.rb +0 -90
  260. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document/media.rb +0 -27
  261. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document/pre_process_line.rb +0 -62
  262. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document.rb +0 -49
  263. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/theme.rb +0 -38
  264. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build.rb +0 -61
  265. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/deploy.rb +0 -24
  266. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/macros/base.rb +0 -19
  267. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/macros/breadcrumbs.rb +0 -52
  268. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/macros/child_docs/document_builder.rb +0 -60
  269. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/macros/child_docs.rb +0 -30
  270. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/macros/default_body.rb +0 -18
  271. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/macros/todo.rb +0 -18
  272. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/logging/catcher.rb +0 -44
  273. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/logging/error.rb +0 -16
  274. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/source_generators/base.rb +0 -24
  275. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/base/instance_to_build.rb +0 -44
  276. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/base/theme.rb +0 -45
  277. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/base.rb +0 -42
  278. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/document/media.rb +0 -27
  279. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/document/title.rb +0 -30
  280. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/document.rb +0 -55
  281. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/runners/build.rb +0 -55
  282. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/runners/document/build.rb +0 -49
  283. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/runners/document.rb +0 -26
  284. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/runners/documents.rb +0 -26
  285. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/runners/ignore_errors_option.rb +0 -42
  286. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/runners.rb +0 -11
  287. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0.rb +0 -11
  288. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/file_formats/base_spec.rb +0 -11
  289. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build/document_spec.rb +0 -79
  290. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build/document_spec_files/pre_processed_root_body.adoc +0 -25
  291. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec.rb +0 -19
  292. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.source/content/_media/a_media_file +0 -1
  293. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.source/content/doc1/_media/a_media_file +0 -1
  294. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.source/content/doc1/body.adoc +0 -11
  295. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.source/content/doc1/title +0 -1
  296. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.source/content/doc2/body.adoc +0 -11
  297. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.source/content/doc2/doc2_1/_media/a_media_file +0 -1
  298. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.source/content/doc2/doc2_1/body.adoc +0 -11
  299. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.source/content/doc2/doc2_1/title +0 -1
  300. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.source/content/doc2/title +0 -1
  301. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.target/_media/a_media_file +0 -1
  302. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.target/_theme/main.css +0 -1
  303. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.target/doc1/_media/a_media_file +0 -1
  304. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.target/doc1/index.html +0 -1
  305. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.target/doc2/doc2_1/_media/a_media_file +0 -1
  306. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.target/doc2/doc2_1/index.html +0 -1
  307. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.target/doc2/index.html +0 -1
  308. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.target/index.html +0 -1
  309. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/source_generators/base_spec.rb +0 -5
  310. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/source_generators/base_spec_files/no_options/content/body.adoc +0 -11
  311. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/source_generators/base_spec_files/no_options/content/title +0 -1
  312. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/source_generators/base_spec_files/no_options/theme/main.css +0 -1
  313. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/sources/base_spec.rb +0 -13
  314. data/sub/avm-eac_asciidoctor_base0/spec/spec_helper/eac_asciidoctor_base0_stubs.rb +0 -55
  315. data/sub/avm-eac_asciidoctor_base0/template/avm/eac_asciidoctor_base0/source_generators/base/content/body.adoc +0 -11
  316. data/sub/avm-eac_asciidoctor_base0/template/avm/eac_asciidoctor_base0/source_generators/base/content/title +0 -1
  317. data/sub/avm-eac_asciidoctor_base0/template/avm/eac_asciidoctor_base0/source_generators/base/theme/main.css +0 -1
  318. /data/sub/{avm-eac_asciidoctor_base0 → avm}/Gemfile +0 -0
  319. /data/sub/{avm-eac_asciidoctor_base0/spec → avm/spec/meta}/rubocop_spec.rb +0 -0
@@ -0,0 +1,69 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Entries
5
+ class Entry
6
+ common_constructor :parent, :suffix, :options
7
+
8
+ def auto_value
9
+ auto_value_entry.value
10
+ end
11
+
12
+ def auto_value_entry
13
+ @auto_value_entry ||= ::Avm::Entries::AutoValues::Entry.new(parent, suffix)
14
+ end
15
+
16
+ # @return [Boolean]
17
+ def context_found?
18
+ context_entry.found?
19
+ end
20
+
21
+ # @return [Boolean]
22
+ def found?
23
+ context_found?
24
+ end
25
+
26
+ def full_path
27
+ (parent.path_prefix + suffix_as_array).join('.')
28
+ end
29
+
30
+ def optional_value
31
+ context_entry.found? ? context_entry.value : auto_value
32
+ end
33
+
34
+ def read
35
+ context_entry.value
36
+ end
37
+
38
+ def suffix_as_array
39
+ if suffix.is_a?(::Array)
40
+ suffix.dup
41
+ else
42
+ ::EacConfig::PathsHash.parse_entry_key(suffix.to_s)
43
+ end
44
+ end
45
+
46
+ def value
47
+ optional_value || read
48
+ end
49
+
50
+ def value!
51
+ optional_value.if_present { |v| return v }
52
+ context_entry.value!
53
+ end
54
+
55
+ def write(value)
56
+ context_entry.value = value
57
+ end
58
+
59
+ private
60
+
61
+ def context_entry
62
+ current_node = ::EacConfig::Node.context.optional_current
63
+ return current_node.entry(full_path) if current_node.present?
64
+
65
+ ::Avm::Entries::Entry::NoContextEntry.new
66
+ end
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,58 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Entries
5
+ module Jobs
6
+ module Base
7
+ common_concern do
8
+ include ::ActiveSupport::Callbacks
9
+ include ::Avm::Entries::Jobs::WithVariablesSource
10
+
11
+ enable_speaker
12
+ enable_simple_cache
13
+ enable_listable
14
+ common_constructor :instance, :options, default: [{}] do
15
+ if option_list.present?
16
+ self.options = option_list.hash_keys_validate!(options.symbolize_keys)
17
+ end
18
+ end
19
+ define_callbacks(*jobs)
20
+ end
21
+
22
+ module ClassMethods
23
+ def jobs
24
+ const_get('JOBS').dup
25
+ end
26
+ end
27
+
28
+ module InstanceMethods
29
+ def option_list
30
+ nil
31
+ end
32
+
33
+ def run
34
+ start_banner if respond_to?(:start_banner)
35
+ run_jobs
36
+ ::Avm::Result.success('Done!')
37
+ rescue ::Avm::Result::Error => e
38
+ e.to_result
39
+ end
40
+
41
+ protected
42
+
43
+ def run_jobs
44
+ jobs.each do |job|
45
+ run_callbacks job do
46
+ send(job)
47
+ end
48
+ end
49
+ end
50
+
51
+ def jobs
52
+ self.class.jobs
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Entries
5
+ module Jobs
6
+ class VariablesSource
7
+ class ReadEntry
8
+ enable_method_class
9
+ common_constructor :variables_source, :path, :options, default: [{}]
10
+ delegate :instance, :job, to: :variables_source
11
+
12
+ def result
13
+ return result_from_job if result_from_job?
14
+ return result_from_instance_method if result_from_instance_method?
15
+
16
+ result_from_instance_entry
17
+ end
18
+
19
+ private
20
+
21
+ def path_method_name
22
+ path.gsub('.', '_').underscore
23
+ end
24
+
25
+ def result_from_instance_entry
26
+ instance.read_entry(path, options)
27
+ end
28
+
29
+ def result_from_instance_method
30
+ instance.send(path_method_name)
31
+ end
32
+
33
+ def result_from_instance_method?
34
+ instance.respond_to?(path_method_name, true)
35
+ end
36
+
37
+ def result_from_job
38
+ job.send(path_method_name)
39
+ end
40
+
41
+ def result_from_job?
42
+ job.respond_to?(path_method_name, true)
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Entries
5
+ module Jobs
6
+ class VariablesSource
7
+ require_sub __FILE__, require_dependency: true
8
+ common_constructor :job
9
+ delegate :instance, to: :job
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Entries
5
+ module Jobs
6
+ module WithVariablesSource
7
+ def variables_source
8
+ ::Avm::Entries::Jobs::VariablesSource.new(self)
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Entries
5
+ class KeysConstantsSet
6
+ common_constructor :entries_provider_class, :prefix, :suffixes
7
+
8
+ # @return [Array<String>]
9
+ def result
10
+ if suffixes.is_a?(::Hash)
11
+ keys_consts_set_from_hash
12
+ elsif suffixes.is_a?(::Enumerable)
13
+ keys_consts_set_from_enum
14
+ else
15
+ raise "Unmapped suffixes class: #{suffixes.class}"
16
+ end
17
+ end
18
+
19
+ private
20
+
21
+ # @return [String]
22
+ def key_const_set(prefix, suffix)
23
+ key = [prefix, suffix].compact_blank.join('.')
24
+ entries_provider_class.const_set(key.gsub('.', '_').upcase, key)
25
+ key
26
+ end
27
+
28
+ # @return [Array<String>]
29
+ def keys_consts_set_from_enum
30
+ suffixes.map { |suffix| key_const_set(prefix, suffix) }
31
+ end
32
+
33
+ # @return [Array<String>]
34
+ def keys_consts_set_from_hash
35
+ suffixes.flat_map do |k, v|
36
+ self.class.new(entries_provider_class, prefix.to_s + (k.blank? ? '' : ".#{k}"), v).result
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,87 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Entries
5
+ class UriBuilder
6
+ FIELDS = %w[scheme user password host port path query fragment].freeze
7
+ FIELDS_TRANSLATIONS = {
8
+ username: :user, hostname: :host
9
+ }.freeze
10
+ ENTRIES_FIELDS = FIELDS.map do |field|
11
+ FIELDS_TRANSLATIONS.key(field.to_sym).if_present(field).to_s
12
+ end
13
+
14
+ class << self
15
+ def from_all_fields(&block)
16
+ r = new
17
+ ENTRIES_FIELDS.each do |field_name|
18
+ field_value = block.call(field_name)
19
+ r.field_set(field_name, field_value) if field_value.present?
20
+ end
21
+ r
22
+ end
23
+
24
+ def from_source(source)
25
+ if source.is_a?(::Addressable::URI)
26
+ from_source_uri(source)
27
+ elsif source.blank?
28
+ new
29
+ else
30
+ raise "Unexpected source: #{source}"
31
+ end
32
+ end
33
+
34
+ def from_source_uri(source_uri)
35
+ new(source_uri.to_hash)
36
+ end
37
+ end
38
+
39
+ common_constructor :data, default: -> { [{}] }
40
+
41
+ def avm_field_get(avm_field)
42
+ field_get(translate_field(avm_field))
43
+ end
44
+
45
+ # @return [String, nil]
46
+ def field_get(name)
47
+ v = data[name.to_sym]
48
+ v&.to_s
49
+ end
50
+
51
+ def field_set(field, value)
52
+ tfield = translate_field(field)
53
+ if FIELDS.include?(tfield)
54
+ main_field_set(tfield, value)
55
+ else
56
+ sub_field_set(tfield, value)
57
+ end
58
+ end
59
+
60
+ def translate_field(field)
61
+ if FIELDS_TRANSLATIONS.key?(field.to_sym)
62
+ FIELDS_TRANSLATIONS.fetch(field.to_sym).to_s
63
+ else
64
+ field.to_s
65
+ end
66
+ end
67
+
68
+ # @return [Addressable::URI, nil]
69
+ def to_uri
70
+ to_required_uri
71
+ rescue ::Addressable::URI::InvalidURIError
72
+ nil
73
+ end
74
+
75
+ # @return [Addressable::URI]
76
+ def to_required_uri
77
+ ::Addressable::URI.new(FIELDS.to_h { |f| [f.to_sym, field_get(f)] })
78
+ end
79
+
80
+ private
81
+
82
+ def main_field_set(name, value)
83
+ data[name.to_sym] = value
84
+ end
85
+ end
86
+ end
87
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Executables
5
+ class << self
6
+ include ::EacRubyUtils::SimpleCache
7
+
8
+ def env
9
+ ::EacRubyUtils::Envs.local
10
+ end
11
+
12
+ private
13
+
14
+ %w[xdg-open].each do |program|
15
+ define_method("#{program.underscore}_uncached") do
16
+ env.executable(program, '--version')
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'ostruct'
4
+
5
+ module Avm
6
+ module FileFormats
7
+ class Base
8
+ enable_abstract_methods
9
+ compare_by :class
10
+
11
+ # @params files [Enumerable<Pathname>]
12
+ # @return [Enumerable<Avm::FileFormats::FileResult>]
13
+ def apply(_files)
14
+ raise_abstract_method __method__
15
+ end
16
+
17
+ # @param path [Pathname]
18
+ # @return [Avm::FileFormats::FileWith]
19
+ def file_resource_name(path)
20
+ path.to_pathname.to_path
21
+ end
22
+
23
+ def name
24
+ self.class.name.demodulize
25
+ end
26
+
27
+ # @param file [Pathname]
28
+ # @return [Boolean]
29
+ def match?(_file)
30
+ raise_abstract_method __method__
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'ostruct'
4
+
5
+ module Avm
6
+ module FileFormats
7
+ class FileResult
8
+ common_constructor :file, :format, :changed
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,83 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module FileFormats
5
+ class SearchFormatter
6
+ include ::EacFs::Traversable
7
+
8
+ enable_simple_cache
9
+ enable_speaker
10
+ enable_listable
11
+ lists.add_symbol :option, :apply, :recursive, :verbose
12
+ common_constructor :source_paths, :options, default: [{}] do
13
+ options.assert_valid_keys(self.class.lists.option.values)
14
+ end
15
+
16
+ def run
17
+ clear
18
+ search_files
19
+ apply
20
+ show_results
21
+ end
22
+
23
+ private
24
+
25
+ def apply
26
+ speak(:infom, "Applying #{@formats_files.count} format(s)... ")
27
+ @formats_files.each do |format, files|
28
+ speak(:infom, "Applying format #{format.name} (Files matched: #{files.count})...")
29
+ next unless options[OPTION_APPLY]
30
+
31
+ @result += format.apply(files)
32
+ end
33
+ end
34
+
35
+ def traverser_check_file(file)
36
+ format = find_format(file)
37
+ speak(:infov, file, format ? format.class : '-')
38
+ return unless format
39
+
40
+ @formats_files[format] ||= []
41
+ @formats_files[format] << file
42
+ end
43
+
44
+ def clear
45
+ @formats_files = {}
46
+ @result = []
47
+ end
48
+
49
+ # @return [Avm::FileFormats::Base, nil]
50
+ def find_format(file)
51
+ ::Avm::Registry.file_formats.detect_optional(file)
52
+ end
53
+
54
+ def search_files
55
+ speak(:infov, 'Directories to search', source_paths.count)
56
+ source_paths.each do |source_path|
57
+ speak(:infom, "Searching files on \"#{source_path}\"...")
58
+ traverser_check_path(source_path)
59
+ end
60
+ end
61
+
62
+ def show_results
63
+ changed = @result.select(&:changed)
64
+ changed.each do |h|
65
+ speak(:out, h.file.to_s.cyan)
66
+ speak(:out, " (#{h.format})".yellow)
67
+ speak(:puts, ' changed'.green)
68
+ end
69
+ speak(:infov, 'Files changed', "#{changed.count}/#{@result.count}")
70
+ end
71
+
72
+ def traverser_recursive
73
+ options[OPTION_RECURSIVE]
74
+ end
75
+
76
+ def speak(method, *method_args)
77
+ return unless options[OPTION_VERBOSE].to_bool
78
+
79
+ send(method, *method_args)
80
+ end
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module FileFormats
5
+ class Unknown < ::Avm::FileFormats::Base
6
+ # @params files [Enumerable<Pathname>]
7
+ # @return [Enumerable<Avm::FileFormats::FileResult>]
8
+ def apply(files)
9
+ files.map do |file|
10
+ ::Avm::FileFormats::FileResult.new(file, self.class, false)
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,72 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'tempfile'
4
+
5
+ module Avm
6
+ module FileFormats
7
+ class Utf8Assert
8
+ UTF8_CHARSET = 'utf-8'
9
+ UTF8_CHARSETS = [UTF8_CHARSET, 'us-ascii'].freeze
10
+
11
+ class << self
12
+ def assert_files(files)
13
+ asserters = files.map { |file| new(file) }
14
+ begin
15
+ asserters.each(&:assert)
16
+ yield
17
+ ensure
18
+ asserters.each(&:revert)
19
+ end
20
+ end
21
+ end
22
+
23
+ enable_simple_cache
24
+ common_constructor :path
25
+
26
+ def assert
27
+ return if original_utf8?
28
+
29
+ convert_self(original_charset, UTF8_CHARSET)
30
+ end
31
+
32
+ def revert
33
+ return if original_utf8?
34
+
35
+ convert_self(UTF8_CHARSET, original_charset)
36
+ end
37
+
38
+ private
39
+
40
+ def original_info_uncached
41
+ ::EacFs::FileInfo.new(path)
42
+ end
43
+
44
+ def original_charset_uncached
45
+ return original_info.content_type.charset if original_info.content_type.charset.present?
46
+
47
+ raise 'No charset found'
48
+ rescue StandardError => e
49
+ raise "Unable to determine the charset of #{path} (#{e.message})"
50
+ end
51
+
52
+ def original_utf8?
53
+ UTF8_CHARSETS.include?(original_charset)
54
+ end
55
+
56
+ def convert_file(from_path, from_charset, to_path, to_charset)
57
+ File.open(from_path, "r:#{from_charset}") do |input|
58
+ File.open(to_path, "w:#{to_charset}") do |output|
59
+ output.write(input.read)
60
+ end
61
+ end
62
+ end
63
+
64
+ def convert_self(from_charset, to_charset)
65
+ temp = ::Tempfile.new
66
+ temp.close
67
+ convert_file(path, from_charset, temp.path, to_charset)
68
+ ::FileUtils.mv(temp.path, path)
69
+ end
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Files
5
+ module Appendable
6
+ class FileContent < ::Avm::Files::Appendable::ResourceBase
7
+ attr_reader :target_path, :content
8
+
9
+ def initialize(deploy, target_path, content)
10
+ super(deploy)
11
+ @target_path = target_path
12
+ @content = content
13
+ end
14
+
15
+ def write_on(target_dir)
16
+ target_dir.join(target_path).write(content)
17
+ end
18
+
19
+ protected
20
+
21
+ # @return [Enumerable<Symbol>]
22
+ def to_s_attributes
23
+ %i[target_path content]
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Files
5
+ module Appendable
6
+ class PlainDirectory < ::Avm::Files::Appendable::ResourceBase
7
+ attr_reader :source_path
8
+
9
+ def initialize(appender, source_path)
10
+ super(appender)
11
+ @source_path = source_path.to_pathname
12
+ end
13
+
14
+ def write_on(target_dir)
15
+ raise "\"#{source_path}\" is not a directory" unless source_path.directory?
16
+
17
+ ::FileUtils.cp_r("#{source_path}/.", target_dir.to_path)
18
+ end
19
+
20
+ # @return [Enumerable<Symbol>]
21
+ def to_s_attributes
22
+ [:source_path]
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Files
5
+ module Appendable
6
+ class ResourceBase
7
+ acts_as_abstract :to_s_attributes
8
+ common_constructor :appender
9
+
10
+ def to_s
11
+ v_to_s = to_s_attributes.map { |k| "#{k}: #{send(k)}" }.join(', ')
12
+ "#{self.class.name}[#{v_to_s}]"
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Files
5
+ module Appendable
6
+ class TarOutputCommand < ::Avm::Files::Appendable::ResourceBase
7
+ attr_reader :command
8
+
9
+ def initialize(appender, command)
10
+ super(appender)
11
+ @command = command
12
+ end
13
+
14
+ def write_on(target_dir)
15
+ command.pipe(
16
+ ::EacRubyUtils::Envs.local.command('tar', '-xf', '-', '-C', target_dir)
17
+ ).execute!
18
+ end
19
+
20
+ # @return [Enumerable<Symbol>]
21
+ def to_s_attributes
22
+ [:command]
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end