Sha256: 85684fdeb2e7a8be2e778428157864e2f428fe0298349529db85d539c88b66e9

Contents?: true

Size: 1.89 KB

Versions: 4

Compression:

Stored size: 1.89 KB

Contents

#!/usr/bin/env ruby
#
# Print a report on our Gemfile
# Why not just use `bundle outdated`? It doesn't give us the information we care about (and it fails).
#
at_exit do
  require "optparse"
  require "next_rails"

  options = {}
  option_parser = OptionParser.new do |opts|
    opts.banner = <<-EOS
      Usage: #{$0} [report-type] [options]

      report-type  There are two report types available: `outdated` and `compatibility`

      Examples:
        #{$0} compatibility --rails-version 5.0
        #{$0} outdated
        #{$0} outdated --json

      ruby_check To find a compatible ruby version for the target rails version

      Examples:
        #{$0} ruby_check --rails-version 7.0.0

    EOS

    opts.separator ""
    opts.separator "Options:"

    opts.on("--rails-version [STRING]", "Rails version to check compatibility against (defaults to 5.0)") do |rails_version|
      options[:rails_version] = rails_version
    end

    opts.on("--include-rails-gems", "Include Rails gems in compatibility report (defaults to false)") do
      options[:include_rails_gems] = true
    end

    opts.on("--json", "Output JSON in outdated report (defaults to false)") do
      options[:format] = 'json'
    end

    opts.on_tail("-h", "--help", "Show this message") do
      puts opts
      exit
    end
  end

  begin
    option_parser.parse!
  rescue OptionParser::ParseError => e
    STDERR.puts e.message.red
    puts option_parser
    exit 1
  end

  report_type = ARGV.first

  case report_type
  when "ruby_check" then NextRails::BundleReport.compatible_ruby_version(rails_version: options.fetch(:rails_version))
  when "outdated" then NextRails::BundleReport.outdated(options.fetch(:format, nil))
  else
    NextRails::BundleReport.compatibility(rails_version: options.fetch(:rails_version, "5.0"), include_rails_gems: options.fetch(:include_rails_gems, false))
  end
end

# Needs to happen first
require "bundler/setup"

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
next_rails-1.3.0 exe/bundle_report
next_rails-1.2.4 exe/bundle_report
next_rails-1.2.3 exe/bundle_report
next_rails-1.2.2 exe/bundle_report