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,69 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ module Rubygems
6
+ class Gemspec
7
+ class AddOrReplaceGemLine
8
+ enable_method_class
9
+ common_constructor :sender, :gem_name, :gem_specs, :dependency_type do
10
+ self.dependency_type = ::Avm::EacRubyBase1::Rubygems::Gemspec::Dependency.lists.type
11
+ .value_validate!(dependency_type)
12
+ end
13
+ delegate :lines, to: :sender
14
+
15
+ DEPENDENCY_PREFIX = ' s.add%<dependency_type>s_dependency \'%<gem_name>s\''
16
+
17
+ # @return [Integer]
18
+ def existing_gem_line_index
19
+ lines.index do |line|
20
+ ::Avm::EacRubyBase1::Rubygems::Gemspec::DEPENDENCY_LINE_PARSER.parse(line)
21
+ .if_present(&:first) == gem_name
22
+ end
23
+ end
24
+
25
+ def result
26
+ if existing_gem_line_index.present?
27
+ replace_line
28
+ else
29
+ add_line
30
+ end
31
+ end
32
+
33
+ def add_line
34
+ lines.insert(add_line_index, new_gem_line)
35
+ end
36
+
37
+ def add_line_index
38
+ (gems_lines_start_index..(lines.count - 1)).each do |e|
39
+ return e if new_gem_line < lines[e]
40
+ end
41
+ lines.count
42
+ end
43
+
44
+ # @return [Integer]
45
+ def gems_lines_start_index
46
+ existing_gem_line_index || (lines.count - 1)
47
+ end
48
+
49
+ def new_gem_line
50
+ ([gem_line_prefix] + quoted_gem_specs).join(', ')
51
+ end
52
+
53
+ # @return [String]
54
+ def gem_line_prefix
55
+ format(DEPENDENCY_PREFIX, { dependency_type: dependency_type, gem_name: gem_name })
56
+ end
57
+
58
+ def replace_line
59
+ lines[existing_gem_line_index] = new_gem_line
60
+ end
61
+
62
+ def quoted_gem_specs
63
+ gem_specs.map { |gem_spec| "'#{gem_spec}'" }
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ module Rubygems
6
+ class Gemspec
7
+ class Dependency
8
+ enable_listable
9
+ lists.add_string :type, '' => :common, '_development' => :development,
10
+ '_runtime' => :runtime
11
+
12
+ common_constructor :gemspec, :gem_name, :type do
13
+ self.type = self.class.lists.type.value_validate!(type)
14
+ end
15
+
16
+ def version_specs=(version_specs)
17
+ gemspec.add_or_replace_gem_line(gem_name, version_specs, type)
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ module Rubygems
6
+ class Gemspec
7
+ require_sub __FILE__, require_dependency: true
8
+ enable_simple_cache
9
+
10
+ DEPENDENCY_LINE_PARSER = /s\.add([a-zA-Z0-9_]*)_dependency\s*'(\S+)'/
11
+ .to_parser { |m| [m[2], m[1]] }
12
+
13
+ class << self
14
+ def from_file(path)
15
+ new(path.read.each_line.map(&:rstrip))
16
+ end
17
+ end
18
+
19
+ common_constructor :lines
20
+
21
+ # @param gem_name [String]
22
+ # @return [Avm::EacRubyBase1::Bundler::Gemfile::Dependency]
23
+ def dependency(gem_name)
24
+ dependencies_hash.fetch(gem_name)
25
+ end
26
+
27
+ # @return [Array<Avm::EacRubyBase1::Bundler::Gemfile::Dependency>]
28
+ def dependencies
29
+ dependencies_hash.values
30
+ end
31
+
32
+ def write(path)
33
+ path.to_pathname.write(to_text)
34
+ end
35
+
36
+ def to_text
37
+ lines.map { |line| "#{line}\n" }.join
38
+ end
39
+
40
+ protected
41
+
42
+ # @param gem_name [String]
43
+ # @param type [String] Avm::EacRubyBase1::Rubygems::Gemspec::Dependency::TYPE_*
44
+ # @return [Avm::EacRubyBase1::Bundler::Gemfile::Dependency]
45
+ def create_dependency(gem_name, type)
46
+ ::Avm::EacRubyBase1::Rubygems::Gemspec::Dependency.new(self, gem_name, type)
47
+ end
48
+
49
+ # @return [Hash<String, Avm::EacRubyBase1::Bundler::Gemfile::Dependency>]
50
+ def dependencies_hash_uncached
51
+ lines.lazy.map { |line| DEPENDENCY_LINE_PARSER.parse(line) }.compact_blank
52
+ .map { |dependency_args| create_dependency(*dependency_args) }.index_by(&:gem_name)
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ module Rubygems
6
+ class Remote
7
+ enable_simple_cache
8
+ common_constructor :name
9
+
10
+ # @return [Gem::Version, nil]
11
+ def maximum_number
12
+ numbers.max.if_present { |v| ::Gem::Version.new(v) }
13
+ end
14
+
15
+ # @return [Array<Gem::Version>]
16
+ def numbers
17
+ versions.map { |v| ::Gem::Version.new(v.fetch('number')) }
18
+ end
19
+
20
+ protected
21
+
22
+ # @return [Array<Hash>]
23
+ def versions_uncached
24
+ ::EacEnvs::Http::Request.new
25
+ .url("https://rubygems.org/api/v1/versions/#{name}.json")
26
+ .response.body_data_or_raise
27
+ rescue EacEnvs::Http::Response => e
28
+ e.status == 404 ? [] : raise(e)
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ module Rubygems
6
+ class VersionFile
7
+ common_constructor :path
8
+
9
+ VERSION_LINE_PATTERN = /\A(\s*)VERSION\s*=\s*[\'\"]([^\'\"]+)[\'\"](\s*)\z/.freeze
10
+
11
+ def value
12
+ return nil unless path.file?
13
+
14
+ path.read.each_line.lazy.map { |line| line_value(line) }.find { |v| v }
15
+ end
16
+
17
+ def value=(new_value)
18
+ path.write(new_value_content(new_value))
19
+ end
20
+
21
+ private
22
+
23
+ # @return Version found in line, nil otherwise.
24
+ def line_value(line)
25
+ VERSION_LINE_PATTERN.if_match(line.rstrip, false) { |m| ::Gem::Version.new(m[2]) }
26
+ end
27
+
28
+ def new_value_content(new_value)
29
+ path.read.each_line
30
+ .map { |line| new_value_line(line, new_value) }
31
+ .join
32
+ end
33
+
34
+ def new_value_line(line, new_value)
35
+ m = VERSION_LINE_PATTERN.match(line)
36
+ return line unless m
37
+
38
+ "#{m[1]}VERSION = '#{new_value}'#{m[3]}"
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ module Rubygems
6
+ require_sub __FILE__
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,74 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ module Runners
6
+ class Base
7
+ class LibRename
8
+ runner_with :help, :file_replacer do
9
+ desc 'Rename Ruby modules classes Ruby.'
10
+ arg_opt '-f', '--from', 'Rename "from".'
11
+ arg_opt '-t', '--to', 'Rename "to".'
12
+ end
13
+
14
+ def run
15
+ start_banner
16
+ validate
17
+ replacements_banner
18
+ run_filesystem_traverser
19
+ success 'Done!'
20
+ end
21
+
22
+ def validate
23
+ %w[from to].each do |opt|
24
+ fatal_error "No \"#{opt}\" option" if send(opt).blank?
25
+ end
26
+ end
27
+
28
+ def start_banner
29
+ infov 'From', from
30
+ infov 'To', to
31
+ end
32
+
33
+ private
34
+
35
+ def namespace_replacer_uncached
36
+ ::Avm::EacRubyBase1::Sources::NamespaceReplacer.new(from, to)
37
+ end
38
+
39
+ def text_replacer
40
+ @text_replacer ||= super.gsub(from, to).gsub(from_path, to_path)
41
+ .gsub(namespace_replacer.from_result, namespace_replacer.to_result)
42
+ end
43
+
44
+ def replace_file?(file)
45
+ file.extname == '.rb'
46
+ end
47
+
48
+ def replacements_banner
49
+ infov 'Replacements', text_replacer.replacements.count
50
+ text_replacer.replacements.each do |rep|
51
+ infov ' * ', rep
52
+ end
53
+ end
54
+
55
+ def from
56
+ parsed.from.to_s
57
+ end
58
+
59
+ def to
60
+ parsed.to.to_s
61
+ end
62
+
63
+ def from_path
64
+ from.underscore
65
+ end
66
+
67
+ def to_path
68
+ to.underscore
69
+ end
70
+ end
71
+ end
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ module Runners
6
+ class Base
7
+ class Rubocop
8
+ runner_with :help do
9
+ desc 'Runs Rubocop (https://rubygems.org/gems/rubocop).'
10
+ arg_opt '-C', 'Caminho para executar o Rubocop [default: .].'
11
+ pos_arg :rubocop_args, repeat: true, optional: true
12
+ end
13
+
14
+ def run
15
+ ::Avm::EacRubyBase1::Rubocop.new(path, parsed.rubocop_args).run
16
+ end
17
+
18
+ private
19
+
20
+ def path
21
+ ::Pathname.new(parsed.c || '.').expand_path
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ module Runners
6
+ class Base < ::Avm::Runners::Base
7
+ require_sub __FILE__
8
+
9
+ runner_with :help, :subcommands do
10
+ desc 'Ruby utilities for AVM.'
11
+ subcommands
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ module Runners
6
+ require_sub __FILE__
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,59 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ module SourceGenerators
6
+ class Base < ::Avm::SourceGenerators::Base
7
+ module Dependencies
8
+ common_concern
9
+
10
+ COMMON_DEPENDENCY_GEMS = %w[eac_ruby_utils].freeze
11
+ DEVELOPMENT_DEPENDENCY_GEMS = %w[eac_ruby_gem_support].freeze
12
+
13
+ module ClassMethods
14
+ # @return [Array<String>]
15
+ def common_dependency_gems
16
+ COMMON_DEPENDENCY_GEMS
17
+ end
18
+
19
+ # @return [Array<String>]
20
+ def development_dependency_gems
21
+ DEVELOPMENT_DEPENDENCY_GEMS
22
+ end
23
+ end
24
+
25
+ # @return [String]
26
+ def common_dependencies
27
+ dependencies_section(:common_dependency_gems, '')
28
+ end
29
+
30
+ def dependency_version(gem_name)
31
+ ::Avm::EacRubyBase1::SourceGenerators::Base::VersionBuilder.new(gem_name, options).to_s
32
+ end
33
+
34
+ # @return [String]
35
+ def development_dependencies
36
+ dependencies_section(:development_dependency_gems, 'development_')
37
+ end
38
+
39
+ protected
40
+
41
+ # @param gem_name [String]
42
+ # @param prefix [String]
43
+ # @return [String]
44
+ def dependency_line(gem_name, prefix)
45
+ "#{IDENT}s.add_#{prefix}dependency '#{gem_name}', #{dependency_version(gem_name)}\n"
46
+ end
47
+
48
+ # @param setting_key [Symbol]
49
+ # @param prefix [String]
50
+ # @return [String]
51
+ def dependencies_section(gems_method, prefix)
52
+ self.class.send(gems_method).sort.map { |gem_name| dependency_line(gem_name, prefix) }
53
+ .join.rstrip
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ module SourceGenerators
6
+ class Base < ::Avm::SourceGenerators::Base
7
+ module GemfileLock
8
+ def generate_gemfile_lock
9
+ return unless generate_gemfile_lock?
10
+
11
+ self_gem.bundle('install').chdir_root.execute!
12
+ end
13
+
14
+ # @return [Boolean]
15
+ def generate_gemfile_lock?
16
+ options[::Avm::EacRubyBase1::SourceGenerators::Base::Options::GEMFILE_LOCK_OPTION]
17
+ .to_bool
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ module SourceGenerators
6
+ class Base < ::Avm::SourceGenerators::Base
7
+ module Options
8
+ common_concern
9
+
10
+ GEMFILE_LOCK_OPTION = :'gemfile-lock'
11
+
12
+ OPTIONS = {
13
+ GEMFILE_LOCK_OPTION => 'Run "bundle install" at the end'
14
+ }.freeze
15
+
16
+ module ClassMethods
17
+ def option_list
18
+ OPTIONS.merge(dependency_version_options).inject(super) { |a, e| a.option(*e) }
19
+ end
20
+
21
+ # @return [Hash<Symbol, String>]
22
+ def dependency_version_options
23
+ (common_dependency_gems + development_dependency_gems).sort.to_h do |gem_name|
24
+ ["#{gem_name}_version".dasherize.to_sym, "Version for \"#{gem_name}\" gem."]
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ module SourceGenerators
6
+ class Base < ::Avm::SourceGenerators::Base
7
+ module RootModule
8
+ def root_module
9
+ lib_path.camelize
10
+ end
11
+
12
+ def root_module_close
13
+ root_module_components.count.times.map do |index|
14
+ "#{IDENT * index}end"
15
+ end.reverse.join("\n")
16
+ end
17
+
18
+ def root_module_inner_identation
19
+ IDENT * root_module_components.count
20
+ end
21
+
22
+ def root_module_open
23
+ root_module_components.each_with_index.map do |component, index|
24
+ "#{IDENT * index}module #{component}"
25
+ end.join("\n")
26
+ end
27
+
28
+ def root_module_components
29
+ root_module.split('::')
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,58 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ module SourceGenerators
6
+ class Base < ::Avm::SourceGenerators::Base
7
+ class VersionBuilder
8
+ enable_simple_cache
9
+ common_constructor :gem_name, :options
10
+
11
+ def to_s
12
+ r = "'~> #{two_segments}'"
13
+ r += ", '>= #{three_segments}'" if segments.count >= 3 && segments[2].positive?
14
+ r
15
+ end
16
+
17
+ # @return [Gem::Version]
18
+ def version
19
+ options_version || loaded_version || maximum_version
20
+ end
21
+
22
+ def two_segments
23
+ segments.first(2).join('.')
24
+ end
25
+
26
+ def three_segments
27
+ segments.first(3).join('.')
28
+ end
29
+
30
+ private
31
+
32
+ # @return [Gem::Version]
33
+ def maximum_version
34
+ r = ::Avm::EacRubyBase1::Rubygems::Remote.new(gem_name).maximum_number
35
+ return ::Gem::Version.new(r) if r.present?
36
+
37
+ raise "None version found for gem \"#{gem_name}\""
38
+ end
39
+
40
+ def segments_uncached
41
+ version.release.to_s.split('.').map(&:to_i)
42
+ end
43
+
44
+ # @return [Gem::Version, nil]
45
+ def loaded_version
46
+ ::Gem.loaded_specs[gem_name].if_present(&:version)
47
+ end
48
+
49
+ def options_version
50
+ options["#{gem_name}_version".dasherize.to_sym].if_present do |v|
51
+ ::Gem::Version.new(v)
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,83 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacRubyBase1
5
+ module SourceGenerators
6
+ class Base < ::Avm::SourceGenerators::Base
7
+ GEMSPEC_FILES_DIRECTORY_PATHS = %w[lib].freeze
8
+ GEMSPEC_FILES_FILE_PATHS = [].freeze
9
+ IDENT = ' '
10
+ JOBS = %w[gemspec root_lib version_lib gemfile_lock].freeze
11
+ TEMPLATE_VARIABLES = %w[lib_path name root_module].freeze
12
+
13
+ enable_speaker
14
+ enable_simple_cache
15
+ require_sub __FILE__, include_modules: true
16
+
17
+ # @return [String]
18
+ def gemspec_extra
19
+ gemspec_extra_lines.map { |line| "\n#{IDENT}#{line}" }.join
20
+ end
21
+
22
+ # @return [Array<String>]
23
+ def gemspec_extra_lines
24
+ []
25
+ end
26
+
27
+ # @return [String]
28
+ def gemspec_files_value
29
+ "Dir[#{gemspec_files_paths.map { |path| "'#{path}'" }.join(', ')}]"
30
+ end
31
+
32
+ # @return [Array<String>]
33
+ def gemspec_files_paths
34
+ ["{#{gemspec_files_directory_paths.sort.join(',')}}/**/*"] +
35
+ gemspec_files_file_paths.sort
36
+ end
37
+
38
+ # @return [Array<String>]
39
+ def gemspec_files_directory_paths
40
+ GEMSPEC_FILES_DIRECTORY_PATHS
41
+ end
42
+
43
+ # @return [Array<String>]
44
+ def gemspec_files_file_paths
45
+ GEMSPEC_FILES_FILE_PATHS
46
+ end
47
+
48
+ def lib_path
49
+ name.split('-').join('/')
50
+ end
51
+
52
+ protected
53
+
54
+ def generate_gemspec
55
+ template_apply('gemspec', "#{name}.gemspec")
56
+ end
57
+
58
+ def generate_root_lib
59
+ template_apply('root_lib', "lib/#{lib_path}.rb")
60
+ end
61
+
62
+ def generate_version_lib
63
+ template_apply('version', "lib/#{lib_path}/version.rb")
64
+ end
65
+
66
+ # @return [EacTemplates::Modules::Base]
67
+ def root_template
68
+ template.child('static')
69
+ end
70
+
71
+ def self_gem_uncached
72
+ ::Avm::EacRubyBase1::Sources::Base.new(target_path)
73
+ end
74
+
75
+ def template_apply(from, to)
76
+ target = target_path.join(to)
77
+ target.dirname.mkpath
78
+ template.child(from).apply_to_file(self, target.to_path)
79
+ end
80
+ end
81
+ end
82
+ end
83
+ end