@@ -8,69 +8,18 @@ module NextRails
88 module BundleReport
99 extend self
1010
11- def compatibility ( rails_version : nil , ruby_version : nil , include_rails_gems : nil )
12- return puts RubyVersionCompatibility . new ( options : { ruby_version : ruby_version } ) . generate if ruby_version
11+ def ruby_compatibility ( ruby_version : nil )
12+ return unless ruby_version
1313
14- incompatible_gems = NextRails ::GemInfo . all . reject do |gem |
15- gem . compatible_with_rails? ( rails_version : rails_version ) || ( !include_rails_gems && gem . from_rails? )
16- end . sort_by { |gem | gem . name }
17-
18- incompatible_gems . each { |gem | gem . find_latest_compatible ( rails_version : rails_version ) }
19-
20- incompatible_gems_by_state = incompatible_gems . group_by { |gem | gem . state ( rails_version ) }
21-
22- puts erb_output ( incompatible_gems_by_state , incompatible_gems , rails_version )
14+ options = { ruby_version : ruby_version }
15+ puts RubyVersionCompatibility . new ( options : options ) . generate
2316 end
2417
25- def erb_output ( incompatible_gems_by_state , incompatible_gems , rails_version )
26- template = <<-ERB
27- <% if incompatible_gems_by_state [ :found_compatible ] -%>
28- <%= Rainbow ( "= > Incompatible with Rails #{ rails_version } (with new versions that are compatible):").white.bold %>
29- <%= Rainbow ( "These gems will need to be upgraded before upgrading to Rails #{ rails_version } .").italic %>
30-
31- <% incompatible_gems_by_state [ :found_compatible ] . each do |gem | -%>
32- <%= gem_header ( gem ) %> - upgrade to <%= gem . latest_compatible_version . version %>
33- <% end -%>
34-
35- <% end -%>
36- <% if incompatible_gems_by_state [ :incompatible ] -%>
37- <%= Rainbow ( "= > Incompatible with Rails #{ rails_version } (with no new compatible versions):").white.bold %>
38- <%= Rainbow ( "These gems will need to be removed or replaced before upgrading to Rails #{ rails_version } .").italic %>
39-
40- <% incompatible_gems_by_state [ :incompatible ] . each do |gem | -%>
41- <%= gem_header ( gem ) %> - new version, <%= gem . latest_version . version %> , is not compatible with Rails #{ rails_version }
42- <% end -%>
43-
44- <% end -%>
45- <% if incompatible_gems_by_state [ :no_new_version ] -%>
46- <%= Rainbow ( "= > Incompatible with Rails #{ rails_version } (with no new versions):").white.bold %>
47- <%= Rainbow ( "These gems will need to be upgraded by us or removed before upgrading to Rails #{ rails_version } .").italic %>
48- <%= Rainbow ( "This list is likely to contain internal gems, like Cuddlefish." ) . italic %>
49-
50- <% incompatible_gems_by_state [ :no_new_version ] . each do |gem | -%>
51- <%= gem_header ( gem ) %> - new version not found
52- <% end -%>
53-
54- <% end -%>
55- <%= Rainbow ( incompatible_gems . length . to_s ) . red %> gems incompatible with Rails <%= rails_version %>
56- ERB
57-
58- erb_version = ERB . version
59- if erb_version =~ /erb.rb \[ ([\d \. ]+) .*\] /
60- erb_version = $1
61- end
62-
63- if Gem ::Version . new ( erb_version ) < Gem ::Version . new ( "2.2" )
64- ERB . new ( template , nil , "-" ) . result ( binding )
65- else
66- ERB . new ( template , trim_mode : "-" ) . result ( binding )
67- end
68- end
18+ def rails_compatibility ( rails_version : nil , include_rails_gems : nil )
19+ return unless rails_version
6920
70- def gem_header ( _gem )
71- header = Rainbow ( "#{ _gem . name } #{ _gem . version } " ) . bold
72- header << Rainbow ( " (loaded from git)" ) . magenta if _gem . sourced_from_git?
73- header
21+ options = { rails_version : rails_version , include_rails_gems : include_rails_gems }
22+ puts RailsVersionCompatibility . new ( options : options ) . generate
7423 end
7524
7625 def compatible_ruby_version ( rails_version )
0 commit comments