diff --git a/lib/tasks/sync_mulan_repo.rake b/lib/tasks/sync_mulan_repo.rake new file mode 100644 index 000000000..e1ab8ddbe --- /dev/null +++ b/lib/tasks/sync_mulan_repo.rake @@ -0,0 +1,46 @@ +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 \ No newline at end of file diff --git a/public/mulan_repo.xlsx b/public/mulan_repo.xlsx new file mode 100644 index 000000000..1c9e45851 Binary files /dev/null and b/public/mulan_repo.xlsx differ