|
|
|
@@ -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 |