eac_tools 0.116.0 → 0.117.1

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 (211) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +47 -29
  3. data/eac_tools.gemspec +3 -3
  4. data/lib/eac_tools/version.rb +1 -1
  5. data/lib/eac_tools.rb +20 -23
  6. data/sub/avm/avm.gemspec +2 -2
  7. data/sub/avm/lib/avm/launcher/context/instance_discovery/source_wrapper.rb +4 -5
  8. data/sub/avm/lib/avm/sources/base/update.rb +41 -13
  9. data/sub/avm/lib/avm/sources/change.rb +22 -0
  10. data/sub/avm/lib/avm/version.rb +1 -1
  11. data/sub/avm/lib/avm.rb +7 -14
  12. data/sub/avm-eac_ruby_base1/.gitignore +2 -0
  13. data/sub/avm-eac_ruby_base1/.gitrepo +7 -0
  14. data/sub/avm-eac_ruby_base1/avm-eac_ruby_base1.gemspec +25 -0
  15. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/gemfile/add_or_replace_gem_line.rb +54 -0
  16. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/gemfile/dependency.rb +17 -0
  17. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/gemfile.rb +32 -0
  18. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/depends_on.rb +22 -0
  19. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/gem_conflict.rb +41 -0
  20. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/in_gemfile.rb +14 -0
  21. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/line_buffer.rb +73 -0
  22. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/line_factory.rb +26 -0
  23. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/line_parser_base.rb +17 -0
  24. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/ruby_requirement.rb +13 -0
  25. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/version_requirement.rb +23 -0
  26. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser.rb +21 -0
  27. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/file_formats/base/file_resource_name.rb +44 -0
  28. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/file_formats/base.rb +19 -0
  29. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/instances/mixin.rb +24 -0
  30. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/launcher/gem/build.rb +120 -0
  31. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/launcher/gem/specification.rb +61 -0
  32. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/launcher_stereotypes/base/local_project_mixin.rb +24 -0
  33. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/launcher_stereotypes/base/publish/internal_check.rb +70 -0
  34. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/launcher_stereotypes/base/publish/local_gem.rb +31 -0
  35. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/launcher_stereotypes/base/publish/remote_gem.rb +45 -0
  36. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/launcher_stereotypes/base/publish.rb +32 -0
  37. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/launcher_stereotypes/base.rb +32 -0
  38. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/preferred_version_requirements.rb +40 -0
  39. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rspec/setup.rb +13 -0
  40. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rspec/source_generator.rb +20 -0
  41. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubocop/configured.rb +29 -0
  42. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubocop/envvar.rb +15 -0
  43. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubocop/gemfile.rb +39 -0
  44. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubocop.rb +54 -0
  45. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubygems/gem_search_parser.rb +34 -0
  46. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubygems/gemspec/add_or_replace_gem_line.rb +69 -0
  47. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubygems/gemspec/dependency.rb +28 -0
  48. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubygems/gemspec.rb +57 -0
  49. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubygems/providers/base.rb +46 -0
  50. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubygems/providers/nexus.rb +29 -0
  51. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubygems/providers/rubygems_org.rb +37 -0
  52. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubygems/remote.rb +31 -0
  53. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubygems/version_file.rb +43 -0
  54. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/runners/base/lib_rename.rb +74 -0
  55. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/runners/base/rubocop.rb +27 -0
  56. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/runners/base.rb +14 -0
  57. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/runners.rb +8 -0
  58. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/source_generators/base/dependencies.rb +59 -0
  59. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/source_generators/base/gemfile_lock.rb +23 -0
  60. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/source_generators/base/gemspec.rb +81 -0
  61. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/source_generators/base/options.rb +32 -0
  62. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/source_generators/base/root_module.rb +46 -0
  63. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/source_generators/base/version_builder.rb +58 -0
  64. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/source_generators/base.rb +48 -0
  65. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/base/bundle_command.rb +35 -0
  66. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/base/bundler.rb +62 -0
  67. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/base/gem_provider.rb +46 -0
  68. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/base/rake.rb +39 -0
  69. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/base/rubocop.rb +23 -0
  70. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/base/rubocop_command.rb +70 -0
  71. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/base/rubygems.rb +50 -0
  72. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/base/update.rb +30 -0
  73. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/base/version.rb +30 -0
  74. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/base/version_bump.rb +16 -0
  75. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/base.rb +55 -0
  76. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/bundle_update.rb +21 -0
  77. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/gemfile_local/sibling.rb +51 -0
  78. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/gemfile_local.rb +65 -0
  79. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/namespace_replacer.rb +66 -0
  80. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/runners/bundle.rb +26 -0
  81. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/runners/bundler/gemfile_local.rb +55 -0
  82. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/runners/bundler/gemfile_lock/git.rb +58 -0
  83. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/runners/bundler/gemfile_lock.rb +87 -0
  84. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/runners/bundler/incompatible.rb +73 -0
  85. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/runners/bundler.rb +16 -0
  86. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/tests/base.rb +57 -0
  87. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/tests/minitest.rb +27 -0
  88. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/tests/multiple/decorated_gem.rb +50 -0
  89. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/tests/multiple/result.rb +29 -0
  90. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/tests/multiple.rb +85 -0
  91. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/tests/rspec.rb +23 -0
  92. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/update/changes/bundle_update.rb +28 -0
  93. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/update/changes/update_requirements.rb +55 -0
  94. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/update/sub_update.rb +57 -0
  95. data/sub/{avm-eac_generic_base0/lib/avm/eac_generic_base0 → avm-eac_ruby_base1/lib/avm/eac_ruby_base1}/version.rb +2 -2
  96. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1.rb +10 -0
  97. data/sub/avm-eac_ruby_base1/locale/en.yml +19 -0
  98. data/sub/avm-eac_ruby_base1/locale/pt-BR.yml +19 -0
  99. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/bundler/incompatible_parser_spec.rb +5 -0
  100. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/bundler/incompatible_parser_spec_files/1.source.out +192 -0
  101. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/bundler/incompatible_parser_spec_files/1.target.yaml +300 -0
  102. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/bundler/incompatible_parser_spec_files/2.source.out +245 -0
  103. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/bundler/incompatible_parser_spec_files/2.target.yaml +355 -0
  104. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/bundler/incompatible_parser_spec_files/3.source.out +0 -0
  105. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/bundler/incompatible_parser_spec_files/3.target.yaml +305 -0
  106. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/file_formats/base_spec.rb +13 -0
  107. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/file_formats/base_spec_files/Gemfile.source +6 -0
  108. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/file_formats/base_spec_files/Gemfile.target +3 -0
  109. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/file_formats/base_spec_files/ruby_code.rb.source +6 -0
  110. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/file_formats/base_spec_files/ruby_code.rb.target +5 -0
  111. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/launcher/gem/build_spec.rb +43 -0
  112. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/launcher/gem/specification_spec.rb +57 -0
  113. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/launcher_stereotypes/base/publish_spec.rb +25 -0
  114. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/launcher_stereotypes/base_spec.rb +21 -0
  115. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/preferred_version_requirements_spec.rb +21 -0
  116. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/rubygems/gem_search_parser_spec.rb +5 -0
  117. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/rubygems/gem_search_parser_spec_files/empty.source +1 -0
  118. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/rubygems/gem_search_parser_spec_files/empty.target.yaml +1 -0
  119. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/rubygems/gem_search_parser_spec_files/many_versions.source +1 -0
  120. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/rubygems/gem_search_parser_spec_files/many_versions.target.yaml +123 -0
  121. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/rubygems/gemspec_spec.rb +35 -0
  122. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/rubygems/gemspec_spec_files/changes1.source.yaml +5 -0
  123. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/rubygems/gemspec_spec_files/changes1.target.txt +15 -0
  124. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/rubygems/gemspec_spec_files/the_gem.gemspec +15 -0
  125. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/rubygems/version_file_spec.rb +13 -0
  126. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/rubygems/version_file_spec_files/a_version_file.rb +7 -0
  127. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/runners/base/rubocop_spec.rb +33 -0
  128. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/runners/base/rubocop_spec_files/dir1/.avm.yml +4 -0
  129. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/runners/base/rubocop_spec_files/dir1/dir3/Gemfile +5 -0
  130. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/runners/base/rubocop_spec_files/dir1/dir3/Gemfile.lock +27 -0
  131. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/runners/base/rubocop_spec_files/dir2/empty.rb +1 -0
  132. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/runners/base/rubocop_spec_files/dir4/.avm.yml +4 -0
  133. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/runners/base/rubocop_spec_files/dir4/false_command.rb +4 -0
  134. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec.rb +16 -0
  135. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/dashed-mygem/.rspec +1 -0
  136. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/dashed-mygem/.rubocop.yml +3 -0
  137. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/dashed-mygem/Gemfile +8 -0
  138. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/dashed-mygem/Gemfile.lock +1 -0
  139. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/dashed-mygem/_gitignore +2 -0
  140. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/dashed-mygem/dashed-mygem.gemspec +20 -0
  141. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/dashed-mygem/lib/dashed/mygem/version.rb +7 -0
  142. data/sub/{avm-eac_generic_base0/lib/avm/eac_generic_base0.rb → avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/dashed-mygem/lib/dashed/mygem.rb} +2 -4
  143. data/sub/{avm-eac_generic_base0 → avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/dashed-mygem}/spec/spec_helper.rb +1 -1
  144. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/mygem/.rspec +1 -0
  145. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/mygem/.rubocop.yml +3 -0
  146. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/mygem/Gemfile +8 -0
  147. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/mygem/Gemfile.lock +1 -0
  148. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/mygem/_gitignore +2 -0
  149. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/mygem/lib/mygem/version.rb +5 -0
  150. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/mygem/lib/mygem.rb +7 -0
  151. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/mygem/mygem.gemspec +20 -0
  152. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/mygem/spec/meta/rubocop_spec.rb +3 -0
  153. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/mygem/spec/spec_helper.rb +5 -0
  154. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/sources/base/bundler_spec.rb +28 -0
  155. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/sources/base/bundler_spec_files/mygem/Gemfile +5 -0
  156. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/sources/base/bundler_spec_files/mygem/Gemfile.lock +19 -0
  157. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/sources/base/bundler_spec_files/mygem/Rakefile +14 -0
  158. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/sources/base/bundler_spec_files/mygem/exe/myrunner +5 -0
  159. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/sources/base/bundler_spec_files/mygem/lib/mygem/version.rb +5 -0
  160. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/sources/base/bundler_spec_files/mygem/lib/mygem.rb +7 -0
  161. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/sources/base/bundler_spec_files/mygem/mygem.gemspec +17 -0
  162. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/sources/base_spec.rb +13 -0
  163. data/sub/avm-eac_ruby_base1/spec/meta/rubocop_spec.rb +3 -0
  164. data/sub/avm-eac_ruby_base1/spec/spec_helper.rb +5 -0
  165. data/sub/avm-eac_ruby_base1/template/avm/eac_ruby_base1/source_generators/base/gemspec.template +19 -0
  166. data/sub/avm-eac_ruby_base1/template/avm/eac_ruby_base1/source_generators/base/root_lib.template +8 -0
  167. data/sub/avm-eac_ruby_base1/template/avm/eac_ruby_base1/source_generators/base/static/.gitignore +2 -0
  168. data/sub/avm-eac_ruby_base1/template/avm/eac_ruby_base1/source_generators/base/static/.rspec +1 -0
  169. data/sub/avm-eac_ruby_base1/template/avm/eac_ruby_base1/source_generators/base/static/.rubocop.yml +3 -0
  170. data/sub/avm-eac_ruby_base1/template/avm/eac_ruby_base1/source_generators/base/static/Gemfile +8 -0
  171. data/sub/avm-eac_ruby_base1/template/avm/eac_ruby_base1/source_generators/base/static/spec/meta/rubocop_spec.rb +3 -0
  172. data/sub/avm-eac_ruby_base1/template/avm/eac_ruby_base1/source_generators/base/static/spec/spec_helper.rb.template +5 -0
  173. data/sub/avm-eac_ruby_base1/template/avm/eac_ruby_base1/source_generators/base/version.template +5 -0
  174. data/sub/eac_ruby_base1/.gitignore +2 -0
  175. data/sub/eac_ruby_base1/.rspec +1 -0
  176. data/sub/eac_ruby_base1/.rubocop.yml +3 -0
  177. data/sub/eac_ruby_base1/Gemfile +8 -0
  178. data/sub/eac_ruby_base1/eac_ruby_base1.gemspec +21 -0
  179. data/sub/eac_ruby_base1/lib/eac_ruby_base1/root_module_setup/ignore.rb +57 -0
  180. data/sub/eac_ruby_base1/lib/eac_ruby_base1/root_module_setup/patches.rb +19 -0
  181. data/sub/eac_ruby_base1/lib/eac_ruby_base1/root_module_setup/paths.rb +38 -0
  182. data/sub/eac_ruby_base1/lib/eac_ruby_base1/root_module_setup/require_patch.rb +44 -0
  183. data/sub/eac_ruby_base1/lib/eac_ruby_base1/root_module_setup/requires.rb +25 -0
  184. data/sub/eac_ruby_base1/lib/eac_ruby_base1/root_module_setup/zeitwerk.rb +35 -0
  185. data/sub/eac_ruby_base1/lib/eac_ruby_base1/root_module_setup.rb +68 -0
  186. data/sub/eac_ruby_base1/lib/eac_ruby_base1/version.rb +5 -0
  187. data/sub/eac_ruby_base1/lib/eac_ruby_base1.rb +5 -0
  188. data/sub/eac_ruby_base1/spec/lib/eac_ruby_base1/root_module_setup_spec.rb +43 -0
  189. data/sub/eac_ruby_base1/spec/meta/rubocop_spec.rb +3 -0
  190. data/sub/eac_ruby_base1/spec/spec_helper.rb +5 -0
  191. metadata +201 -34
  192. data/sub/avm-eac_generic_base0/.gitignore +0 -2
  193. data/sub/avm-eac_generic_base0/.gitrepo +0 -7
  194. data/sub/avm-eac_generic_base0/avm-eac_generic_base0.gemspec +0 -21
  195. data/sub/avm-eac_generic_base0/lib/avm/eac_generic_base0/file_formats/base/apply.rb +0 -29
  196. data/sub/avm-eac_generic_base0/lib/avm/eac_generic_base0/file_formats/base/file_resource_name_helper.rb +0 -21
  197. data/sub/avm-eac_generic_base0/lib/avm/eac_generic_base0/file_formats/base/match.rb +0 -65
  198. data/sub/avm-eac_generic_base0/lib/avm/eac_generic_base0/file_formats/base.rb +0 -38
  199. data/sub/avm-eac_generic_base0/lib/avm/eac_generic_base0/instances/base.rb +0 -10
  200. data/sub/avm-eac_generic_base0/lib/avm/eac_generic_base0/sources/base.rb +0 -40
  201. data/sub/avm-eac_generic_base0/lib/avm/eac_generic_base0/sources/docker/runner.rb +0 -59
  202. data/sub/avm-eac_generic_base0/locale/en.yml +0 -6
  203. data/sub/avm-eac_generic_base0/locale/pt-BR.yml +0 -6
  204. data/sub/avm-eac_generic_base0/spec/lib/avm/eac_generic_base0/file_formats/base_spec.rb +0 -5
  205. data/sub/avm-eac_generic_base0/spec/lib/avm/eac_generic_base0/file_formats/base_spec_files/plain_text.source +0 -3
  206. data/sub/avm-eac_generic_base0/spec/lib/avm/eac_generic_base0/file_formats/base_spec_files/plain_text.target +0 -3
  207. data/sub/avm-eac_generic_base0/spec/lib/avm/eac_generic_base0/sources/base_spec.rb +0 -5
  208. /data/sub/{avm-eac_generic_base0 → avm-eac_ruby_base1}/.rspec +0 -0
  209. /data/sub/{avm-eac_generic_base0 → avm-eac_ruby_base1}/.rubocop.yml +0 -0
  210. /data/sub/{avm-eac_generic_base0 → avm-eac_ruby_base1}/Gemfile +0 -0
  211. /data/sub/{avm-eac_generic_base0/spec → avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/dashed-mygem/spec/meta}/rubocop_spec.rb +0 -0
