Sha256: 5a2d2bafebefe50a9d8008571aeb070607ab576cfd2cf47658f151ada4b1306d

Contents?: true

Size: 1.02 KB

Versions: 2

Compression:

Stored size: 1.02 KB

Contents

require "rainbow"

class NextRails::BundleReport::RubyVersionCompatibility
  MINIMAL_VERSION = 1.0
  attr_reader :gems, :options

  def initialize(gems: NextRails::GemInfo.all, options: {})
    @gems = gems
    @options = options
  end

  def generate
    return invalid_message unless valid?

    message
  end

  private

  def message
    output = Rainbow("=> Incompatible gems with Ruby #{ruby_version}:").white.bold
    incompatible.each do |gem|
      output += Rainbow("\n#{gem.name} - required Ruby version: #{gem.gem_specification.required_ruby_version}").magenta
    end
    output += Rainbow("\n\n#{incompatible.length} incompatible #{incompatible.one? ? 'gem' : 'gems' } with Ruby #{ruby_version}").red
    output
  end

  def incompatible
    gems.reject { |gem| gem.compatible_with_ruby?(ruby_version) }
  end

  def ruby_version
    options[:ruby_version].to_f
  end

  def invalid_message
    Rainbow("=> Invalid Ruby version: #{options[:ruby_version]}.").red.bold
  end

  def valid?
    ruby_version > MINIMAL_VERSION
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
next_rails-1.4.2 lib/next_rails/bundle_report/ruby_version_compatibility.rb
next_rails-1.4.1 lib/next_rails/bundle_report/ruby_version_compatibility.rb