eac_tools 0.98.0 → 0.99.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 (284) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +97 -92
  3. data/lib/eac_tools/version.rb +1 -1
  4. data/lib/eac_tools.rb +4 -2
  5. data/sub/avm/avm.gemspec +3 -2
  6. data/sub/avm/lib/avm/application_scms/base.rb +1 -1
  7. data/sub/avm/lib/avm/application_scms.rb +1 -2
  8. data/sub/avm/lib/avm/application_stereotypes/base.rb +1 -1
  9. data/sub/avm/lib/avm/application_stereotypes.rb +1 -2
  10. data/sub/avm/lib/avm/applications/base/local_instance.rb +1 -1
  11. data/sub/avm/lib/avm/applications/base/local_source.rb +1 -1
  12. data/sub/avm/lib/avm/applications/base/naming.rb +1 -1
  13. data/sub/avm/lib/avm/applications/base/publishing.rb +1 -2
  14. data/sub/avm/lib/avm/applications/base/scm.rb +1 -1
  15. data/sub/avm/lib/avm/applications/base.rb +1 -1
  16. data/sub/avm/lib/avm/applications.rb +1 -2
  17. data/sub/avm/lib/avm/data/callbacks.rb +1 -1
  18. data/sub/avm/lib/avm/data/clearer.rb +1 -1
  19. data/sub/avm/lib/avm/data/dumper.rb +1 -2
  20. data/sub/avm/lib/avm/data/loader.rb +1 -2
  21. data/sub/avm/lib/avm/data/package/base_performer.rb +1 -1
  22. data/sub/avm/lib/avm/data/package/build_directory.rb +1 -2
  23. data/sub/avm/lib/avm/data/package/clear.rb +1 -1
  24. data/sub/avm/lib/avm/data/package/dump.rb +1 -1
  25. data/sub/avm/lib/avm/data/package/load.rb +1 -1
  26. data/sub/avm/lib/avm/data/package.rb +1 -1
  27. data/sub/avm/lib/avm/data/performer.rb +1 -2
  28. data/sub/avm/lib/avm/data/rotate.rb +1 -1
  29. data/sub/avm/lib/avm/data/unit.rb +2 -4
  30. data/sub/avm/lib/avm/data/unit_with_commands.rb +1 -1
  31. data/sub/avm/lib/avm/docker/container.rb +1 -1
  32. data/sub/avm/lib/avm/docker/image.rb +1 -1
  33. data/sub/avm/lib/avm/docker/runner.rb +1 -1
  34. data/sub/avm/lib/avm/docker.rb +1 -2
  35. data/sub/avm/lib/avm/entries/auto_values/entry.rb +1 -1
  36. data/sub/avm/lib/avm/entries/auto_values/uri_entry.rb +1 -1
  37. data/sub/avm/lib/avm/entries/auto_values.rb +1 -2
  38. data/sub/avm/lib/avm/entries/base/inherited_entry_value.rb +1 -1
  39. data/sub/avm/lib/avm/entries/base/uri_component_entry_value/default_value.rb +1 -1
  40. data/sub/avm/lib/avm/entries/base/uri_component_entry_value/inherited_value.rb +1 -1
  41. data/sub/avm/lib/avm/entries/base/uri_component_entry_value/url_entry_value.rb +1 -1
  42. data/sub/avm/lib/avm/entries/base/uri_component_entry_value.rb +1 -1
  43. data/sub/avm/lib/avm/entries/base/uri_components_entries_values/component_factory.rb +1 -1
  44. data/sub/avm/lib/avm/entries/base/uri_components_entries_values/generic_component.rb +1 -1
  45. data/sub/avm/lib/avm/entries/base/uri_components_entries_values/path_component.rb +1 -1
  46. data/sub/avm/lib/avm/entries/base/uri_components_entries_values/url_component.rb +1 -1
  47. data/sub/avm/lib/avm/entries/base/uri_components_entries_values.rb +3 -2
  48. data/sub/avm/lib/avm/entries/base.rb +1 -1
  49. data/sub/avm/lib/avm/entries/entry/no_context_entry.rb +1 -1
  50. data/sub/avm/lib/avm/entries/entry.rb +1 -3
  51. data/sub/avm/lib/avm/entries/jobs/variables_source/read_entry.rb +1 -1
  52. data/sub/avm/lib/avm/entries/jobs/variables_source.rb +1 -1
  53. data/sub/avm/lib/avm/entries/jobs.rb +1 -2
  54. data/sub/avm/lib/avm/entries/keys_constants_set.rb +1 -1
  55. data/sub/avm/lib/avm/entries/uri_builder.rb +1 -3
  56. data/sub/avm/lib/avm/entries.rb +1 -2
  57. data/sub/avm/lib/avm/executables.rb +1 -2
  58. data/sub/avm/lib/avm/file_formats/search_formatter.rb +2 -2
  59. data/sub/avm/lib/avm/file_formats/unknown.rb +1 -1
  60. data/sub/avm/lib/avm/file_formats.rb +1 -2
  61. data/sub/avm/lib/avm/files/appendable/file_content.rb +31 -0
  62. data/sub/avm/lib/avm/files/appendable/plain_directory.rb +30 -0
  63. data/sub/avm/lib/avm/files/appendable/resource_base.rb +19 -0
  64. data/sub/avm/lib/avm/files/appendable/tar_output_command.rb +31 -0
  65. data/sub/avm/lib/avm/files/appendable/templatized_directory.rb +40 -0
  66. data/sub/avm/lib/avm/files/appendable.rb +55 -0
  67. data/sub/avm/lib/avm/files/appender.rb +11 -0
  68. data/sub/avm/lib/avm/files/deploy.rb +71 -0
  69. data/sub/avm/lib/avm/files/text_replacer/gsub.rb +24 -0
  70. data/sub/avm/lib/avm/files/text_replacer.rb +32 -0
  71. data/sub/avm/lib/avm/instances/base/auto_values.rb +1 -1
  72. data/sub/avm/lib/avm/instances/base/dockerizable.rb +1 -1
  73. data/sub/avm/lib/avm/instances/base/processes.rb +1 -1
  74. data/sub/avm/lib/avm/instances/base/subcommand_parent.rb +1 -1
  75. data/sub/avm/lib/avm/instances/base.rb +1 -2
  76. data/sub/avm/lib/avm/instances/data/unit.rb +1 -1
  77. data/sub/avm/lib/avm/instances/data.rb +1 -2
  78. data/sub/avm/lib/avm/instances/entry_keys.rb +1 -1
  79. data/sub/avm/lib/avm/instances/ids.rb +2 -2
  80. data/sub/avm/lib/avm/instances/process.rb +1 -1
  81. data/sub/avm/lib/avm/instances.rb +1 -2
  82. data/sub/avm/lib/avm/launcher/context/instance_collector.rb +1 -1
  83. data/sub/avm/lib/avm/launcher/context/instance_discovery/root_instance_paths.rb +1 -1
  84. data/sub/avm/lib/avm/launcher/context/instance_discovery.rb +1 -1
  85. data/sub/avm/lib/avm/launcher/context/instance_manager/cached_instance.rb +1 -1
  86. data/sub/avm/lib/avm/launcher/context/instance_manager/cached_instances.rb +1 -1
  87. data/sub/avm/lib/avm/launcher/context/instance_manager.rb +1 -2
  88. data/sub/avm/lib/avm/launcher/context/settings.rb +1 -1
  89. data/sub/avm/lib/avm/launcher/context.rb +3 -7
  90. data/sub/avm/lib/avm/launcher/errors.rb +1 -2
  91. data/sub/avm/lib/avm/launcher/instances/base/publishing.rb +1 -1
  92. data/sub/avm/lib/avm/launcher/instances/base.rb +1 -3
  93. data/sub/avm/lib/avm/launcher/instances/runner_helper.rb +0 -1
  94. data/sub/avm/lib/avm/launcher/instances/settings.rb +1 -1
  95. data/sub/avm/lib/avm/launcher/instances.rb +1 -2
  96. data/sub/avm/lib/avm/launcher/paths/logical.rb +1 -1
  97. data/sub/avm/lib/avm/launcher/paths.rb +1 -2
  98. data/sub/avm/lib/avm/launcher/project.rb +1 -1
  99. data/sub/avm/lib/avm/launcher/publish/base.rb +1 -1
  100. data/sub/avm/lib/avm/launcher/publish/check_result.rb +1 -1
  101. data/sub/avm/lib/avm/launcher/publish.rb +2 -3
  102. data/sub/avm/lib/avm/launcher.rb +1 -2
  103. data/sub/avm/lib/avm/launcher_stereotypes.rb +1 -2
  104. data/sub/avm/lib/avm/registry/application_stereotypes/build_available.rb +1 -1
  105. data/sub/avm/lib/avm/registry/application_stereotypes/stereotype_builder.rb +1 -1
  106. data/sub/avm/lib/avm/registry/application_stereotypes.rb +1 -1
  107. data/sub/avm/lib/avm/registry/applications.rb +1 -1
  108. data/sub/avm/lib/avm/registry/config_objects.rb +1 -2
  109. data/sub/avm/lib/avm/registry/from_gems.rb +1 -2
  110. data/sub/avm/lib/avm/registry/launcher_stereotypes.rb +1 -1
  111. data/sub/avm/lib/avm/registry/with_path/cache.rb +1 -1
  112. data/sub/avm/lib/avm/registry/with_path.rb +1 -1
  113. data/sub/avm/lib/avm/registry.rb +1 -2
  114. data/sub/avm/lib/avm/result.rb +1 -2
  115. data/sub/avm/lib/avm/rspec/launcher_controller.rb +1 -1
  116. data/sub/avm/lib/avm/rspec/setup/launcher.rb +1 -1
  117. data/sub/avm/lib/avm/rspec/setup/source_generator.rb +1 -1
  118. data/sub/avm/lib/avm/rspec/setup.rb +1 -2
  119. data/sub/avm/lib/avm/rspec/shared_examples/avm_file_format_file_resource_name.rb +1 -1
  120. data/sub/avm/lib/avm/rspec/shared_examples/avm_file_formats_with_fixtures.rb +1 -1
  121. data/sub/avm/lib/avm/rspec/shared_examples/avm_source_generated.rb +1 -1
  122. data/sub/avm/lib/avm/rspec/shared_examples/entries_values.rb +1 -1
  123. data/sub/avm/lib/avm/rspec/shared_examples/with_config.rb +1 -1
  124. data/sub/avm/lib/avm/rspec.rb +1 -2
  125. data/sub/avm/lib/avm/runner_with/file_replacer.rb +32 -0
  126. data/sub/avm/lib/avm/runner_with/filesystem_renamer.rb +101 -0
  127. data/sub/avm/lib/avm/runner_with/filesystem_traverser.rb +52 -0
  128. data/sub/avm/lib/avm/runner_with.rb +9 -0
  129. data/sub/avm/lib/avm/scms/auto_commit/file_resource_name.rb +1 -1
  130. data/sub/avm/lib/avm/scms/auto_commit/for_file.rb +1 -1
  131. data/sub/avm/lib/avm/scms/auto_commit/rules/base.rb +1 -1
  132. data/sub/avm/lib/avm/scms/auto_commit/rules.rb +3 -3
  133. data/sub/avm/lib/avm/scms/auto_commit.rb +1 -2
  134. data/sub/avm/lib/avm/scms/base/branches.rb +1 -1
  135. data/sub/avm/lib/avm/scms/base/commits.rb +1 -1
  136. data/sub/avm/lib/avm/scms/base/milestones.rb +1 -1
  137. data/sub/avm/lib/avm/scms/base/remotes.rb +1 -1
  138. data/sub/avm/lib/avm/scms/base.rb +1 -1
  139. data/sub/avm/lib/avm/scms/branch.rb +1 -1
  140. data/sub/avm/lib/avm/scms/changed_file.rb +1 -1
  141. data/sub/avm/lib/avm/scms/commit.rb +1 -1
  142. data/sub/avm/lib/avm/scms/commit_info.rb +1 -1
  143. data/sub/avm/lib/avm/scms/interval.rb +1 -1
  144. data/sub/avm/lib/avm/scms/null/commit.rb +1 -1
  145. data/sub/avm/lib/avm/scms/null.rb +1 -3
  146. data/sub/avm/lib/avm/scms/remote.rb +1 -1
  147. data/sub/avm/lib/avm/scms.rb +1 -2
  148. data/sub/avm/lib/avm/self/docker_image.rb +1 -1
  149. data/sub/avm/lib/avm/source_generators/base.rb +2 -4
  150. data/sub/avm/lib/avm/source_generators/option_list.rb +1 -1
  151. data/sub/avm/lib/avm/source_generators.rb +1 -2
  152. data/sub/avm/lib/avm/sources/auto_commit/for_file.rb +1 -1
  153. data/sub/avm/lib/avm/sources/auto_commit.rb +1 -2
  154. data/sub/avm/lib/avm/sources/base/application.rb +1 -1
  155. data/sub/avm/lib/avm/sources/base/configuration.rb +1 -2
  156. data/sub/avm/lib/avm/sources/base/locale.rb +2 -4
  157. data/sub/avm/lib/avm/sources/base/organizational.rb +1 -1
  158. data/sub/avm/lib/avm/sources/base/parent.rb +1 -1
  159. data/sub/avm/lib/avm/sources/base/stereotype.rb +1 -1
  160. data/sub/avm/lib/avm/sources/base/sub/remove.rb +1 -1
  161. data/sub/avm/lib/avm/sources/base/sub.rb +1 -1
  162. data/sub/avm/lib/avm/sources/base/subs.rb +1 -1
  163. data/sub/avm/lib/avm/sources/base/subs_paths.rb +1 -1
  164. data/sub/avm/lib/avm/sources/base/testing.rb +1 -2
  165. data/sub/avm/lib/avm/sources/base/update.rb +1 -1
  166. data/sub/avm/lib/avm/sources/base/update_sub.rb +1 -1
  167. data/sub/avm/lib/avm/sources/base/update_subs.rb +1 -1
  168. data/sub/avm/lib/avm/sources/base/version_bump.rb +1 -1
  169. data/sub/avm/lib/avm/sources/base.rb +1 -1
  170. data/sub/avm/lib/avm/sources/configuration.rb +1 -1
  171. data/sub/avm/lib/avm/sources/issues.rb +1 -2
  172. data/sub/avm/lib/avm/sources/tests/builder.rb +1 -2
  173. data/sub/avm/lib/avm/sources/tests/performer.rb +1 -1
  174. data/sub/avm/lib/avm/sources/tests/single.rb +1 -1
  175. data/sub/avm/lib/avm/sources/tests.rb +1 -2
  176. data/sub/avm/lib/avm/sources.rb +1 -2
  177. data/sub/avm/lib/avm/sync.rb +1 -1
  178. data/sub/avm/lib/avm/version.rb +1 -1
  179. data/sub/avm/lib/avm/with/application_stereotype.rb +2 -4
  180. data/sub/avm/lib/avm/with/extra_subcommands.rb +1 -1
  181. data/sub/avm/lib/avm.rb +5 -2
  182. data/sub/avm/spec/lib/avm/applications/base/entries_spec.rb +0 -2
  183. data/sub/avm/spec/lib/avm/applications/base_spec.rb +0 -2
  184. data/sub/avm/spec/lib/avm/file_formats/base_spec.rb +0 -2
  185. data/sub/avm/spec/lib/avm/instances/base_spec.rb +0 -3
  186. data/sub/avm/spec/lib/avm/launcher/context_spec.rb +0 -3
  187. data/sub/avm/spec/lib/avm/launcher/instances/base_spec.rb +0 -3
  188. data/sub/avm/spec/lib/avm/patches/eac_config/entry_path_spec.rb +0 -2
  189. data/sub/avm/spec/lib/avm/scms/auto_commit/file_resource_name_spec.rb +0 -2
  190. data/sub/avm/spec/lib/avm/scms/base_spec.rb +0 -2
  191. data/sub/avm/spec/lib/avm/sources/base_spec.rb +0 -2
  192. data/sub/avm/spec/lib/avm/sources/runner_spec.rb +0 -2
  193. data/sub/avm/spec/spec_helper.rb +1 -1
  194. data/sub/avm-eac_generic_base0/avm-eac_generic_base0.gemspec +3 -3
  195. data/sub/avm-eac_generic_base0/lib/avm/eac_generic_base0/file_formats/base/apply.rb +1 -2
  196. data/sub/avm-eac_generic_base0/lib/avm/eac_generic_base0/file_formats/base/file_resource_name_helper.rb +1 -3
  197. data/sub/avm-eac_generic_base0/lib/avm/eac_generic_base0/file_formats/base/match.rb +1 -2
  198. data/sub/avm-eac_generic_base0/lib/avm/eac_generic_base0/file_formats/base.rb +1 -2
  199. data/sub/avm-eac_generic_base0/lib/avm/eac_generic_base0/file_formats.rb +0 -2
  200. data/sub/avm-eac_generic_base0/lib/avm/eac_generic_base0/instances.rb +0 -2
  201. data/sub/avm-eac_generic_base0/lib/avm/eac_generic_base0/sources/base.rb +0 -1
  202. data/sub/avm-eac_generic_base0/lib/avm/eac_generic_base0/sources/docker.rb +0 -2
  203. data/sub/avm-eac_generic_base0/lib/avm/eac_generic_base0/sources.rb +0 -2
  204. data/sub/avm-eac_generic_base0/lib/avm/eac_generic_base0/version.rb +1 -1
  205. data/sub/avm-eac_generic_base0/lib/avm/eac_generic_base0.rb +2 -2
  206. data/sub/avm-eac_generic_base0/spec/lib/avm/eac_generic_base0/file_formats/base_spec.rb +0 -2
  207. data/sub/avm-eac_generic_base0/spec/lib/avm/eac_generic_base0/sources/base_spec.rb +0 -2
  208. data/sub/avm-eac_generic_base0/spec/spec_helper.rb +2 -1
  209. data/sub/avm-files/Gemfile +8 -0
  210. data/sub/avm-files/avm-files.gemspec +18 -0
  211. data/sub/avm-files/lib/avm/files/version.rb +7 -0
  212. data/sub/avm-files/spec/rubocop_spec.rb +3 -0
  213. data/sub/avm-files/spec/spec_helper.rb +5 -0
  214. data/sub/avm-tools/Gemfile +8 -0
  215. data/sub/avm-tools/README.textile +28 -0
  216. data/sub/avm-tools/avm-tools.gemspec +25 -0
  217. data/sub/avm-tools/exe/avm +6 -0
  218. data/sub/avm-tools/lib/avm/tools/core_ext.rb +3 -0
  219. data/sub/avm-tools/lib/avm/tools/rspec/helpers/runner.rb +20 -0
  220. data/sub/avm-tools/lib/avm/tools/rspec/helpers.rb +13 -0
  221. data/sub/avm-tools/lib/avm/tools/rspec/setup.rb +24 -0
  222. data/sub/avm-tools/lib/avm/tools/rspec.rb +11 -0
  223. data/sub/avm-tools/lib/avm/tools/runner/application/info.rb +36 -0
  224. data/sub/avm-tools/lib/avm/tools/runner/application.rb +26 -0
  225. data/sub/avm-tools/lib/avm/tools/runner/application_stereotypes/list.rb +31 -0
  226. data/sub/avm-tools/lib/avm/tools/runner/application_stereotypes.rb +16 -0
  227. data/sub/avm-tools/lib/avm/tools/runner/applications/list.rb +31 -0
  228. data/sub/avm-tools/lib/avm/tools/runner/applications.rb +16 -0
  229. data/sub/avm-tools/lib/avm/tools/runner/config/load_path.rb +52 -0
  230. data/sub/avm-tools/lib/avm/tools/runner/config.rb +17 -0
  231. data/sub/avm-tools/lib/avm/tools/runner/files/format.rb +50 -0
  232. data/sub/avm-tools/lib/avm/tools/runner/files/rotate.rb +31 -0
  233. data/sub/avm-tools/lib/avm/tools/runner/files.rb +17 -0
  234. data/sub/avm-tools/lib/avm/tools/runner/instance/data/clear.rb +18 -0
  235. data/sub/avm-tools/lib/avm/tools/runner/instance/data/dump.rb +20 -0
  236. data/sub/avm-tools/lib/avm/tools/runner/instance/data/load.rb +25 -0
  237. data/sub/avm-tools/lib/avm/tools/runner/instance/data/unit/clear.rb +20 -0
  238. data/sub/avm-tools/lib/avm/tools/runner/instance/data/unit/dump.rb +20 -0
  239. data/sub/avm-tools/lib/avm/tools/runner/instance/data/unit/load.rb +25 -0
  240. data/sub/avm-tools/lib/avm/tools/runner/instance/data/unit.rb +44 -0
  241. data/sub/avm-tools/lib/avm/tools/runner/instance/data.rb +27 -0
  242. data/sub/avm-tools/lib/avm/tools/runner/instance/entry.rb +43 -0
  243. data/sub/avm-tools/lib/avm/tools/runner/instance/info.rb +39 -0
  244. data/sub/avm-tools/lib/avm/tools/runner/instance/system.rb +65 -0
  245. data/sub/avm-tools/lib/avm/tools/runner/instance.rb +16 -0
  246. data/sub/avm-tools/lib/avm/tools/runner/launcher/instances.rb +36 -0
  247. data/sub/avm-tools/lib/avm/tools/runner/launcher/projects.rb +40 -0
  248. data/sub/avm-tools/lib/avm/tools/runner/launcher/publish.rb +53 -0
  249. data/sub/avm-tools/lib/avm/tools/runner/launcher.rb +17 -0
  250. data/sub/avm-tools/lib/avm/tools/runner/launcher_stereotypes/list.rb +41 -0
  251. data/sub/avm-tools/lib/avm/tools/runner/launcher_stereotypes.rb +16 -0
  252. data/sub/avm-tools/lib/avm/tools/runner/self/docker.rb +14 -0
  253. data/sub/avm-tools/lib/avm/tools/runner/self/registry.rb +25 -0
  254. data/sub/avm-tools/lib/avm/tools/runner/self.rb +22 -0
  255. data/sub/avm-tools/lib/avm/tools/runner/source/auto_commit.rb +72 -0
  256. data/sub/avm-tools/lib/avm/tools/runner/source/info.rb +55 -0
  257. data/sub/avm-tools/lib/avm/tools/runner/source/issue/complete.rb +86 -0
  258. data/sub/avm-tools/lib/avm/tools/runner/source/issue/deliver.rb +35 -0
  259. data/sub/avm-tools/lib/avm/tools/runner/source/issue.rb +19 -0
  260. data/sub/avm-tools/lib/avm/tools/runner/source/sub/remove.rb +22 -0
  261. data/sub/avm-tools/lib/avm/tools/runner/source/sub.rb +29 -0
  262. data/sub/avm-tools/lib/avm/tools/runner/source/subs.rb +72 -0
  263. data/sub/avm-tools/lib/avm/tools/runner/source/test.rb +93 -0
  264. data/sub/avm-tools/lib/avm/tools/runner/source/update.rb +22 -0
  265. data/sub/avm-tools/lib/avm/tools/runner/source/version_bump.rb +81 -0
  266. data/sub/avm-tools/lib/avm/tools/runner/source.rb +18 -0
  267. data/sub/avm-tools/lib/avm/tools/runner/source_generate.rb +12 -0
  268. data/sub/avm-tools/lib/avm/tools/runner.rb +25 -0
  269. data/sub/avm-tools/lib/avm/tools/runner_with/include_exclude.rb +23 -0
  270. data/sub/avm-tools/lib/avm/tools/runner_with/instance_data_clear.rb +23 -0
  271. data/sub/avm-tools/lib/avm/tools/runner_with/instance_data_dump.rb +59 -0
  272. data/sub/avm-tools/lib/avm/tools/runner_with/instance_data_load.rb +69 -0
  273. data/sub/avm-tools/lib/avm/tools/runner_with/instance_data_performer.rb +40 -0
  274. data/sub/avm-tools/lib/avm/tools/runner_with.rb +11 -0
  275. data/sub/avm-tools/lib/avm/tools/self.rb +23 -0
  276. data/sub/avm-tools/lib/avm/tools/version.rb +7 -0
  277. data/sub/avm-tools/lib/avm/tools.rb +12 -0
  278. data/sub/avm-tools/spec/lib/avm/tools/runner/files/rotate_spec.rb +71 -0
  279. data/sub/avm-tools/spec/lib/avm/tools/runner/launcher_stereotypes/list_spec.rb +15 -0
  280. data/sub/avm-tools/spec/lib/avm/tools/runner/source/issue/complete_spec.rb +47 -0
  281. data/sub/avm-tools/spec/lib/avm/tools/runner_spec.rb +12 -0
  282. data/sub/avm-tools/spec/rubocop_spec.rb +3 -0
  283. data/sub/avm-tools/spec/spec_helper.rb +5 -0
  284. metadata +113 -30