@@ -0,0 +1,70 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ module Sources
6
+ class Base < ::Avm::EacGenericBase0::Sources::Base
7
+ class RubocopCommand
8
+ acts_as_immutable
9
+ immutable_accessor :ignore_parent_exclusion, :autocorrect, :autocorrect_all,
10
+ type: :boolean
11
+ immutable_accessor :file, type: :array
12
+ common_constructor :source
13
+ delegate :execute, :execute!, :system, :system!, to: :bundle_command
14
+
15
+ # @return [Enumerable]
16
+ def immutable_constructor_args
17
+ [source]
18
+ end
19
+
20
+ # @return [Gemspec::Version]
21
+ def version
22
+ @version ||= ::Gem::Version.new(
23
+ source.bundle('exec', 'rubocop', '--version').execute!
24
+ )
25
+ end
26
+
27
+ private
28
+
29
+ # @return [String]
30
+ def autocorrect_option
31
+ '--auto-correct'
32
+ end
33
+
34
+ # @return [String]
35
+ def autocorrect_all_option
36
+ version < '1.30' ? '--auto-correct-all' : '--autocorrect-all'
37
+ end
38
+
39
+ # @return [String]
40
+ def ignore_parent_exclusion_option
41
+ '--ignore-parent-exclusion'
42
+ end
43
+
44
+ # @return [Avm::EacRubyBase1::Sources::Base::BundleCommand]
45
+ def bundle_command
46
+ source.bundle(*bundle_command_args)
47
+ end
48
+
49
+ # @return [Array<String>]
50
+ def bundle_command_args
51
+ %w[exec rubocop] + rubocop_command_args
52
+ end
53
+
54
+ # @return [Array<String>]
55
+ def rubocop_command_args
56
+ r = []
57
+ r += ['--config', source.rubocop_config_path] if source.rubocop_config_path.file?
58
+ r << ignore_parent_exclusion_option if ignore_parent_exclusion?
59
+ if autocorrect_all?
60
+ r << autocorrect_all_option
61
+ elsif autocorrect?
62
+ r << autocorrect_option
63
+ end
64
+ r + files
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ module Sources
6
+ class Base < ::Avm::EacGenericBase0::Sources::Base
7
+ module Rubygems
8
+ GEMSPEC_EXTNAME = '.gemspec'
9
+
10
+ def gem_name
11
+ gem_name_by_gemspec || gem_name_by_path
12
+ end
13
+
14
+ def gem_name_by_gemspec
15
+ gemspec_path.if_present { |v| v.basename(GEMSPEC_EXTNAME).to_path }
16
+ end
17
+
18
+ def gem_name_by_path
19
+ fullname = path.basename.to_s
20
+ /\A(.+)(?:-\d+(?:\.\d+)*)\z/.if_match(fullname, false) { |m| m[1] }.if_present(fullname)
21
+ end
22
+
23
+ def gem_namespace_parts
24
+ gem_name.split('-')
25
+ end
26
+
27
+ # @return [Gem::Specification]
28
+ def gemspec
29
+ ::Gem::Specification.load(gemspec_path.to_path)
30
+ end
31
+
32
+ # @return [Pathname]
33
+ def gemspec_path
34
+ path.glob("*#{GEMSPEC_EXTNAME}").first
35
+ end
36
+
37
+ # @return [Pathname]
38
+ def root_module_directory
39
+ path.join('lib', *gem_namespace_parts)
40
+ end
41
+
42
+ # @return [Pathname]
43
+ def root_module_file
44
+ root_module_directory.dirname.join("#{root_module_directory.basename}.rb")
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ module Sources
6
+ class Base < ::Avm::EacGenericBase0::Sources::Base
7
+ module Update
8
+ # @return [void]
9
+ def on_sub_updated
10
+ update_self_changes_before_subs
11
+ end
12
+
13
+ # @param changes [Enumerable<Avm::Sources::Change>]
14
+ def update_self_changes_after_subs
15
+ super + [
16
+ ::Avm::EacRubyBase1::Sources::Update::Changes::UpdateRequirements.new(self)
17
+ ]
18
+ end
19
+
20
+ # @param changes [Enumerable<Avm::Sources::Change>]
21
+ def update_self_changes_before_subs
22
+ super + [
23
+ ::Avm::EacRubyBase1::Sources::Update::Changes::BundleUpdate.new(self)
24
+ ]
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ module Sources
6
+ class Base < ::Avm::EacGenericBase0::Sources::Base
7
+ module Version
8
+ # @return [Avm::VersionNumber]
9
+ def version
10
+ version_file.value.if_present { |v| ::Avm::VersionNumber.new(v) }
11
+ end
12
+
13
+ def version=(value)
14
+ version_file.value = value
15
+ end
16
+
17
+ # @return [Avm::EacRubyBase1::Rubygems::VersionFile]
18
+ def version_file
19
+ ::Avm::EacRubyBase1::Rubygems::VersionFile.new(version_file_path)
20
+ end
21
+
22
+ # @return [Pathname]
23
+ def version_file_path
24
+ root_module_directory.join('version.rb')
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ module Sources
6
+ class Base < ::Avm::EacGenericBase0::Sources::Base
7
+ module VersionBump
8
+ def version_bump_do_changes(target_version)
9
+ self.version = target_version
10
+ bundle('install').chdir_root.execute!
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ module Sources
6
+ class Base < ::Avm::EacGenericBase0::Sources::Base
7
+ RSPEC_TEST_COMMAND = 'rspec'
8
+
9
+ require_sub __FILE__, include_modules: :prepend
10
+
11
+ # @return [Hash<String, EacRubyUtils::Envs::Command>]
12
+ def default_test_commands
13
+ {
14
+ RSPEC_TEST_COMMAND => rspec_test_command
15
+ }
16
+ end
17
+
18
+ # To-do: dismiss this method at Avm::EacRailsBase1::Instance and remove.
19
+ # @return [EacRubyUtils::Envs::BaseEnv]
20
+ def env
21
+ @env.presence || super
22
+ end
23
+
24
+ # To-do: dismiss this method at Avm::EacRailsBase1::Instance and remove.
25
+ # @return [Avm::EacRubyBase1::Sources::Base]
26
+ def env_set(env)
27
+ @env = env
28
+
29
+ self
30
+ end
31
+
32
+ # @return [Avm::EacRubyBase1::Source::Base]
33
+ def ruby_parent
34
+ a_parent = parent
35
+
36
+ loop do
37
+ raise 'No Ruby parent found' if a_parent.blank?
38
+ return a_parent if a_parent.is_a?(::Avm::EacRubyBase1::Sources::Base)
39
+
40
+ a_parent = a_parent.parent
41
+ end
42
+ end
43
+
44
+ # @return [EacRubyUtils::Envs::Command]
45
+ def rspec_test_command
46
+ bundle('exec', 'rspec', '--fail-fast').chdir_root
47
+ end
48
+
49
+ def valid?
50
+ gemfile_path.exist? || gemspec_path.present?
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ module Sources
6
+ class BundleUpdate
7
+ common_constructor :source
8
+ delegate :bundle, to: :source
9
+
10
+ def execute!
11
+ bundle('update').execute! + bundle('install').execute!
12
+ end
13
+
14
+ def system!
15
+ bundle('update').system!
16
+ bundle('install').system!
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ module Sources
6
+ class GemfileLocal
7
+ class Sibling
8
+ common_constructor :gemfile_local, :source
9
+ delegate :relative_path, to: :source
10
+
11
+ # @return [String]
12
+ def gemspec_relative_path
13
+ source.gemspec_path.relative_path_from(gemfile_local.source.path).to_path
14
+ end
15
+
16
+ # @return [String]
17
+ def root_relative_path
18
+ source.path.relative_path_from(gemfile_local.source.path).to_path
19
+ end
20
+
21
+ # @return [String]
22
+ def target_content
23
+ "gem '#{source.gem_name}', #{gem_options_content} if #{condition_content}\n"
24
+ end
25
+
26
+ protected
27
+
28
+ # @return [String]
29
+ def condition_content
30
+ "::File.file?(::File.expand_path('#{gemspec_relative_path}', __dir__))"
31
+ end
32
+
33
+ # @return [String]
34
+ def gem_option_path
35
+ ["::File.expand_path('", root_relative_path, "', __dir__)"].join
36
+ end
37
+
38
+ # @return [String]
39
+ def gem_option_require
40
+ 'false'
41
+ end
42
+
43
+ # @return [String]
44
+ def gem_options_content
45
+ %w[path require].map { |v| [v, send("gem_option_#{v}")].join(': ') }.join(', ')
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,65 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ module Sources
6
+ class GemfileLocal
7
+ enable_simple_cache
8
+ common_constructor :source
9
+
10
+ def dependency_sub?(sub)
11
+ sub.is_a?(::Avm::EacRubyBase1::Sources::Base) &&
12
+ sub.gem_name != source.gem_name &&
13
+ source.gemfile_lock_gem_version(sub.gem_name).present?
14
+ end
15
+
16
+ # @return [String]
17
+ def target_content
18
+ siblings.map(&:target_content).join
19
+ end
20
+
21
+ # @return [Pathname]
22
+ def target_path
23
+ source.path.join('Gemfile.local')
24
+ end
25
+
26
+ def on_unexisting_gemfile_local
27
+ return yield unless target_path.exist?
28
+
29
+ ::EacRubyUtils::Fs::Temp.on_file do |temp_file|
30
+ ::FileUtils.cp(target_path, temp_file)
31
+ begin
32
+ ::FileUtils.rm_f(target_path)
33
+ yield
34
+ ensure
35
+ ::FileUtils.cp(temp_file, target_path)
36
+ end
37
+ end
38
+ end
39
+
40
+ def run_bundle
41
+ on_unexisting_gemfile_local do
42
+ source.bundle.execute!
43
+ rescue ::RuntimeError
44
+ source.bundle('update').execute!
45
+ end
46
+ end
47
+
48
+ # @return [void]
49
+ def write_target_file
50
+ target_path.write(target_content)
51
+ end
52
+
53
+ private
54
+
55
+ def siblings_uncached
56
+ source.parent.if_present([]) do |v|
57
+ v.subs.select { |sub| dependency_sub?(sub) }.map do |sub|
58
+ ::Avm::EacRubyBase1::Sources::GemfileLocal::Sibling.new(self, sub)
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,66 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ module Sources
6
+ class NamespaceReplacer
7
+ TAB = ' '
8
+
9
+ common_constructor :from, :to
10
+
11
+ def concat_regex(regexes)
12
+ r = regexes.first
13
+ regexes[1..].each do |x|
14
+ r = ::Regexp.new(r.source + x.source)
15
+ end
16
+ r
17
+ end
18
+
19
+ def from_result
20
+ /\n#{from_open.source}(.+)#{from_close.source}/m
21
+ end
22
+
23
+ def from_open
24
+ concat_regex(from.split('::')
25
+ .map { |v| / *(?:class|module) +#{::Regexp.quote(v)} *\n/m })
26
+ end
27
+
28
+ def from_close
29
+ concat_regex(from.split('::').count.times.map { / *end *\n/m })
30
+ end
31
+
32
+ def to_result
33
+ "\n\n#{to_open}\\1#{to_close}"
34
+ end
35
+
36
+ # @return [String]
37
+ def to_open
38
+ s = ''
39
+ to.split('::').each_with_index do |part, index|
40
+ s += tab(index) + "module #{part}\n"
41
+ end
42
+ s
43
+ end
44
+
45
+ # @return [String]
46
+ def to_close
47
+ parts = to.split('::')
48
+ s = ''
49
+ parts.each_with_index do |_part, index|
50
+ tabc = (parts.count - 1 - index)
51
+ s += "#{tab(tabc)}end\n"
52
+ end
53
+ s
54
+ end
55
+
56
+ protected
57
+
58
+ # @param count [Integer]
59
+ # @return [String]
60
+ def tab(count)
61
+ TAB * count
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ module Sources
6
+ module Runners
7
+ class Bundle
8
+ runner_with :help do
9
+ desc 'Runs "bundle ...".'
10
+ pos_arg :'bundle-args', repeat: true, optional: true
11
+ end
12
+
13
+ def run
14
+ bundle_command.system!
15
+ end
16
+
17
+ def bundle_command
18
+ runner_context.call(:source).bundle(*bundle_args)
19
+ end
20
+
21
+ delegate :bundle_args, to: :parsed
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ module Sources
6
+ module Runners
7
+ class Bundler
8
+ class GemfileLocal
9
+ runner_with :help do
10
+ bool_opt '-w', '--write', 'Write the Gemfile.local file.'
11
+ end
12
+ delegate :siblings, to: :builder
13
+
14
+ def run
15
+ start_banner
16
+ builder.run_bundle
17
+ siblings_banner
18
+ write_gemfile_local
19
+ end
20
+
21
+ private
22
+
23
+ def start_banner
24
+ runner_context.call(:source_banner)
25
+ infov 'Parent', the_source.parent
26
+ end
27
+
28
+ def siblings_banner
29
+ infov 'Siblings', siblings.count
30
+ siblings.each do |sibling|
31
+ infov ' * ', sibling.relative_path
32
+ end
33
+ end
34
+
35
+ def write_gemfile_local
36
+ return unless parsed.write?
37
+
38
+ infom "Writing #{builder.target_path}..."
39
+ builder.write_target_file
40
+ end
41
+
42
+ def the_source
43
+ runner_context.call(:source)
44
+ end
45
+
46
+ # @return [Avm::EacRubyBase1::Sources::GemfileLocal]
47
+ def builder_uncached
48
+ ::Avm::EacRubyBase1::Sources::GemfileLocal.new(the_source)
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,58 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ module Sources
6
+ module Runners
7
+ class Bundler
8
+ class GemfileLock
9
+ module Git
10
+ private
11
+
12
+ def git_continue
13
+ infom "Adding \"#{gemfile_lock}\"..."
14
+ git_repo.command('add', gemfile_lock).execute!
15
+ if rebase_conflict?
16
+ git_continue_run('rebase')
17
+ elsif cherry_conflict?
18
+ git_continue_run('cherry-pick')
19
+ else
20
+ raise 'Unknown how to continue'
21
+ end
22
+ end
23
+
24
+ def git_continue_run(command)
25
+ infom "\"#{command}\" --continue..."
26
+ cmd = git_repo.command(command, '--continue')
27
+ .envvar('GIT_EDITOR', 'true')
28
+ return unless !cmd.system && !conflict?
29
+
30
+ fatal_error "\"#{cmd}\" failed and there is no conflict"
31
+ end
32
+
33
+ def git_repo
34
+ instance.scm.git_repo
35
+ end
36
+
37
+ def git_reset_checkout
38
+ git_reset_gemfile_lock
39
+ git_checkout_gemfile_lock
40
+ end
41
+
42
+ def git_checkout_gemfile_lock
43
+ infom 'Checkouting...'
44
+ git_repo.command('checkout', '--', gemfile_lock).system!
45
+ end
46
+
47
+ def git_reset_gemfile_lock
48
+ infom 'Reseting...'
49
+ git_repo.command('reset', gemfile_lock).system! if
50
+ ::File.exist?(gemfile_lock)
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,87 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ module Sources
6
+ module Runners
7
+ class Bundler
8
+ class GemfileLock
9
+ require_sub __FILE__, include_modules: true
10
+ runner_with :help do
11
+ desc 'Manipulage a "Gemfile.lock" file.'
12
+ bool_opt '-c', '--continue', 'Continue Git rebase/cherry-pick.'
13
+ bool_opt '-i', '--install', 'Run "bundle install".'
14
+ bool_opt '-u', '--update', 'Run "bundle update".'
15
+ bool_opt '-r', '--recursive', 'Run until Git rebase/cherry-pick is finished.'
16
+ bool_opt '-a', '--all', 'Same as "-cirud".'
17
+ bool_opt '-d', '--delete', 'Delete Gemfile.lock'
18
+ end
19
+
20
+ def run
21
+ loop do
22
+ git_reset_checkout
23
+ delete_gemfile_lock
24
+ bundle_update
25
+ bundle_install
26
+ git_continue
27
+ break if complete?
28
+ end
29
+ end
30
+
31
+ private
32
+
33
+ def complete?
34
+ !option_or_all?(:recursive) || !conflict?
35
+ end
36
+
37
+ def delete_gemfile_lock
38
+ ::FileUtils.rm_f(gemfile_lock)
39
+ end
40
+
41
+ def rebasing?
42
+ git_repo.root_path.join('.git', 'rebase-merge').exist?
43
+ end
44
+
45
+ def bundle_install
46
+ infom '"bundle install"...'
47
+ bundle_run('install')
48
+ end
49
+
50
+ def bundle_update
51
+ infom '"bundle update"...'
52
+ bundle_run('update')
53
+ end
54
+
55
+ def gemfile_lock
56
+ 'Gemfile.lock'
57
+ end
58
+
59
+ def bundle_run(*)
60
+ instance.bundle(*).system!
61
+ end
62
+
63
+ def conflict?
64
+ rebase_conflict? || cherry_conflict?
65
+ end
66
+
67
+ def rebase_conflict?
68
+ git_repo.root_path.join('.git', 'REBASE_HEAD').exist?
69
+ end
70
+
71
+ def cherry_conflict?
72
+ git_repo.root_path.join('.git', 'CHERRY_PICK_HEAD').exist?
73
+ end
74
+
75
+ def option_or_all?(option)
76
+ parsed[option] || parsed.all?
77
+ end
78
+
79
+ def instance
80
+ runner_context.call(:subject)
81
+ end
82
+ end
83
+ end
84
+ end
85
+ end
86
+ end
87
+ end