namespace :gitlab do
  desc "GitLab | Update commit count for projects"
  task update_commit_count: :environment do
    projects = Project.where(commit_count: 0)
    puts "#{projects.size} projects need to be updated. This might take a while."
    ask_to_continue unless ENV['force'] == 'yes'

    projects.find_each(batch_size: 100) do |project|
      print "#{project.name_with_namespace.color(:yellow)} ... "

      unless project.repo_exists?
        puts "skipping, because the repo is empty".color(:magenta)
        next
      end

      project.update_commit_count
      puts project.commit_count.to_s.color(:green)
    end
  end
end