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