namespace :sync do
  desc "sync repository for myshixun"
  task :myshixun => :environment do
    g = Gitlab.client
    myshixuns = Myshixun.where("repo_name is null")
    myshixuns.find_each do |myshixun|
      begin
        puts myshixun.identifier
        repo_name = g.project(myshixun.gpid).path_with_namespace
        puts repo_name
        myshixun.update_column(:repo_name, repo_name)
      rescue Exception => e
        Rails.logger.error("#{e.message}")
      end
    end
  end


  task :shixun => :environment do
    g = Gitlab.client
    shixuns = Shixun.where("repo_name is null")
    shixuns.find_each do |shixun|
      begin
        puts shixun.identifier
        repo_name = g.project(shixun.gpid).path_with_namespace
        puts repo_name
        shixun.update_column(:repo_name, repo_name)
      rescue Exception => e
        Rails.logger.error("#{e.message}")
      end
    end
  end


  task :check => :environment do
    g = Gitlab.client
    shixuns = Shixun.where("repo_name is null and fork_from is not null")
    shixuns.find_each do |shixun|
      begin
        puts shixun.identifier
        original_shixun = Shixun.find(fork_from)

        gshixun = g.fork(original_shixun.gpid, shixun.owner.try(:gid))

        repo_name = g.project(gshixun.id).path_with_namespace
        puts repo_name
        shixun.update_attributes(:repo_name => repo_name, :gpid => gshixun.id)
      rescue Exception => e
        Rails.logger.error("#{e.message}")
      end
    end
  end
end