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,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ module FileFormats
6
+ class Base < ::Avm::EacGenericBase0::FileFormats::Base
7
+ class FileResourceName
8
+ enable_method_class
9
+ common_constructor :file_format, :path do
10
+ self.path = path.to_pathname
11
+ end
12
+
13
+ LIBRARY_PATTERNS = [%r{lib/((?!.*/lib/).+)\.rb\z},
14
+ %r{app/[^/]+/(.+)\.rb\z}].freeze
15
+ SPEC_PATTERNS = [%r{spec/[^/]+/(.+)_spec\.rb\z}].freeze
16
+
17
+ # @param path [Pathname]
18
+ # @return [Avm::FileFormats::FileWith]
19
+ def result
20
+ result_from_spec || result_from_library || result_from_superclass
21
+ end
22
+
23
+ private
24
+
25
+ def result_from_library
26
+ result_from_patterns(LIBRARY_PATTERNS) { |m| m[1].camelize }
27
+ end
28
+
29
+ def result_from_patterns(patterns, &block)
30
+ file_format.result_from_patterns(patterns, path, &block)
31
+ end
32
+
33
+ def result_from_spec
34
+ result_from_patterns(SPEC_PATTERNS) { |m| "RSpec.describe(#{m[1].camelize})" }
35
+ end
36
+
37
+ def result_from_superclass
38
+ file_format.result_from_superclass(path)
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/eac_ruby_base1/rubocop'
4
+
5
+ module Avm
6
+ module EacRubyBase1
7
+ module FileFormats
8
+ class Base < ::Avm::EacGenericBase0::FileFormats::Base
9
+ require_sub __FILE__
10
+
11
+ VALID_BASENAMES = %w[*.gemspec *.rake *.rb Gemfile Rakefile].freeze
12
+ VALID_TYPES = ['x-ruby'].freeze
13
+
14
+ def internal_apply(files)
15
+ ::Avm::EacRubyBase1::Rubocop.new('.', ['-a', '--ignore-parent-exclusion'] + files).run
16
+ super
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ module Instances
6
+ module Mixin
7
+ DEFAULT_RUBY_VERSION = '2.7.7'
8
+ RUBY_VERSION_KEY = 'ruby.version'
9
+
10
+ def auto_install_ruby_version
11
+ inherited_entry_value(::Avm::Instances::EntryKeys::INSTALL_ID, RUBY_VERSION_KEY) ||
12
+ DEFAULT_RUBY_VERSION
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,120 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ module Launcher
6
+ module Gem
7
+ class Build
8
+ enable_speaker
9
+
10
+ def initialize(original_gem_root)
11
+ @original_gem_root = original_gem_root
12
+ end
13
+
14
+ def output_file
15
+ return nil unless @gem_root
16
+
17
+ @gem_root.find_files_with_extension('.gem').first
18
+ end
19
+
20
+ def builded?
21
+ output_file.present? && ::File.exist?(output_file)
22
+ end
23
+
24
+ def build
25
+ return if builded?
26
+
27
+ copy_gem_files
28
+ build_gem
29
+ check_gem_empty_size
30
+ check_gem_version
31
+ end
32
+
33
+ def close
34
+ ::FileUtils.remove_entry(@gem_root) if @gem_root && ::File.directory?(@gem_root)
35
+ @gem_root = nil
36
+ end
37
+
38
+ private
39
+
40
+ def copy_gem_files
41
+ @gem_root = ::Avm::Launcher::Paths::Real.new(::Dir.mktmpdir)
42
+ FileUtils.cp_r "#{@original_gem_root}/.", @gem_root
43
+ end
44
+
45
+ def build_gem
46
+ info("Building gemspec #{gemspec_file}...")
47
+ clear_gems
48
+ Dir.chdir @gem_root do
49
+ isolated_build_gem
50
+ end
51
+ end
52
+
53
+ def isolated_build_gem
54
+ on_clean_ruby do
55
+ EacRubyUtils::Envs.local.command('gem', 'build', gemspec_file).execute!
56
+ end
57
+ end
58
+
59
+ def check_gem_empty_size
60
+ Dir.mktmpdir do |dir|
61
+ Dir.chdir dir do
62
+ EacRubyUtils::Envs.local.command('gem', 'unpack', gem).system
63
+ gs = File.join(dir, File.basename(gem, '.gem'))
64
+ if (Dir.entries(gs) - %w[. ..]).empty?
65
+ raise "\"#{dir}\" (Unpacked from #{gem}) has no source code"
66
+ end
67
+ end
68
+ end
69
+ end
70
+
71
+ def clear_gems
72
+ @gem_root.find_files_with_extension('.gem').each do |f|
73
+ FileUtils.rm_rf(f)
74
+ end
75
+ end
76
+
77
+ def gemspec_file
78
+ @gem_root.find_file_with_extension('.gemspec')
79
+ end
80
+
81
+ def gem
82
+ @gem_root.find_file_with_extension('.gem')
83
+ end
84
+
85
+ def check_gem_version
86
+ spec = ::Avm::EacRubyBase1::Launcher::Gem::Specification.new(gemspec_file)
87
+ return if ::File.basename(output_file, '.gem') == spec.full_name
88
+
89
+ raise("Builded gem is not the same version of gemspec (#{spec}, #{output_file})")
90
+ end
91
+
92
+ def bundle_dependencies
93
+ gemfile = @gem_root.subpath('Gemfile')
94
+ return unless ::File.exist?(gemfile)
95
+
96
+ Dir.chdir(@gem_root) do
97
+ EacRubyUtils::Envs.local.command('bundle', 'install').execute!
98
+ end
99
+ end
100
+
101
+ def on_clean_ruby(&block)
102
+ on_clear_envvars('BUNDLE', 'RUBY', &block)
103
+ end
104
+
105
+ def on_clear_envvars(*start_with_vars)
106
+ old_values = envvars_starting_with(start_with_vars)
107
+ old_values.each_key { |k| ENV.delete(k) }
108
+ yield
109
+ ensure
110
+ old_values&.each { |k, v| ENV[k] = v }
111
+ end
112
+
113
+ def envvars_starting_with(start_with_vars)
114
+ ENV.select { |k, _v| start_with_vars.any? { |var| k.start_with?(var) } }
115
+ end
116
+ end
117
+ end
118
+ end
119
+ end
120
+ end
@@ -0,0 +1,61 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ module Launcher
6
+ module Gem
7
+ class Specification
8
+ class << self
9
+ def parse_version_file(file)
10
+ s = ::File.read(file)
11
+ m = /VERSION\s*=\s*[\'\"]([^\'\"]+)[\'\"]/.match(s)
12
+ m ? m[1] : nil
13
+ end
14
+ end
15
+
16
+ attr_reader :gemspec_file
17
+
18
+ def initialize(gemspec_file)
19
+ @gemspec_file = gemspec_file
20
+ end
21
+
22
+ def version
23
+ v = self.class.parse_version_file(version_file)
24
+ return v if v.present?
25
+
26
+ raise "Version not found on file \"#{version_file}\""
27
+ end
28
+
29
+ def name
30
+ ::File.basename(gemspec_file).gsub(/\.gemspec\z/, '')
31
+ end
32
+
33
+ def full_name
34
+ "#{name}-#{version}"
35
+ end
36
+
37
+ def to_s
38
+ full_name
39
+ end
40
+
41
+ private
42
+
43
+ def gem_root
44
+ ::File.dirname(gemspec_file)
45
+ end
46
+
47
+ def version_file
48
+ f = ::File.join(gem_root, 'lib', *namespace_parts, 'version.rb')
49
+ return f if ::File.exist?(f)
50
+
51
+ raise "Version file \"#{f}\" does not exist"
52
+ end
53
+
54
+ def namespace_parts
55
+ name.split('-')
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ module LauncherStereotypes
6
+ class Base
7
+ module LocalProjectMixin
8
+ # @return [Avm::EacRubyBase1::Sources::Base]
9
+ def ruby_gem
10
+ @ruby_gem ||= ::Avm::EacRubyBase1::Sources::Base.new(path)
11
+ end
12
+
13
+ def version
14
+ ruby_gem.version.if_present { |v| ::Avm::VersionNumber.new(v) }
15
+ end
16
+
17
+ def version=(value)
18
+ ruby_gem.version_file.value = value
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,122 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ module LauncherStereotypes
6
+ class Base
7
+ class Publish < ::Avm::Launcher::Publish::Base
8
+ include ::EacRubyUtils::SimpleCache
9
+ enable_speaker
10
+
11
+ protected
12
+
13
+ def internal_check
14
+ gem_published? ? internal_check_gem_published : internal_check_gem_unpublished
15
+ end
16
+
17
+ private
18
+
19
+ def internal_check_gem_published
20
+ if version_published?
21
+ outdated_version? ? outdated_version_check_result : version_published_check_result
22
+ else
23
+ version_unpublished_check_result
24
+ end
25
+ end
26
+
27
+ def internal_check_gem_unpublished
28
+ if new_gem_allowed?
29
+ version_unpublished_check_result
30
+ else
31
+ new_gem_disallowed_check_result
32
+ end
33
+ end
34
+
35
+ def new_gem_disallowed_check_result
36
+ ::Avm::Launcher::Publish::CheckResult.blocked(
37
+ "#{gem_spec.full_name} does not exist in RubyGems"
38
+ )
39
+ end
40
+
41
+ def version_published_check_result
42
+ ::Avm::Launcher::Publish::CheckResult.updated("#{gem_spec.full_name} already pushed")
43
+ end
44
+
45
+ def outdated_version_check_result
46
+ ::Avm::Launcher::Publish::CheckResult.outdated(
47
+ "#{gem_spec.full_name} is outdated (Max: #{gem_version_max})"
48
+ )
49
+ end
50
+
51
+ def version_unpublished_check_result
52
+ ::Avm::Launcher::Publish::CheckResult.pending("#{gem_spec.full_name} not found " \
53
+ 'in RubyGems')
54
+ end
55
+
56
+ def source_uncached
57
+ instance.warped
58
+ end
59
+
60
+ def gem_spec_uncached
61
+ ::Avm::EacRubyBase1::LauncherStereotypes::Base.load_gemspec(gemspec)
62
+ end
63
+
64
+ def gem_build_uncached
65
+ ::Avm::EacRubyBase1::Launcher::Gem::Build.new(source)
66
+ end
67
+
68
+ def publish
69
+ gem_build.build
70
+ push_gem
71
+ ensure
72
+ gem_build.close
73
+ end
74
+
75
+ def new_gem_allowed?
76
+ ::Avm::Launcher::Context.current.publish_options[:new]
77
+ end
78
+
79
+ def gem_published?
80
+ gem_versions.any?
81
+ end
82
+
83
+ def version_published?
84
+ gem_versions.any? { |v| v['number'] == gem_spec.version }
85
+ end
86
+
87
+ def outdated_version?
88
+ gem_version_max.present? && ::Gem::Version.new(gem_spec.version) < gem_version_max
89
+ end
90
+
91
+ # @return [Array]
92
+ def gem_versions
93
+ remote_gem.versions
94
+ end
95
+
96
+ def gem_version_max
97
+ remote_gem.maximum_number
98
+ end
99
+
100
+ # @return [Avm::EacRubyBase1::Rubygems::Remote]
101
+ def remote_gem_uncached
102
+ ::Avm::EacRubyBase1::Rubygems::Remote.new(gem_spec.name)
103
+ end
104
+
105
+ def push_gem
106
+ info("Pushing gem #{gem_spec}...")
107
+ command = ['gem', 'push', gem_build.output_file]
108
+ unless ::Avm::Launcher::Context.current.publish_options[:confirm]
109
+ command = %w[echo] + command + %w[(Dry-run)]
110
+ end
111
+ EacRubyUtils::Envs.local.command(command).system
112
+ info('Pushed!')
113
+ end
114
+
115
+ def gemspec_uncached
116
+ source.find_file_with_extension('.gemspec')
117
+ end
118
+ end
119
+ end
120
+ end
121
+ end
122
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ module LauncherStereotypes
6
+ class Base
7
+ require_sub __FILE__
8
+ include ::Avm::Launcher::Stereotype
9
+
10
+ STEREOTYPE_NAME = 'EacRubyBase1'
11
+
12
+ class << self
13
+ def match?(path)
14
+ Dir.glob(File.join(path.real, '*.gemspec')).any?
15
+ end
16
+
17
+ def color
18
+ :red
19
+ end
20
+
21
+ def load_gemspec(gemspec_file)
22
+ ::Avm::EacRubyBase1::Launcher::Gem::Specification.new(gemspec_file)
23
+ end
24
+
25
+ # @return [String]
26
+ def stereotype_name
27
+ STEREOTYPE_NAME
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ class PreferredVersionRequirements
6
+ enable_simple_cache
7
+ common_constructor :version do
8
+ self.version = ::Avm::VersionNumber.new(version)
9
+ end
10
+
11
+ # @return [Avm::VersionNumber]
12
+ def prefix_version
13
+ ::Avm::VersionNumber.new(
14
+ normalized_version.segments[0..normalized_version.segments.count - 2]
15
+ )
16
+ end
17
+
18
+ # @return [Gem::Requirement]
19
+ def to_requirement
20
+ r = ["~> #{prefix_version}"]
21
+ r << ">= #{normalized_version}" unless normalized_version.segments[-1].zero?
22
+ ::Gem::Requirement.new(r)
23
+ end
24
+
25
+ # @return [Array<String>]
26
+ def to_requirements_list
27
+ to_requirement.requirements.map { |r| "#{r[0]} #{r[1]}" }
28
+ end
29
+
30
+ private
31
+
32
+ # @return [Avm::VersionNumber]
33
+ def normalized_version_uncached
34
+ r = version
35
+ r = ::Avm::VersionNumber.new(r.segments + [0]) while r.segments.count < 3
36
+ r
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/eac_ruby_base1/rspec/source_generator'
4
+
5
+ module Avm
6
+ module EacRubyBase1
7
+ module Rspec
8
+ module Setup
9
+ def self.extended(obj)
10
+ obj.rspec_config.include(::Avm::EacRubyBase1::Rspec::SourceGenerator)
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ module Rspec
6
+ module SourceGenerator
7
+ APPLICATION_STEREOTYPE = 'EacRubyBase1'
8
+ DEFAULT_EAC_RUBY_GEM_SUPPORT_VERSION = '0.5.1'
9
+ DEFAULT_EAC_RUBY_UTILS_VERSION = '0.104.0'
10
+
11
+ # @return [Avm::EacRubyBase1::Sources::Base]
12
+ def avm_eac_ruby_base1_source(options = {})
13
+ options['eac-ruby-utils-version'] ||= DEFAULT_EAC_RUBY_UTILS_VERSION
14
+ options['eac-ruby-gem-support-version'] ||= DEFAULT_EAC_RUBY_GEM_SUPPORT_VERSION
15
+ avm_source(APPLICATION_STEREOTYPE, options)
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ module Rspec
6
+ require_sub __FILE__
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ class Rubocop
6
+ module Configured
7
+ def configured_rubocop_command_uncached
8
+ configured_rubocop_command_by_command || configured_rubocop_command_by_gemfile
9
+ end
10
+
11
+ def configured_rubocop_command_by_command
12
+ configuration.if_present(&:rubocop_command)
13
+ end
14
+
15
+ def configured_rubocop_command_by_gemfile
16
+ configuration.if_present(&:rubocop_gemfile).if_present do |v|
17
+ rubocop_command_by_gemfile_path(v.parent)
18
+ end
19
+ end
20
+
21
+ private
22
+
23
+ def configuration_uncached
24
+ ::Avm::Sources::Configuration.find_by_path(base_path)
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ class Rubocop
6
+ module Envvar
7
+ RUBOCOP_COMMAND_ENVVAR_NAME = 'RUBOCOP_COMMAND'
8
+
9
+ def env_rubocop_command
10
+ ENV[RUBOCOP_COMMAND_ENVVAR_NAME].present? ? cmd(ENV[RUBOCOP_COMMAND_ENVVAR_NAME]) : nil
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ class Rubocop
6
+ module Gemfile
7
+ def gemfile_rubocop_command
8
+ return nil unless rubocop_gemfile?
9
+
10
+ rubocop_command_by_gemfile_path(mygem.path)
11
+ end
12
+
13
+ def rubocop_command_by_gemfile_path(path)
14
+ ::Avm::EacRubyBase1::Sources::Base.new(path).bundle('exec', 'rubocop').chdir_root
15
+ end
16
+
17
+ def rubocop_gemfile?
18
+ return false if mygem.blank?
19
+
20
+ mygem.bundle('install').execute!
21
+ mygem.gemfile_lock_gem_version('rubocop').present?
22
+ end
23
+
24
+ private
25
+
26
+ def mygem_uncached
27
+ find_gem(::Pathname.new(base_path).expand_path)
28
+ end
29
+
30
+ def find_gem(path)
31
+ r = ::Avm::EacRubyBase1::Sources::Base.new(path)
32
+ return r if r.gemfile_path.exist?
33
+
34
+ find_gem(path.dirname) unless path.root?
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,52 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ class Rubocop
6
+ require_sub __FILE__, include_modules: true
7
+ enable_speaker
8
+ enable_simple_cache
9
+ common_constructor :base_path, :rubocop_args
10
+ set_callback :initialize, :after do
11
+ @base_path = ::Pathname.new(base_path.to_s) unless base_path.is_a?(::Pathname)
12
+ end
13
+
14
+ def run
15
+ start_banner
16
+ run_rubocop
17
+ end
18
+
19
+ private
20
+
21
+ def cmd(*args)
22
+ ::EacRubyUtils::Envs.local.command(*args)
23
+ end
24
+
25
+ def rubocop_command_uncached
26
+ %w[env configured gemfile].each do |s|
27
+ cmd = send("#{s}_rubocop_command")
28
+ return cmd if cmd.present?
29
+ end
30
+ cmd('rubocop')
31
+ end
32
+
33
+ def rubocop_command_with_args
34
+ rubocop_command.append(rubocop_args)
35
+ end
36
+
37
+ def rubocop_version_uncached
38
+ ::EacRubyUtils::Ruby.on_clean_environment do
39
+ rubocop_command.append(['--version']).execute!.strip
40
+ end
41
+ end
42
+
43
+ def run_rubocop
44
+ ::EacRubyUtils::Ruby.on_clean_environment { rubocop_command_with_args.system }
45
+ end
46
+
47
+ def start_banner
48
+ infov 'Rubocop version', rubocop_version
49
+ end
50
+ end
51
+ end
52
+ end