46 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Ruby
		
	
	
	
namespace :create_mulan_repository do 
 | 
						|
  desc "sync mulan repository from gitee.com"
 | 
						|
  task sync_from_gitee: :environment do 
 | 
						|
    doc = SimpleXlsxReader.open("#{Rails.root}/public/mulan_repo.xlsx")
 | 
						|
    data = doc.sheets.first.rows
 | 
						|
    data.each_with_index do |row, index|
 | 
						|
      next if index == 0
 | 
						|
      begin
 | 
						|
        user = User.find_by(login: row[1])
 | 
						|
        unless user.present?
 | 
						|
          username = row[1]
 | 
						|
          email = "#{row[1]}@forge.com"
 | 
						|
          password = "Mr123456."
 | 
						|
          user = User.new(nickname: row[0], login: username, mail: email, password: password, type: 'User')
 | 
						|
          interactor = Gitea::RegisterInteractor.call({username: username, email: email, password: password})
 | 
						|
          gitea_user = interactor.result
 | 
						|
          result = Gitea::User::GenerateTokenService.call(username, password)
 | 
						|
          user.gitea_token = result['sha1']
 | 
						|
          user.gitea_uid = gitea_user[:body]['id']
 | 
						|
          user.save!
 | 
						|
          UserExtension.create!(user_id: user.id)
 | 
						|
        end
 | 
						|
        project = user.projects.find_by(identifier: row[4])
 | 
						|
        unless project.present?
 | 
						|
          p_category = ProjectCategory.find_or_create_by(name: row[6])
 | 
						|
          p_language = ProjectLanguage.find_or_create_by(name: row[7].split("/")[0])
 | 
						|
          p_license = License.find_by(name: row[8])
 | 
						|
 | 
						|
          mirror_params = {
 | 
						|
            user_id: user.id,
 | 
						|
            name: row[5],
 | 
						|
            description: row[9],
 | 
						|
            repository_name: row[4],
 | 
						|
            project_category_id: p_category.id,
 | 
						|
            project_language_id: p_language.id, 
 | 
						|
            clone_addr: row[10]
 | 
						|
          }
 | 
						|
          Projects::MigrateService.call(user, mirror_params)
 | 
						|
        end
 | 
						|
        puts "sync mulan repository from gitee.com Success repo: #{row[5]} username: #{row[0]}"   
 | 
						|
      rescue Exception => e
 | 
						|
        puts "sync mulan repository from gitee.com Error repo: #{row[5]} username: #{row[0]}"   
 | 
						|
      end
 | 
						|
    end
 | 
						|
  end
 | 
						|
end |