@@ -0,0 +1,93 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/tools/core_ext'
4
+ require 'avm/sources/tests/builder'
5
+
6
+ module Avm
7
+ module Tools
8
+ class Runner
9
+ class Source < ::Avm::Sources::Runner
10
+ class Test
11
+ runner_with :help do
12
+ desc 'Test local project.'
13
+ bool_opt '-a', '--all', 'Same as "--self --subs".'
14
+ bool_opt '-f', '--fail-fast', 'Abort after first failure.'
15
+ bool_opt '-m', '--main', 'Test main source.'
16
+ bool_opt '-s', '--subs', 'Test subs\' sources.'
17
+ pos_arg :source_id, repeat: true, optional: true
18
+ end
19
+
20
+ def run
21
+ reset_tested_units
22
+ start_banner
23
+ show_units_results
24
+ final_result
25
+ end
26
+
27
+ private
28
+
29
+ attr_accessor :tested_units
30
+
31
+ def failed_units
32
+ tested_units.select(&:failed?)
33
+ end
34
+
35
+ def final_result
36
+ if failed_units.any?
37
+ failed_units.each do |unit|
38
+ infov ' * Source', unit
39
+ info unit.logs.truncate_all
40
+ end
41
+ fatal_error 'Some test did not pass'
42
+ else
43
+ success 'None test failed'
44
+ end
45
+ end
46
+
47
+ def include_main?
48
+ parsed.main? || parsed.all?
49
+ end
50
+
51
+ def include_subs?
52
+ parsed.subs? || parsed.all?
53
+ end
54
+
55
+ def reset_tested_units
56
+ self.tested_units = []
57
+ end
58
+
59
+ def show_units_results
60
+ test_performer.units.each do |unit|
61
+ infov unit, unit_result(unit)
62
+ tested_units << unit
63
+ break if unit.failed? && parsed.fail_fast?
64
+ end
65
+ end
66
+
67
+ def start_banner
68
+ runner_context.call(:source_banner)
69
+ infov 'Selected units', test_performer.units.count
70
+ end
71
+
72
+ def test_builder
73
+ r = ::Avm::Sources::Tests::Builder.new(runner_context.call(:subject))
74
+ .include_main(include_main?)
75
+ .include_subs(include_subs?)
76
+ parsed.source_id.inject(r) { |a, e| a.include_id(e) }
77
+ end
78
+
79
+ def test_performer_uncached
80
+ test_builder.performer
81
+ end
82
+
83
+ def unit_result(unit)
84
+ (
85
+ [unit.result.to_label] +
86
+ %i[stdout stderr].map { |label| "#{label.to_s.upcase}: #{unit.logs[label]}" }
87
+ ).join(' | '.blue)
88
+ end
89
+ end
90
+ end
91
+ end
92
+ end
93
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/tools/core_ext'
4
+
5
+ module Avm
6
+ module Tools
7
+ class Runner
8
+ class Source < ::Avm::Sources::Runner
9
+ class Update
10
+ runner_with :help do
11
+ desc 'Update local project.'
12
+ end
13
+
14
+ def run
15
+ infov 'Path', runner_context.call(:subject).path
16
+ runner_context.call(:subject).update
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,81 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/version_number'
4
+ require 'eac_cli/core_ext'
5
+
6
+ module Avm
7
+ module Tools
8
+ class Runner
9
+ class Source < ::Avm::Sources::Runner
10
+ class VersionBump
11
+ runner_with :help, :confirmation do
12
+ desc 'Bump version of a local project.'
13
+ arg_opt '-n', '--new', 'Set new version.'
14
+ arg_opt '-s', '--segment', 'Increment de <segment>-th segment (Left-most is 0)'
15
+ bool_opt '-M', '--major', 'Same as --segment=0.'
16
+ bool_opt '-m', '--minor', 'Same as --segment=1.'
17
+ bool_opt '-p', '--patch', 'Same as --segment=2.'
18
+ end
19
+
20
+ def run
21
+ start_banner
22
+ version_changed? ? run_version_changed : run_version_unchanged
23
+ end
24
+
25
+ def run_version_changed
26
+ infom 'Version changed'
27
+ if confirm?
28
+ runner_context.call(:subject).version_bump(target_version)
29
+ success 'Bumped'
30
+ else
31
+ fatal_error 'Bump unconfirmed'
32
+ end
33
+ end
34
+
35
+ def run_version_unchanged
36
+ success 'Version unchanged'
37
+ end
38
+
39
+ def start_banner
40
+ infov 'Instance', runner_context.call(:subject)
41
+ infov 'Current version', current_version.if_present('-')
42
+ infov 'Target version', target_version.if_present('-')
43
+ end
44
+
45
+ def current_version_uncached
46
+ runner_context.call(:subject).if_respond('version')
47
+ end
48
+
49
+ def target_version_uncached
50
+ r = current_version
51
+ %w[new segment major minor patch].each do |option|
52
+ option_value = parsed[option]
53
+ next if option_value.blank?
54
+
55
+ r = send("target_version_from_#{option}", r, option_value)
56
+ end
57
+ r
58
+ end
59
+
60
+ def target_version_from_new(_current, option_value)
61
+ ::Avm::VersionNumber.new(option_value)
62
+ end
63
+
64
+ def target_version_from_segment(current, option_value)
65
+ current.increment_segment(option_value.to_i)
66
+ end
67
+
68
+ %w[major minor patch].each_with_index do |segment, segment_index|
69
+ define_method "target_version_from_#{segment}" do |current, _option_value|
70
+ target_version_from_segment(current, segment_index)
71
+ end
72
+ end
73
+
74
+ def version_changed?
75
+ target_version != current_version
76
+ end
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/sources/runner'
4
+ require 'eac_cli/core_ext'
5
+
6
+ module Avm
7
+ module Tools
8
+ class Runner
9
+ class Source < ::Avm::Sources::Runner
10
+ require_sub __FILE__
11
+
12
+ def subject
13
+ source
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/source_generators/runner'
4
+
5
+ module Avm
6
+ module Tools
7
+ class Runner
8
+ class SourceGenerate < ::Avm::SourceGenerators::Runner
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/tools/self'
4
+ require 'avm/registry'
5
+ require 'avm/tools/version'
6
+ require 'eac_ruby_base0/runner'
7
+
8
+ module Avm
9
+ module Tools
10
+ class Runner
11
+ require_sub __FILE__
12
+ include ::EacRubyBase0::Runner
13
+
14
+ runner_definition do
15
+ desc 'Tools for AVM.'
16
+ end
17
+
18
+ delegate :application, to: :'::Avm::Tools::Self'
19
+
20
+ def extra_available_subcommands
21
+ ::Avm::Registry.runners.registered_modules.index_by(&:command_argument)
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_cli/core_ext'
4
+ require 'eac_cli/runner'
5
+
6
+ module Avm
7
+ module Tools
8
+ module RunnerWith
9
+ module IncludeExclude
10
+ common_concern do
11
+ include ::EacCli::Runner
12
+
13
+ runner_definition do
14
+ arg_opt '-I', '--include', repeat: true
15
+ arg_opt '-E', '--exclude', repeat: true
16
+ end
17
+ end
18
+
19
+ delegate :include, :exclude, to: :parsed
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/data/clearer'
4
+ require 'eac_cli/core_ext'
5
+ require 'avm/tools/runner_with/instance_data_performer'
6
+
7
+ module Avm
8
+ module Tools
9
+ module RunnerWith
10
+ module InstanceDataClear
11
+ common_concern do
12
+ enable_simple_cache
13
+ include ::Avm::Tools::RunnerWith::InstanceDataPerformer
14
+ end
15
+
16
+ # @return [Class]
17
+ def data_performer_class
18
+ ::Avm::Data::Clearer
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,59 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/data/dumper'
4
+ require 'eac_cli/core_ext'
5
+ require 'avm/tools/runner_with/instance_data_performer'
6
+
7
+ module Avm
8
+ module Tools
9
+ module RunnerWith
10
+ module InstanceDataDump
11
+ common_concern do
12
+ enable_simple_cache
13
+ runner_definition do
14
+ bool_opt '-w', '--rewrite', 'Forces dump overwrite.'
15
+ pos_arg :dump_path, optional: true
16
+ end
17
+
18
+ set_callback :run, :after do
19
+ success("Dump path: \"#{dump_path}\"")
20
+ dump_path
21
+ end
22
+ end
23
+
24
+ include ::Avm::Tools::RunnerWith::InstanceDataPerformer
25
+
26
+ DUMP_EXPIRE_TIME = 1.day
27
+ NO_DUMP_MESSAGE = 'Dump "%s" already exist and rewrite options was no setted nor ' \
28
+ 'dump was expired.'
29
+
30
+ # @return [Class]
31
+ def data_performer_class
32
+ ::Avm::Data::Dumper
33
+ end
34
+
35
+ # @return [String]
36
+ def help_extra_text
37
+ "Default dump path: \"#{default_dump_path}\""
38
+ end
39
+
40
+ private
41
+
42
+ # @return [Avm::Data::Dumper]
43
+ def data_performer_uncached
44
+ r = super.overwrite(parsed.rewrite?)
45
+ parsed.dump_path.if_present(r) { |v| r.target_path(v.to_pathname) }
46
+ end
47
+
48
+ # @return [Pathname]
49
+ def dump_path
50
+ data_performer.target_path
51
+ end
52
+
53
+ def default_dump_path
54
+ data_performer.default_dump_path
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,69 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/data/dumper'
4
+ require 'avm/data/loader'
5
+ require 'eac_cli/core_ext'
6
+ require 'avm/tools/runner_with/instance_data_performer'
7
+
8
+ module Avm
9
+ module Tools
10
+ module RunnerWith
11
+ module InstanceDataLoad
12
+ common_concern do
13
+ enable_simple_cache
14
+
15
+ runner_definition do
16
+ arg_opt '-S', '--source-instance', 'Informa a instância a ser extraída o dump.'
17
+ bool_opt '-w', '--rewrite'
18
+ pos_arg :dump_path, optional: true
19
+ end
20
+
21
+ set_callback :run, :after do
22
+ success("Dump loaded from \"#{dump_path}\"")
23
+ end
24
+ end
25
+
26
+ include ::Avm::Tools::RunnerWith::InstanceDataPerformer
27
+
28
+ # @return [Class]
29
+ def data_performer_class
30
+ ::Avm::Data::Loader
31
+ end
32
+
33
+ private
34
+
35
+ # @return [Avm::Data::Loader]
36
+ def data_performer_uncached
37
+ super.source_path(dump_path)
38
+ end
39
+
40
+ # @return [Pathname]
41
+ def dump_path_uncached
42
+ return parsed.dump_path.to_pathname if parsed.dump_path.present?
43
+ return source_instance_dump_path if parsed.source_instance.present?
44
+
45
+ fatal_error "Dump path not set (Options: #{parsed})"
46
+ end
47
+
48
+ # @return [Avm::Instances::Base]
49
+ def source_instance
50
+ runner_context.call(:instance).class.by_id(parsed.source_instance)
51
+ end
52
+
53
+ # @return [Avm::Data::Dumper]
54
+ def source_instance_dumper
55
+ data_performer_set_includes_excludes(
56
+ ::Avm::Data::Dumper.new(source_instance_data_owner).overwrite(parsed.rewrite?)
57
+ )
58
+ end
59
+
60
+ # @return [Pathname]
61
+ def source_instance_dump_path
62
+ r = source_instance_dumper
63
+ r.perform
64
+ r.target_path
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_cli/core_ext'
4
+ require 'eac_cli/runner'
5
+
6
+ module Avm
7
+ module Tools
8
+ module RunnerWith
9
+ module InstanceDataPerformer
10
+ acts_as_abstract :data_performer_class
11
+ common_concern do
12
+ enable_simple_cache
13
+ include ::EacCli::Runner
14
+ end
15
+
16
+ def run
17
+ if data_performer.performable?
18
+ data_performer.perform
19
+ else
20
+ fatal_error("Cannot perform: #{data_performer.cannot_perform_reason}")
21
+ end
22
+ end
23
+
24
+ private
25
+
26
+ # @return [Avm::Data::Performer]
27
+ def data_performer_uncached
28
+ data_performer_set_includes_excludes(data_performer_class.new(data_owner))
29
+ end
30
+
31
+ # @return [Avm::Data::Performer]
32
+ def data_performer_set_includes_excludes(data_performer)
33
+ %i[include exclude].inject(data_performer) do |a1, e1|
34
+ if_respond(e1, []).inject(a1) { |a2, e2| a2.send(e1, e2) }
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils'
4
+
5
+ module Avm
6
+ module Tools
7
+ module RunnerWith
8
+ require_sub __FILE__, require_mode: :kernel
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_base0/application'
4
+ require 'eac_ruby_utils'
5
+ require 'avm/instances/base'
6
+
7
+ module Avm
8
+ module Tools
9
+ module Self
10
+ ::EacRubyUtils.require_sub(__FILE__)
11
+
12
+ class << self
13
+ def application
14
+ @application ||= ::EacRubyBase0::Application.new(root.to_path)
15
+ end
16
+
17
+ def root
18
+ ::Pathname.new('../../..').expand_path(__dir__)
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Tools
5
+ VERSION = '0.163.0'
6
+ end
7
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils'
4
+ EacRubyUtils::RootModuleSetup.perform __FILE__
5
+
6
+ require 'avm'
7
+ require 'eac_ruby_base0'
8
+
9
+ module Avm
10
+ module Tools
11
+ end
12
+ end
@@ -0,0 +1,71 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'tmpdir'
4
+ require 'fileutils'
5
+
6
+ class StubClock
7
+ attr_reader :current
8
+
9
+ def initialize(year, month, day)
10
+ @current = ::Time.new(year, month, day)
11
+ end
12
+
13
+ def tick
14
+ @current += 1.day
15
+ @current
16
+ end
17
+ end
18
+
19
+ RSpec.describe Avm::Tools::Runner::Files::Rotate do
20
+ let(:workdir) { Dir.mktmpdir }
21
+ let(:source_basename) { 'myfile.tar.gz' }
22
+ let(:source_path) { File.join(workdir, source_basename) }
23
+
24
+ before do
25
+ FileUtils.touch(source_path)
26
+ end
27
+
28
+ it { expect(File.exist?(source_path)).to be(true) }
29
+
30
+ context 'when run' do
31
+ let(:files_with_prefix) { Dir["#{workdir}/myfile_*.tar.gz"] }
32
+
33
+ before do
34
+ Avm::Tools::Runner.run(argv: ['files', 'rotate', source_path])
35
+ end
36
+
37
+ it { expect(File.exist?(source_path)).to be(false) }
38
+ it { expect(files_with_prefix.count).to eq(1) }
39
+ end
40
+
41
+ describe 'space limit' do
42
+ let(:tempdir) { Dir.mktmpdir }
43
+ let(:clock) { StubClock.new(2000, 1, 1) }
44
+
45
+ it 'limit space used by rotated files' do # rubocop:disable RSpec/NoExpectationExample
46
+ file1 = create_and_rotate_stub_file([], [])
47
+ file2 = create_and_rotate_stub_file([file1], [])
48
+ file3 = create_and_rotate_stub_file([file2], [file1])
49
+ create_and_rotate_stub_file([file3], [file1, file2])
50
+ end
51
+
52
+ def create_and_rotate_stub_file(expect_exist, expect_not_exist)
53
+ rotate_runner = described_class.create(argv: [create_stub_file, '--space-limit=32'])
54
+ rotate_runner.run
55
+ test_files(rotate_runner.rotate, expect_exist, expect_not_exist)
56
+ rotate_runner.rotate.target_path
57
+ end
58
+
59
+ def test_files(rotate, expect_exist, expect_not_exist)
60
+ (expect_exist + [rotate.target_path]).each { |path| expect(File).to exist(path) }
61
+ expect_not_exist.each { |path| expect(File).not_to exist(path) }
62
+ end
63
+
64
+ def create_stub_file
65
+ stub_path = File.join(tempdir, 'stub.ext')
66
+ File.write(stub_path, 'A' * 16)
67
+ FileUtils.touch(stub_path, mtime: clock.tick)
68
+ stub_path
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe Avm::Tools::Runner::LauncherStereotypes::List do
4
+ def avm_tools_runner_args_prefix
5
+ %w[launcher-stereotypes list]
6
+ end
7
+
8
+ it do
9
+ expect { avm_tools_runner_run }.not_to raise_error
10
+ end
11
+
12
+ it do
13
+ expect { avm_tools_runner_run('--deprecated') }.not_to raise_error
14
+ end
15
+ end
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'tmpdir'
4
+ require 'fileutils'
5
+
6
+ RSpec.describe Avm::Tools::Runner::Source::Issue::Complete, :git do
7
+ let(:remote_name) { 'origin' }
8
+ let(:issue_ref) { 'issue_123' }
9
+ let(:remote_repos) { stubbed_git_local_repo(true) }
10
+ let(:local_repos) { stubbed_git_local_repo }
11
+ let(:eac_local_repos) { Avm::Git::Launcher::Base.new(local_repos.root_path.to_path) }
12
+
13
+ context 'when branch is pushed' do
14
+ before do
15
+ eac_local_repos.assert_remote_url(remote_name, remote_repos.root_path.to_path)
16
+ local_repos.command('checkout', '-b', issue_ref).execute!
17
+ local_repos.file('myfile1.txt').touch
18
+ local_repos.file(Avm::Sources::Base::Configuration::CONFIGURATION_FILENAMES.first).touch
19
+ local_repos.command('add', '.').execute!
20
+ local_repos.command('commit', '-m', 'myfile1.txt').execute!
21
+ local_repos.command('push', 'origin', issue_ref).execute!
22
+ end
23
+
24
+ it 'remote repos has a issue branch' do
25
+ expect(eac_local_repos.remote_hashs(remote_name)).to include("refs/heads/#{issue_ref}")
26
+ end
27
+
28
+ it 'remote repos does not have a issue tag' do
29
+ expect(eac_local_repos.remote_hashs(remote_name)).not_to include("refs/tags/#{issue_ref}")
30
+ end
31
+
32
+ context 'when "git issue complete" is called' do
33
+ before do
34
+ Avm::Tools::Runner.run(argv: ['source', '-C', eac_local_repos] +
35
+ %w[issue complete --yes])
36
+ end
37
+
38
+ it 'remote repos does not have a issue branch' do
39
+ expect(eac_local_repos.remote_hashs(remote_name)).not_to include("refs/heads/#{issue_ref}")
40
+ end
41
+
42
+ it 'remote repos has a issue tag' do
43
+ expect(eac_local_repos.remote_hashs(remote_name)).to include("refs/tags/#{issue_ref}")
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe Avm::Tools::Runner do
4
+ let(:argv) { %w[--version] }
5
+ let(:instance) { described_class.create(argv: argv) }
6
+
7
+ it 'runs' do
8
+ expect { instance.run }.to(
9
+ output("#{Avm::Tools::VERSION}\n").to_stdout_from_any_process
10
+ )
11
+ end
12
+ end
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ EacRubyUtils::Rspec.default_setup.describe_rubocop