eac_tools 0.99.1 → 0.100.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 (294) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +55 -27
  3. data/lib/eac_tools/version.rb +1 -1
  4. data/lib/eac_tools.rb +17 -0
  5. data/sub/avm/avm.gemspec +3 -3
  6. data/sub/avm/lib/avm/rspec/setup.rb +1 -0
  7. data/sub/avm/lib/avm/version.rb +1 -1
  8. data/sub/avm-eac_ruby_base1/Gemfile +8 -0
  9. data/sub/avm-eac_ruby_base1/avm-eac_ruby_base1.gemspec +22 -0
  10. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/gemfile/add_or_replace_gem_line.rb +54 -0
  11. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/gemfile/dependency.rb +17 -0
  12. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/gemfile.rb +32 -0
  13. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/depends_on.rb +22 -0
  14. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/gem_conflict.rb +41 -0
  15. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/in_gemfile.rb +14 -0
  16. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/line_buffer.rb +73 -0
  17. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/line_factory.rb +26 -0
  18. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/line_parser_base.rb +17 -0
  19. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/ruby_requirement.rb +13 -0
  20. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser/version_requirement.rb +23 -0
  21. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/bundler/incompatible_parser.rb +23 -0
  22. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/file_formats/base/file_resource_name.rb +44 -0
  23. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/file_formats/base.rb +21 -0
  24. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/instances/mixin.rb +17 -0
  25. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/launcher/gem/build.rb +120 -0
  26. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/launcher/gem/specification.rb +61 -0
  27. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/launcher_stereotypes/base/local_project_mixin.rb +24 -0
  28. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/launcher_stereotypes/base/publish.rb +122 -0
  29. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/launcher_stereotypes/base.rb +33 -0
  30. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/preferred_version_requirements.rb +40 -0
  31. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rspec/setup.rb +15 -0
  32. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rspec/source_generator.rb +20 -0
  33. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rspec.rb +9 -0
  34. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubocop/configured.rb +29 -0
  35. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubocop/envvar.rb +15 -0
  36. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubocop/gemfile.rb +39 -0
  37. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubocop.rb +52 -0
  38. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubygems/gemspec/add_or_replace_gem_line.rb +69 -0
  39. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubygems/gemspec/dependency.rb +23 -0
  40. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubygems/gemspec.rb +57 -0
  41. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubygems/remote.rb +33 -0
  42. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubygems/version_file.rb +43 -0
  43. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubygems.rb +9 -0
  44. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/runners/base/lib_rename.rb +74 -0
  45. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/runners/base/rubocop.rb +27 -0
  46. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/runners/base.rb +16 -0
  47. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/runners.rb +9 -0
  48. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/source_generators/base/dependencies.rb +59 -0
  49. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/source_generators/base/gemfile_lock.rb +23 -0
  50. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/source_generators/base/options.rb +32 -0
  51. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/source_generators/base/root_module.rb +35 -0
  52. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/source_generators/base/version_builder.rb +58 -0
  53. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/source_generators/base.rb +83 -0
  54. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/base/bundle_command.rb +35 -0
  55. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/base/bundler.rb +64 -0
  56. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/base/rake.rb +39 -0
  57. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/base/rubocop.rb +23 -0
  58. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/base/rubocop_command.rb +70 -0
  59. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/base/rubygems.rb +40 -0
  60. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/base/update.rb +21 -0
  61. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/base/version.rb +29 -0
  62. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/base/version_bump.rb +16 -0
  63. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/base.rb +58 -0
  64. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/bundle_update.rb +21 -0
  65. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/gemfile_local/sibling.rb +51 -0
  66. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/gemfile_local.rb +67 -0
  67. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/namespace_replacer.rb +55 -0
  68. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/runners/bundle.rb +26 -0
  69. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/runners/bundler/gemfile_local.rb +57 -0
  70. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/runners/bundler/gemfile_lock/git.rb +58 -0
  71. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/runners/bundler/gemfile_lock.rb +87 -0
  72. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/runners/bundler/incompatible.rb +73 -0
  73. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/runners/bundler.rb +17 -0
  74. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/runners/update_dependencies_requirements.rb +67 -0
  75. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/runners.rb +11 -0
  76. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/tests/base.rb +55 -0
  77. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/tests/minitest.rb +27 -0
  78. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/tests/multiple/decorated_gem.rb +50 -0
  79. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/tests/multiple/result.rb +29 -0
  80. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/tests/multiple.rb +86 -0
  81. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/tests/rspec.rb +23 -0
  82. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/update/sub_update.rb +57 -0
  83. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/update_dependency_requirements.rb +63 -0
  84. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/version.rb +7 -0
  85. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1.rb +14 -0
  86. data/sub/avm-eac_ruby_base1/locale/en.yml +9 -0
  87. data/sub/avm-eac_ruby_base1/locale/pt-BR.yml +9 -0
  88. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/bundler/incompatible_parser_spec.rb +5 -0
  89. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/bundler/incompatible_parser_spec_files/1.source.out +192 -0
  90. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/bundler/incompatible_parser_spec_files/1.target.yaml +300 -0
  91. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/bundler/incompatible_parser_spec_files/2.source.out +245 -0
  92. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/bundler/incompatible_parser_spec_files/2.target.yaml +355 -0
  93. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/bundler/incompatible_parser_spec_files/3.source.out +0 -0
  94. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/bundler/incompatible_parser_spec_files/3.target.yaml +305 -0
  95. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/file_formats/base_spec.rb +13 -0
  96. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/file_formats/base_spec_files/Gemfile.source +6 -0
  97. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/file_formats/base_spec_files/Gemfile.target +3 -0
  98. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/file_formats/base_spec_files/ruby_code.rb.source +6 -0
  99. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/file_formats/base_spec_files/ruby_code.rb.target +5 -0
  100. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/launcher/gem/build_spec.rb +43 -0
  101. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/launcher/gem/specification_spec.rb +57 -0
  102. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/launcher_stereotypes/base/publish_spec.rb +25 -0
  103. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/launcher_stereotypes/base_spec.rb +21 -0
  104. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/preferred_version_requirements_spec.rb +21 -0
  105. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/rubygems/gemspec_spec.rb +35 -0
  106. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/rubygems/gemspec_spec_files/changes1.source.yaml +5 -0
  107. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/rubygems/gemspec_spec_files/changes1.target.txt +15 -0
  108. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/rubygems/gemspec_spec_files/the_gem.gemspec +15 -0
  109. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/rubygems/version_file_spec.rb +13 -0
  110. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/rubygems/version_file_spec_files/a_version_file.rb +7 -0
  111. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/runners/base/rubocop_spec.rb +33 -0
  112. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/runners/base/rubocop_spec_files/dir1/dir3/Gemfile +5 -0
  113. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/runners/base/rubocop_spec_files/dir1/dir3/Gemfile.lock +27 -0
  114. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/runners/base/rubocop_spec_files/dir2/empty.rb +1 -0
  115. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/runners/base/rubocop_spec_files/dir4/false_command.rb +4 -0
  116. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec.rb +16 -0
  117. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/dashed-mygem/Gemfile +8 -0
  118. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/dashed-mygem/Gemfile.lock +1 -0
  119. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/dashed-mygem/_gitignore +2 -0
  120. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/dashed-mygem/dashed-mygem.gemspec +19 -0
  121. 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
  122. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/dashed-mygem/lib/dashed/mygem.rb +9 -0
  123. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/dashed-mygem/spec/rubocop_spec.rb +3 -0
  124. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/dashed-mygem/spec/spec_helper.rb +5 -0
  125. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/mygem/Gemfile +8 -0
  126. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/mygem/Gemfile.lock +1 -0
  127. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/mygem/_gitignore +2 -0
  128. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/mygem/lib/mygem/version.rb +5 -0
  129. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/mygem/lib/mygem.rb +7 -0
  130. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/mygem/mygem.gemspec +19 -0
  131. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/mygem/spec/rubocop_spec.rb +3 -0
  132. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/mygem/spec/spec_helper.rb +5 -0
  133. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/sources/base/bundler_spec.rb +28 -0
  134. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/sources/base/bundler_spec_files/mygem/Gemfile +5 -0
  135. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/sources/base/bundler_spec_files/mygem/Gemfile.lock +19 -0
  136. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/sources/base/bundler_spec_files/mygem/Rakefile +14 -0
  137. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/sources/base/bundler_spec_files/mygem/exe/myrunner +5 -0
  138. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/sources/base/bundler_spec_files/mygem/lib/mygem/version.rb +5 -0
  139. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/sources/base/bundler_spec_files/mygem/lib/mygem.rb +7 -0
  140. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/sources/base/bundler_spec_files/mygem/mygem.gemspec +17 -0
  141. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/sources/base_spec.rb +13 -0
  142. data/sub/avm-eac_ruby_base1/spec/rubocop_spec.rb +3 -0
  143. data/sub/avm-eac_ruby_base1/spec/spec_helper.rb +5 -0
  144. data/sub/avm-eac_ruby_base1/template/avm/eac_ruby_base1/source_generators/base/gemspec.template +19 -0
  145. data/sub/avm-eac_ruby_base1/template/avm/eac_ruby_base1/source_generators/base/root_lib.template +7 -0
  146. data/sub/avm-eac_ruby_base1/template/avm/eac_ruby_base1/source_generators/base/static/Gemfile +8 -0
  147. data/sub/avm-eac_ruby_base1/template/avm/eac_ruby_base1/source_generators/base/static/spec/rubocop_spec.rb +3 -0
  148. data/sub/avm-eac_ruby_base1/template/avm/eac_ruby_base1/source_generators/base/static/spec/spec_helper.rb.template +5 -0
  149. data/sub/avm-eac_ruby_base1/template/avm/eac_ruby_base1/source_generators/base/version.template +5 -0
  150. data/sub/eac_ruby_base0/Gemfile +8 -0
  151. data/sub/eac_ruby_base0/eac_ruby_base0.gemspec +22 -0
  152. data/sub/eac_ruby_base0/lib/eac_ruby_base0/application.rb +88 -0
  153. data/sub/eac_ruby_base0/lib/eac_ruby_base0/application_xdg.rb +34 -0
  154. data/sub/eac_ruby_base0/lib/eac_ruby_base0/core_ext.rb +5 -0
  155. data/sub/eac_ruby_base0/lib/eac_ruby_base0/jobs_runner.rb +31 -0
  156. data/sub/eac_ruby_base0/lib/eac_ruby_base0/patches/class/jobs_runner.rb +9 -0
  157. data/sub/eac_ruby_base0/lib/eac_ruby_base0/patches/class.rb +4 -0
  158. data/sub/eac_ruby_base0/lib/eac_ruby_base0/patches.rb +4 -0
  159. data/sub/eac_ruby_base0/lib/eac_ruby_base0/rspec/setup.rb +14 -0
  160. data/sub/eac_ruby_base0/lib/eac_ruby_base0/rspec.rb +9 -0
  161. data/sub/eac_ruby_base0/lib/eac_ruby_base0/runner/contexts.rb +52 -0
  162. data/sub/eac_ruby_base0/lib/eac_ruby_base0/runner/prepend.rb +39 -0
  163. data/sub/eac_ruby_base0/lib/eac_ruby_base0/runner.rb +37 -0
  164. data/sub/eac_ruby_base0/lib/eac_ruby_base0/runner_with.rb +9 -0
  165. data/sub/eac_ruby_base0/lib/eac_ruby_base0/version.rb +5 -0
  166. data/sub/eac_ruby_base0/lib/eac_ruby_base0.rb +12 -0
  167. data/sub/eac_ruby_base0/spec/rubocop_spec.rb +3 -0
  168. data/sub/eac_ruby_base0/spec/spec_helper.rb +4 -0
  169. data/sub/eac_ruby_gem_support/Gemfile +8 -0
  170. data/sub/eac_ruby_gem_support/eac_ruby_gem_support.gemspec +25 -0
  171. data/sub/eac_ruby_gem_support/lib/eac_ruby_gem_support/rspec/helpers/filesystem.rb +73 -0
  172. data/sub/eac_ruby_gem_support/lib/eac_ruby_gem_support/rspec/helpers/utils.rb +22 -0
  173. data/sub/eac_ruby_gem_support/lib/eac_ruby_gem_support/rspec/setup.rb +55 -0
  174. data/sub/eac_ruby_gem_support/lib/eac_ruby_gem_support/rspec/shared_examples/source_target_fixtures.rb +76 -0
  175. data/sub/eac_ruby_gem_support/lib/eac_ruby_gem_support/rspec/shared_examples/spec_paths.rb +14 -0
  176. data/sub/eac_ruby_gem_support/lib/eac_ruby_gem_support/rspec/source_target_fixtures_controller.rb +32 -0
  177. data/sub/eac_ruby_gem_support/lib/eac_ruby_gem_support/rspec/spec_paths_controller.rb +29 -0
  178. data/sub/eac_ruby_gem_support/lib/eac_ruby_gem_support/rspec/specs/rubocop.rb +33 -0
  179. data/sub/eac_ruby_gem_support/lib/eac_ruby_gem_support/source_target_fixtures/source_target_file.rb +19 -0
  180. data/sub/eac_ruby_gem_support/lib/eac_ruby_gem_support/source_target_fixtures.rb +74 -0
  181. data/sub/eac_ruby_gem_support/lib/eac_ruby_gem_support/version.rb +5 -0
  182. data/sub/eac_ruby_gem_support/lib/eac_ruby_gem_support.rb +11 -0
  183. data/sub/eac_ruby_gem_support/spec/lib/eac_ruby_gem_support/rspec/helpers/filesystem_spec.rb +30 -0
  184. data/sub/eac_ruby_gem_support/spec/lib/eac_ruby_gem_support/rspec/shared_examples/source_target_fixtures_spec.rb +11 -0
  185. data/sub/eac_ruby_gem_support/spec/lib/eac_ruby_gem_support/rspec/shared_examples/source_target_fixtures_spec_files/one.source.yaml +2 -0
  186. data/sub/eac_ruby_gem_support/spec/lib/eac_ruby_gem_support/rspec/shared_examples/source_target_fixtures_spec_files/one.target.yaml +2 -0
  187. data/sub/eac_ruby_gem_support/spec/lib/eac_ruby_gem_support/rspec/shared_examples/spec_paths_spec.rb +19 -0
  188. data/sub/eac_ruby_gem_support/spec/lib/eac_ruby_gem_support/source_target_fixtures_spec.rb +27 -0
  189. data/sub/eac_ruby_gem_support/spec/lib/eac_ruby_gem_support/source_target_fixtures_spec_files/stub1.source.txt +1 -0
  190. data/sub/eac_ruby_gem_support/spec/lib/eac_ruby_gem_support/source_target_fixtures_spec_files/stub1.target.html +1 -0
  191. data/sub/eac_ruby_gem_support/spec/lib/eac_ruby_gem_support/source_target_fixtures_spec_files/stub2.source.html +1 -0
  192. data/sub/eac_ruby_gem_support/spec/lib/eac_ruby_gem_support/source_target_fixtures_spec_files/stub3.target.yaml +1 -0
  193. data/sub/eac_ruby_gem_support/spec/lib/rubocop_check_spec.rb +3 -0
  194. data/sub/eac_ruby_gem_support/spec/spec_helper.rb +103 -0
  195. data/sub/eac_templates/Gemfile +8 -0
  196. data/sub/eac_templates/README.textile +59 -0
  197. data/sub/eac_templates/eac_templates.gemspec +21 -0
  198. data/sub/eac_templates/lib/eac_templates/abstract/directory.rb +42 -0
  199. data/sub/eac_templates/lib/eac_templates/abstract/file.rb +25 -0
  200. data/sub/eac_templates/lib/eac_templates/abstract/fs_object.rb +99 -0
  201. data/sub/eac_templates/lib/eac_templates/abstract/fs_object_by_pathname.rb +13 -0
  202. data/sub/eac_templates/lib/eac_templates/abstract/with_directory_file_methods.rb +77 -0
  203. data/sub/eac_templates/lib/eac_templates/core_ext.rb +4 -0
  204. data/sub/eac_templates/lib/eac_templates/errors/not_found.rb +8 -0
  205. data/sub/eac_templates/lib/eac_templates/errors/type_mismatch.rb +8 -0
  206. data/sub/eac_templates/lib/eac_templates/errors.rb +9 -0
  207. data/sub/eac_templates/lib/eac_templates/interface_methods.rb +12 -0
  208. data/sub/eac_templates/lib/eac_templates/modules/ancestor/directory.rb +37 -0
  209. data/sub/eac_templates/lib/eac_templates/modules/ancestor/file.rb +64 -0
  210. data/sub/eac_templates/lib/eac_templates/modules/ancestor/fs_object.rb +26 -0
  211. data/sub/eac_templates/lib/eac_templates/modules/ancestor.rb +37 -0
  212. data/sub/eac_templates/lib/eac_templates/modules/base/directory.rb +72 -0
  213. data/sub/eac_templates/lib/eac_templates/modules/base/file.rb +31 -0
  214. data/sub/eac_templates/lib/eac_templates/modules/base/fs_object.rb +16 -0
  215. data/sub/eac_templates/lib/eac_templates/modules/base.rb +93 -0
  216. data/sub/eac_templates/lib/eac_templates/modules.rb +9 -0
  217. data/sub/eac_templates/lib/eac_templates/patches/module/erb_template.rb +9 -0
  218. data/sub/eac_templates/lib/eac_templates/patches/module/template.rb +9 -0
  219. data/sub/eac_templates/lib/eac_templates/patches/module.rb +4 -0
  220. data/sub/eac_templates/lib/eac_templates/patches/object/erb_template.rb +9 -0
  221. data/sub/eac_templates/lib/eac_templates/patches/object/template.rb +7 -0
  222. data/sub/eac_templates/lib/eac_templates/patches/object.rb +4 -0
  223. data/sub/eac_templates/lib/eac_templates/patches.rb +4 -0
  224. data/sub/eac_templates/lib/eac_templates/sources/directory.rb +37 -0
  225. data/sub/eac_templates/lib/eac_templates/sources/file.rb +13 -0
  226. data/sub/eac_templates/lib/eac_templates/sources/from_all_gems.rb +4 -0
  227. data/sub/eac_templates/lib/eac_templates/sources/from_gem.rb +37 -0
  228. data/sub/eac_templates/lib/eac_templates/sources/fs_object.rb +58 -0
  229. data/sub/eac_templates/lib/eac_templates/sources/internal_set.rb +27 -0
  230. data/sub/eac_templates/lib/eac_templates/sources/set.rb +61 -0
  231. data/sub/eac_templates/lib/eac_templates/sources/single.rb +34 -0
  232. data/sub/eac_templates/lib/eac_templates/sources.rb +9 -0
  233. data/sub/eac_templates/lib/eac_templates/variables/content.rb +52 -0
  234. data/sub/eac_templates/lib/eac_templates/variables/directory.rb +48 -0
  235. data/sub/eac_templates/lib/eac_templates/variables/file.rb +26 -0
  236. data/sub/eac_templates/lib/eac_templates/variables/fs_object.rb +65 -0
  237. data/sub/eac_templates/lib/eac_templates/variables/not_found_error.rb +7 -0
  238. data/sub/eac_templates/lib/eac_templates/variables/providers/base.rb +24 -0
  239. data/sub/eac_templates/lib/eac_templates/variables/providers/config_reader.rb +29 -0
  240. data/sub/eac_templates/lib/eac_templates/variables/providers/entries_reader.rb +25 -0
  241. data/sub/eac_templates/lib/eac_templates/variables/providers/generic.rb +25 -0
  242. data/sub/eac_templates/lib/eac_templates/variables/providers/hash.rb +29 -0
  243. data/sub/eac_templates/lib/eac_templates/variables/providers.rb +25 -0
  244. data/sub/eac_templates/lib/eac_templates/variables.rb +9 -0
  245. data/sub/eac_templates/lib/eac_templates/version.rb +5 -0
  246. data/sub/eac_templates/lib/eac_templates.rb +15 -0
  247. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec.rb +28 -0
  248. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/a_module/a/a_a +1 -0
  249. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/a_module/a/a_b +1 -0
  250. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/a_module/b +1 -0
  251. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/a_module/c +1 -0
  252. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/prepended_module/a/a_d +1 -0
  253. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/prepended_module/c +1 -0
  254. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/prepended_module/d +1 -0
  255. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/sub_class/a/a_a +1 -0
  256. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/sub_class/a/a_b +1 -0
  257. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/sub_class/a/a_c +1 -0
  258. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/sub_class/a/a_d +1 -0
  259. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/sub_class/b +1 -0
  260. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/sub_class/c +1 -0
  261. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/sub_class/d +1 -0
  262. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/super_class/a/a_a +1 -0
  263. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/super_class/a/a_b +1 -0
  264. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/super_class/b +1 -0
  265. data/sub/eac_templates/spec/lib/eac_templates/modules/base/apply_spec_files/super_class/c +1 -0
  266. data/sub/eac_templates/spec/lib/eac_templates/modules/base/child_spec.rb +110 -0
  267. data/sub/eac_templates/spec/lib/eac_templates/patches/object/template_spec.rb +26 -0
  268. data/sub/eac_templates/spec/lib/eac_templates/patches/object/template_spec_files/path/my_stub_with_template +1 -0
  269. data/sub/eac_templates/spec/lib/eac_templates/sources/set_spec.rb +42 -0
  270. data/sub/eac_templates/spec/lib/eac_templates/sources/set_spec_files/path1/subdir1/file1.template +1 -0
  271. data/sub/eac_templates/spec/lib/eac_templates/sources/set_spec_files/path1/subdir1/file2 +1 -0
  272. data/sub/eac_templates/spec/lib/eac_templates/sources/set_spec_files/path2/subdir1/file3.template +1 -0
  273. data/sub/eac_templates/spec/lib/eac_templates/variables/content_spec.rb +35 -0
  274. data/sub/eac_templates/spec/lib/eac_templates/variables/content_spec_files/expected_content +2 -0
  275. data/sub/eac_templates/spec/lib/eac_templates/variables/content_spec_files/source.template +2 -0
  276. data/sub/eac_templates/spec/rubocop_spec.rb +3 -0
  277. data/sub/eac_templates/spec/spec_helper/modules_resources_context.rb +45 -0
  278. data/sub/eac_templates/spec/spec_helper/modules_resources_context_files/path1/a_module/a/a_a +1 -0
  279. data/sub/eac_templates/spec/spec_helper/modules_resources_context_files/path1/a_module/b +1 -0
  280. data/sub/eac_templates/spec/spec_helper/modules_resources_context_files/path1/prepended_module/a/a_d.template +1 -0
  281. data/sub/eac_templates/spec/spec_helper/modules_resources_context_files/path1/sub_class/a/a_c +1 -0
  282. data/sub/eac_templates/spec/spec_helper/modules_resources_context_files/path1/super_class/a/a_b +1 -0
  283. data/sub/eac_templates/spec/spec_helper/modules_resources_context_files/path1/super_class/b +1 -0
  284. data/sub/eac_templates/spec/spec_helper/modules_resources_context_files/path2/a_module/a/a_b +1 -0
  285. data/sub/eac_templates/spec/spec_helper/modules_resources_context_files/path2/a_module/b +1 -0
  286. data/sub/eac_templates/spec/spec_helper/modules_resources_context_files/path2/a_module/c +1 -0
  287. data/sub/eac_templates/spec/spec_helper/modules_resources_context_files/path2/prepended_module/c +1 -0
  288. data/sub/eac_templates/spec/spec_helper/modules_resources_context_files/path2/prepended_module/d.template +1 -0
  289. data/sub/eac_templates/spec/spec_helper/modules_resources_context_files/path2/sub_class/a/a_d +1 -0
  290. data/sub/eac_templates/spec/spec_helper/modules_resources_context_files/path2/sub_class/b +1 -0
  291. data/sub/eac_templates/spec/spec_helper/modules_resources_context_files/path2/super_class/a/a_b +1 -0
  292. data/sub/eac_templates/spec/spec_helper/modules_resources_context_files/path2/super_class/b +1 -0
  293. data/sub/eac_templates/spec/spec_helper.rb +6 -0
  294. metadata +294 -20
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ module Sources
6
+ class Base < ::Avm::EacGenericBase0::Sources::Base
7
+ class BundleCommand < ::EacRubyUtils::Ruby::Command
8
+ GEMFILE_PATH_ENVVAR = 'BUNDLE_GEMFILE'
9
+
10
+ attr_reader :source
11
+
12
+ def initialize(source, command_args, extra_options = {})
13
+ @source = source
14
+ super(command_args, extra_options.merge(host_env: source.env))
15
+ end
16
+
17
+ # Changes current directory to the source's directory.
18
+ def chdir_root
19
+ chdir(source.path)
20
+ end
21
+
22
+ def envvar_gemfile
23
+ envvar(GEMFILE_PATH_ENVVAR, source.gemfile_path.to_path)
24
+ end
25
+
26
+ protected
27
+
28
+ def duplicate(command, extra_options)
29
+ self.class.new(source, command, extra_options)
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,64 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/eac_ruby_base1/sources/bundle_update'
4
+
5
+ module Avm
6
+ module EacRubyBase1
7
+ module Sources
8
+ class Base < ::Avm::EacGenericBase0::Sources::Base
9
+ module Bundler
10
+ CONFIGURED_GEMFILE_PATH_ENTRY_KEY = 'ruby.gemfile_path'
11
+ DEFAULT_GEMFILE_PATH = 'Gemfile'
12
+ GEMFILE_SOURCE_PARSER = /^\s*source\s+['"]([^'"]+)['"]$/.to_parser do |m|
13
+ ::Addressable::URI.parse(m[1])
14
+ end
15
+
16
+ # @return [Avm::EacRubyBase1::Sources::Base::BundleCommand]
17
+ def bundle(*args)
18
+ ::Avm::EacRubyBase1::Sources::Base::BundleCommand.new(self, %w[bundle] + args)
19
+ .envvar_gemfile
20
+ end
21
+
22
+ # @return [Avm::EacRubyBase1::Sources::BundleUpdate]
23
+ def bundle_update
24
+ ::Avm::EacRubyBase1::Sources::BundleUpdate.new(self)
25
+ end
26
+
27
+ # @return [String]
28
+ def configured_gemfile_path
29
+ configuration_entry(CONFIGURED_GEMFILE_PATH_ENTRY_KEY).value
30
+ end
31
+
32
+ # @return [String]
33
+ def default_gemfile_path
34
+ DEFAULT_GEMFILE_PATH
35
+ end
36
+
37
+ # @return [Bundler::LockfileParser]
38
+ def gemfile_lock_content
39
+ ::Bundler::LockfileParser.new(::Bundler.read_file(gemfile_lock_path))
40
+ end
41
+
42
+ def gemfile_lock_gem_version(gem_name)
43
+ gemfile_lock_content.specs.find { |gem| gem.name == gem_name }.if_present(&:version)
44
+ end
45
+
46
+ # @return [Pathname]
47
+ def gemfile_lock_path
48
+ gemfile_path.basename_sub { |b| "#{b}.lock" }
49
+ end
50
+
51
+ # @return [Pathname]
52
+ def gemfile_path
53
+ path.join(configured_gemfile_path || default_gemfile_path)
54
+ end
55
+
56
+ # @return [Addressable::URI]
57
+ def gemfile_source
58
+ GEMFILE_SOURCE_PARSER.parse!(gemfile_path.read)
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ module Sources
6
+ class Base < ::Avm::EacGenericBase0::Sources::Base
7
+ module Rake
8
+ RAKEFILE_BASENAME = 'Rakefile'
9
+ RAKE_TASKS_LINE_PARSER = /\Arake\s+(\S+)\s+/.to_parser do |m|
10
+ m[1]
11
+ end
12
+
13
+ # @return [Avm::EacRubyBase1::Sources::Base::BundleCommand]
14
+ def rake(*args)
15
+ raise "File \"#{rakefile_path}\" does not exist" unless rakefile_path.exist?
16
+
17
+ bundle('exec', 'rake', '--rakefile', rakefile_path, *args)
18
+ end
19
+
20
+ # @return [Pathname]
21
+ def rakefile_path
22
+ path.join(RAKEFILE_BASENAME)
23
+ end
24
+
25
+ # @return [Boolean]
26
+ def rake_task?(task_name)
27
+ rake_tasks.include?(task_name)
28
+ end
29
+
30
+ # @return [Array<String>]
31
+ def rake_tasks
32
+ rake('--all', '--tasks').execute!.each_line
33
+ .map { |line| RAKE_TASKS_LINE_PARSER.parse!(line) }
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ module Sources
6
+ class Base < ::Avm::EacGenericBase0::Sources::Base
7
+ module Rubocop
8
+ RUBOCOP_CONFIG_SUBPATH = '.rubocop.yml'
9
+
10
+ # @return [Avm::EacRubyBase1::Sources::Base::RubocopCommand]
11
+ def rubocop_command
12
+ ::Avm::EacRubyBase1::Sources::Base::RubocopCommand.new(self)
13
+ end
14
+
15
+ # @return [Pathname]
16
+ def rubocop_config_path
17
+ path.join(RUBOCOP_CONFIG_SUBPATH)
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -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 ||= ::Gemspec::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
+ '--auto-correct-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,40 @@
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
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,21 @@
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
+ def on_sub_updated
9
+ update_self_content
10
+ end
11
+
12
+ def update_self_content
13
+ bundle_update.execute!
14
+ rescue ::EacRubyUtils::Envs::ExecutionError
15
+ raise ::Avm::Sources::UpdateError
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,29 @@
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
+ def version_file_path
23
+ path.join('lib', *gem_namespace_parts, 'version.rb')
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ 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,58 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/eac_generic_base0/sources/base'
4
+ require 'avm/eac_ruby_base1/sources/runners'
5
+
6
+ module Avm
7
+ module EacRubyBase1
8
+ module Sources
9
+ class Base < ::Avm::EacGenericBase0::Sources::Base
10
+ RSPEC_TEST_COMMAND = 'rspec'
11
+
12
+ require_sub __FILE__, include_modules: :prepend
13
+
14
+ # @return [Hash<String, EacRubyUtils::Envs::Command>]
15
+ def default_test_commands
16
+ {
17
+ RSPEC_TEST_COMMAND => rspec_test_command
18
+ }
19
+ end
20
+
21
+ # To-do: dismiss this method at Avm::EacRailsBase1::Instance and remove.
22
+ # @return [EacRubyUtils::Envs::BaseEnv]
23
+ def env
24
+ @env.presence || super
25
+ end
26
+
27
+ # To-do: dismiss this method at Avm::EacRailsBase1::Instance and remove.
28
+ # @return [Avm::EacRubyBase1::Sources::Base]
29
+ def env_set(env)
30
+ @env = env
31
+
32
+ self
33
+ end
34
+
35
+ # @return [Avm::EacRubyBase1::Source::Base]
36
+ def ruby_parent
37
+ a_parent = parent
38
+
39
+ loop do
40
+ raise 'No Ruby parent found' if a_parent.blank?
41
+ return a_parent if a_parent.is_a?(::Avm::EacRubyBase1::Sources::Base)
42
+
43
+ a_parent = a_parent.parent
44
+ end
45
+ end
46
+
47
+ # @return [EacRubyUtils::Envs::Command]
48
+ def rspec_test_command
49
+ bundle('exec', 'rspec', '--fail-fast').chdir_root
50
+ end
51
+
52
+ def valid?
53
+ gemfile_path.exist? || gemspec_path.present?
54
+ end
55
+ end
56
+ end
57
+ end
58
+ 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,67 @@
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
+
63
+ require_sub __FILE__
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ module Sources
6
+ class NamespaceReplacer
7
+ common_constructor :from, :to
8
+
9
+ def concat_regex(regexes)
10
+ r = regexes.first
11
+ regexes[1..].each do |x|
12
+ r = ::Regexp.new(r.source + x.source)
13
+ end
14
+ r
15
+ end
16
+
17
+ def from_result
18
+ /\n#{from_open.source}(.+)#{from_close.source}/m
19
+ end
20
+
21
+ def from_open
22
+ concat_regex(from.split('::')
23
+ .map { |v| / *(?:class|module) +#{::Regexp.quote(v)} *\n/m })
24
+ end
25
+
26
+ def from_close
27
+ concat_regex(from.split('::').count.times.map { / *end *\n/m })
28
+ end
29
+
30
+ def to_result
31
+ "\n\n#{to_open}\\1#{to_close}"
32
+ end
33
+
34
+ def to_open
35
+ s = ''
36
+ to.split('::').each_with_index do |part, index|
37
+ s += (' ' * index) + "module #{part}\n"
38
+ end
39
+ s
40
+ end
41
+
42
+ def to_close
43
+ parts = to.split('::')
44
+ s = ''
45
+ parts.each_with_index do |_part, index|
46
+ tabc = (parts.count - 1 - index)
47
+ tabc -= 1 if index.zero?
48
+ s += "#{' ' * tabc}end\n"
49
+ end
50
+ s
51
+ end
52
+ end
53
+ end
54
+ end
55
+ 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,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/eac_ruby_base1/sources/gemfile_local'
4
+
5
+ module Avm
6
+ module EacRubyBase1
7
+ module Sources
8
+ module Runners
9
+ class Bundler
10
+ class GemfileLocal
11
+ runner_with :help do
12
+ bool_opt '-w', '--write', 'Write the Gemfile.local file.'
13
+ end
14
+ delegate :siblings, to: :builder
15
+
16
+ def run
17
+ start_banner
18
+ builder.run_bundle
19
+ siblings_banner
20
+ write_gemfile_local
21
+ end
22
+
23
+ private
24
+
25
+ def start_banner
26
+ runner_context.call(:source_banner)
27
+ infov 'Parent', the_source.parent
28
+ end
29
+
30
+ def siblings_banner
31
+ infov 'Siblings', siblings.count
32
+ siblings.each do |sibling|
33
+ infov ' * ', sibling.relative_path
34
+ end
35
+ end
36
+
37
+ def write_gemfile_local
38
+ return unless parsed.write?
39
+
40
+ infom "Writing #{builder.target_path}..."
41
+ builder.write_target_file
42
+ end
43
+
44
+ def the_source
45
+ runner_context.call(:source)
46
+ end
47
+
48
+ # @return [Avm::EacRubyBase1::Sources::GemfileLocal]
49
+ def builder_uncached
50
+ ::Avm::EacRubyBase1::Sources::GemfileLocal.new(the_source)
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end