# frozen_string_literal: true

namespace :tc do

desc "Setup type checking for the project"
task install: :environment do
  Rails::Tc::CommandRunner.add_development_gem "sorbet"
  Rails::Tc::CommandRunner.add_development_gem "tapioca"
  Rails::Tc::CommandRunner.add_runtime_gem "sorbet-runtime"

  Rails::Tc::CommandRunner.init unless Rails::Tc::TypeChecker.set_up?
  Rails::Tc::CommandRunner.generate
  Rails::Tc::Rubocop.patch_configuration
end

desc "Update rails-specific types"
task generate: :environment do
  Rails::Tc::CommandRunner.generate
end

desc "Check types in the project"
task check: :environment do
  checker = Rails::Tc::TypeChecker.new([], ["*/**/*.rbi"])

  if checker.errors.empty?
    puts "Good job, no errors"
  else
    checker.errors.each do |error|
      puts error.to_s
      puts "\n\n"
    end

    puts "Found #{checker.errors.size} errors"
    Kernel.exit(-1)
  end
end

end