@@ -8,69 +8,18 @@ module NextRails
8
8
module BundleReport
9
9
extend self
10
10
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
13
13
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
23
16
end
24
17
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
69
20
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
74
23
end
75
24
76
25
def compatible_ruby_version ( rails_version )
0 commit comments