forked from Gitlink/forgeplus
35 lines
1.4 KiB
Ruby
35 lines
1.4 KiB
Ruby
namespace :sync_outer_repo do
|
|
desc "sync outer repository to gitlink"
|
|
task done: :environment do
|
|
file = ENV['file'] || "rcore-os_repo.xlsx"
|
|
user_type = ENV['type'] || "User"
|
|
doc = SimpleXlsxReader.open("#{Rails.root}/public/#{file}")
|
|
data = doc.sheets.first.rows
|
|
data.each_with_index do |row, index|
|
|
next if index == 0
|
|
begin
|
|
user = (user_type == "User" ? User.find_by(login: row[1]) : Owner.find_by(login: row[1]))
|
|
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].to_s.split("/")[0]) if row[7]
|
|
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 outer repository to gitlink Success repo: #{row[5]} username: #{row[0]}"
|
|
rescue Exception => e
|
|
puts "sync outer repository to gitlink Error repo: #{row[5]} username: #{row[0]}, error:#{e}"
|
|
end
|
|
end
|
|
end
|
|
end |